База знаний: Общий FAQ
Перазгрузка / остановка зависшей виртуальной машины на VMware ESXi
Автор Алексей | HiTex.BY на 04 ноября 2024 13:35

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

Когда процесс виртуальной машины на сервере ESXi зависает, он перестает отвечать на запросы. Reset/ Power Off команды, и любое действие приводит к ошибке, например:

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

Вы можете вручную остановить зависший процесс виртуальной машины на хосте ESXi из локальной оболочки ESXi или с помощью команд PowerCLI без необходимости перезапускать сервер. Обратите внимание, что потеря данных в гостевой операционной системе может произойти, если вы принудительно выключите виртуальную машину (это похоже на случай, когда шнур питания отключен от физического компьютера).

Прежде чем принудительно завершить работу виртуальной машины, убедитесь, что проблема не вызвана тем, что другой хост ESXi блокирует свои файлы в хранилище данных .
  1. Сначала определите хост ESXi, на котором работает зависшая виртуальная машина;
  2. Откройте клиент vSphere и найдите виртуальную машину. Имя хоста ESXi, на котором работает виртуальная машина, указывается на вкладке «Сводка» в разделе «Связанный объект» -> «Хост» ; Клиент VMware vsphere получает хост виртуальной машины
  3. Включите SSH на этом хосте ESXi;
  4. Подключитесь к ESXi с помощью SSH-клиента (можно использовать встроенный в Windows клиент OpenSSH);
  5. Список работающих виртуальных машин: $ esxcli vm process list
    список процессов виртуальной машины esxcli
  6. Скопируйте идентификатор нужной вам виртуальной машины (World ID);
  7. Используйте следующую команду, чтобы принудительно завершить зависший процесс виртуальной машины в гипервизоре ESXi:
    $ esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber

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

    • Мягкое — самый безопасный способ завершить процесс VMX (аналогично kill -SIGTERM);
  • Hard – немедленно остановить процесс ВМ ( kill -9);
  • Принудительное — используется в крайнем случае, если другие варианты не помогают.
Убедитесь, что для виртуальной машины нет активных снимков, резервного копирования или других заданий, а также что виртуальная машина не имеет статуса «Необходима консолидация дисков виртуальной машины» . В противном случае вы можете сломать свою ВМ и вам придется восстанавливать ее из резервной копии.

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

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

уничтожение процесса esxcli vm

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

Вы можете выключить зависшую виртуальную машину с помощью PowerShell. Это может быть полезно, поскольку при подключении к vCenter нет необходимости находить хост, на котором работает ВМ, и включать на нем службу SSH. Подключитесь к vCenter с помощью PowerCLI и проверьте, работает ли виртуальная машина:

Connect-VIServer <vCenter_or_ESXi_FQDN>
Get-VM “web1" | select name,PowerStates

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

Stop-VM -kill "web1" -confirm:$false

PowerCLI стоп-вм-kill

Утилита ESXTOP также может использоваться для остановки не отвечающей виртуальной машины VMWare.

Запустите esxtop в сеансе SSH, затем нажмите c для отображения ресурсов процессора и SHIFT+V для просмотра только процессов виртуальной машины.

esxtop

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

esxtop получить lwid виртуальной машины

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

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

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

ps | grep "web2"

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

kill -9 24288474

esxi убить процесс виртуальной машины с помощью ps

(0 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)