Categories: VMware

Остановить зависшую виртуальную машину в VMware ESXi

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

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

  • The attempted operation cannot be performed in the current state ;
  • Another task is already in progress ;
  • The virtual machine might be performing concurrent operations. Actions: Complete the concurrent operation and retry the power-off operation. The virtual machine is in an invalid state .

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

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

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

  • Soft – самый безопасный способ завершить VMX процесс (похож на kill -SIGTERM );
  • Hard – немедленное завершение процесса ВМ ( kill -9 );
  • Force – используется в последнюю очередь, если другие опции не помогли.
Убедитесь, что для ВМ нет активных заданий по созданию снапшотов, бэкапов, и подобных операций, а у ВМ нет статуса Virtual Machine disks consolidation is needed . Иначе вы можете сломать свою ВМ и ее придется восставливать из бэкапа.

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

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

ВМ должна выключиться.

Можно использовать следующий однострочник для завершения ВМ:

$ esxcli vm process kill -t=soft -w=`esxcli vm process list | grep -A2 "hq-rds01" | grep World | awk '{print $3}'`

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

get-vm 'web2' | select name,PowerStates

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

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

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

В SSH сессии введите команду esxtop , затем нажмите c для отображения ресурсов CPU и shift + V , чтобы отображать только процессы вириальных машин

Затем нажмите f (выбрать отображаемы поля), c (отобразить поле LWID- Leader World Id) и нажмите Enter .

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

Последний способ жёсткого выключения виртуальной машины – воспользоваться утилитой kill . Такой способ позволит остановить не только ВМ, но и все дочерние процессы.

Получите ID родительского процесса ВМ:

ps | grep "hq-rds01"

Завершите процесс ВМ:

kill -9 527888

После такого “hard reset”, установленная ОС запустится в режиме восстановления (в случае гостевой Windows, запустится среда Windows Recovery Environment ).

Если и это не помогло, попробуйте перезапустить управляющие службы hostd и vpxa на хосте ESXi:

$ /etc/init.d/hostd restart
$ /etc/init.d/vpxa restart

admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

3 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

3 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

3 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

3 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

3 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

3 месяца ago