Поиск по сайту:

VMware ESXi: как отключить не отвечающую (зависшую) виртуальную машину


Иногда я вижу, что некая виртуальная машина на хосте VMWare ESXi зависает и ее невозможно ни выключить, ни перезапустить из консоли vSphere никакими способами. Перезагружать весь ESXi-хост из-за единственной виртуальной машины не совсем целесообразно (особенно, если у вас только один ESXi-хост или остальные серверы в кластере DRS не справляются с дополнительной нагрузкой виртуальных машин от подключаемого сервера). перезапустился). Рассмотрим основные способы принудительного завершения неотвечающей (зависшей) виртуальной машины на хосте VMWare ESXi.

Если процесс виртуальной машины на сервере ESXi зависает, он перестает отвечать на vCenter.

Reset

/

Power Off

команды и возвращает одну из следующих ошибок при любом действии:

  • Другая задача уже выполняется;

  • Возможно, виртуальная машина выполняет параллельные операции. Действия: Завершите параллельную операцию и повторите операцию выключения; Виртуальная машина находится в недопустимом состоянии;

  • Попытка операции не может быть выполнена в текущем состоянии.

В таких случаях вы можете вручную завершить процесс виртуальной машины на хосте ESXi из командной строки ESXi Shell или PowerCLI.

Для начала необходимо определить, на каком хосте ESXi работает зависшая виртуальная машина. Для этого найдите виртуальную машину в интерфейсе клиента vSphere. Имя хоста ESXi, на котором работает виртуальная машина, указывается на вкладке Сводка в разделе Связанный объект -> Хост.

Далее на вашем хосте ESXi должен быть включен протокол подключения SSH. Вы можете сделать это из интерфейса vSphere. Щелкните имя хоста ESXi, выберите Настроить -> Службы -> SSH -> Пуск.

Теперь вы можете подключиться к этому хосту через SSH с помощью клиента putty. Перечислите виртуальные машины, работающие на хосте ESXi:

esxcli vm process list

Скопируйте «World ID» проблемной виртуальной машины.

Чтобы завершить процесс зависшей виртуальной машины на хосте ESXi, используйте следующую команду:

esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber

Существует три типа уничтожения процесса виртуальной машины:

  • Мягкое - самый безопасный способ завершить процесс VMX (аналогично уничтожению -SIGTERM);

  • Hard - немедленное завершение процесса ВМ (kill -9);

  • Принудительно - самый сложный режим остановки процесса ВМ. Следует использовать в последнюю очередь, если больше ничего не помогает.

Убедитесь, что для ВМ нет активных снимков, резервных копий и подобных задач, а также ВМ не в состоянии «Необходима консолидация дисков виртуальной машины». В противном случае вы можете сломать свою ВМ и вам придется восстанавливать ее из резервной копии.

Попробуем мягко остановить ВМ с указанным идентификатором:

esxcli vm process kill --type=soft -w=20598249

Виртуальная машина должна быть выключена.

Остановить зависшую виртуальную машину можно с помощью PowerCLI (это удобно, поскольку при подключении к vCenter не нужно находить имя хоста, на котором запущена ВМ, и включать на ней SSH-оболочку). Убедитесь, что виртуальная машина работает:

get-vm “web1" | select name,PowerStates

Принудительно остановите процесс ВМ командой:

stop-vm -kill "web1" -confirm:$false

Кроме того, вы можете остановить не отвечающую виртуальную машину VMWare с помощью утилиты ESXTOP.

Откройте сеанс SSH, введите esxtop, нажмите «c», чтобы отобразить ресурсы ЦП, а затем SHIFT+V, чтобы отобразить только процессы виртуальной машины.

Затем нажмите «f» (чтобы выбрать поля для отображения), «c» (чтобы отобразить мировой идентификатор LWID-лидера), а затем нажмите ENTER . .

В столбце «Имя» найдите виртуальную машину, которую необходимо остановить, и запишите ее номер LWID в соответствующем столбце.

Теперь вам нужно нажать «k» (уничтожить) и ввести номер LWID виртуальной машины, которую вы хотите принудительно завершить.

И последний способ «жесткого» отключения ВМ — использовать инструмент kill. Этот метод остановит не только виртуальную машину, но и все дочерние процессы.

Получите идентификатор родительского процесса виртуальной машины:

ps | grep "web2"

Убейте процесс виртуальной машины:

kill -9 24288474

После такого «жесткого сброса» установленная ОС загрузится в режиме Recovery. В случае гостевой Windows экран будет выглядеть так.

Статьи по данной тематике