Бывает такая ситуация, когда в VMware vSphere Client виртуальная машина на ESXi не подчиняется командам Shut Down / Power Off и остается "зависшей", чтобы вы с ней не делали. Ниже описаны те же три способа "убить" непокорную виртуальную машину, но только уже на VMware ESXi.
1. Поскольку сервисной консоли в VMware ESXi формально нет, мы можем использовать специальное средство удаленного управления VMware vSphere CLI, которое позволяет получить доступ к интерфейсам ESXi из командной строки. Его можно установить как фреймворк для Windows и Linux и управлять ESXi через сценарии, а можно использовать уже готовую виртуальную машину с этим интерфейсом, которая называется vSphere vMA. Раньше этот продукт назывался VIMA.
После того как поставите vMA, наберите следующую команду для вывода списка виртуальных машин на хосте VMware ESXi с путями к файлам конфигурации:
vmware-cmd.pl -H <ESXi host name> -l
Затем наберите следующую команду в консоли vMA для вывода состояния виртуальной машины с указанным путем к vmx-файлу на хосте ESXi:
vmware-cmd.pl -H <ESXi host name> <VM config file path & name> getstate
Далее наберите следующую команду, чтобы остановить виртуальную машину:
vmware-cmd.pl -H <ESXi host name> <VM config file path & name> stop hard
Проверяем статус виртуальной машины предыдущей командой, и, если не помогло, переходим к следующему способу.
2. На самом деле, как многие знают, подобие сервисной консоли на BusyBox в VMware ESXi все-таки есть. Поэтому входим в нее вот таким способом:
- В консоли хоста VMware ESXi нажмите ALT-F1
- Напечатайте unsupported (текста видно не будет), вы войдете в режим Tech Support Mode и появится запрос пароля. Введите пароль пользователя root
- Появится приглашение ко вводу ~#.
Теперь выполняем следующую команду:
vm-support -x
для получения списка виртуальных машин и их идентификаторов (VMID). После чего выключаем виртуальную машину с заданным идентификатором следующей командой (будет создан дамп с отладочной информацией в своп-разделе ESXi, с помощью параметра -w <vmfs volume path>
можно задать VMFS-том и папку, куда будет положен дамп):
vm-support -X <VMID>
Затем снова проверяем состояние виртуальной машины командой: vm-support -x
Для выхода из режима обслуживания напечатайте "exit" и нажмите Alt-F2.
3. Если и это не помогло, тогда надо напрямую пытаться убить процесс, который реализует виртуальную машину на ESXi. Для этого снова заходим в "сервисную консоль" как в предыдущем пункте и вводим команду:
ps -g | grep <virtualmachinename>
далее ищем идентификатор группы процесса (process group ID, PGID), который находится в четвертой колонке результатов вывода. Далее убиваем процессы с виртуальной машиной командой:
kill -9 <PGID>
опять-таки, проверяем состояние ВМ, которая должна быть уже выключена, командой vm-support -X
.