Перезапуск зависшей виртуальной машины в ESXi 6.5

Обновлено 15.07.2019

Vmware logoДобрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами разобрали, вопрос как изменить формат файла в операционных системах Windows. Сегодня я хочу вам рассказать еще об одной интересной и уже порядком часто встречающейся проблеме, как зависание виртуальной машины Vmware ESXI при попытке ее выключить или перезагрузить, так же может быть ошибка "Another task is already in progress". Давайте разбираться, как можно выкрутиться из такой ситуации.

Описание проблемы

Как я и писал выше есть хост с установленным гипервизором Vmware ESXI 6.5. В какой-то момент система мониторинга присылает сообщение, о том, что одна из виртуальных машин не доступна. Подключившись к vCenter серверу виртуальный сервер имел статус "Power On", "Web Console" так же не отвечала. Я попытался сделать ей принудительное завершение (Power Off), но эффекта это не дало, у меня выскочила ошибка "Cannot power off"

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. Virtual machines can enter an invalid state for many reasons.

The virtual machine might be performing concurrent operations

При попытке мигрировать виртуальную машину вы может получить ошибку:

Failed to migrate the virtual machine for reasons described it the event message

Failed to migrate the virtual machine for reasons described it the event message

Так же вы можете увидеть ошибку при попытке, выключить или перезапустить виртуалку:

Another task is already in progress

Another task is already in progress

Во всех случаях вам скажут, что данная виртуальная машина имеет некий процесс, который в данный момент не дает выполнить ваши повторные действия. Так же данная виртуалка у меня была членом RDS фермы, при попытке перевода его в режим стока (Drain-Mode) я получил ошибку "Не удалось изменить состояние подключения для сервера".

Как перезапустить зависшую виртуальную машину

Сразу хочу отметить, что если в графическом интерфейсе у вас не выходит, что либо сделать, то у вас остается только командная строка ssh. Включаем на ESXI хосте SSH службу. Далее подключаемся через Putty или MremoteNG. Я подключаюсь через MremoteNG. Первое, что вам необходимо сделать, это как посмотреть список активных процессов, все как в Windows. Для этого есть команда:

В моем примере, я вижу свою виртуальную машину TERM6. Если системные процессы мозолят вам глаза, то вы можете одновременно нажать SHIFT+V, что оставит отображение только виртуальных машин.

Перезапуск зависшей виртуальной машины ESXI

Теперь нам нужно вычислить LWID - Leader World Id, завершив который вы завершите работу нужной виртуалки. ПО умолчанию LWID не отображается, чтобы его включить нажмите клавишу F. У вас откроется меню, где можно добавлять или скрывать поля. Видим, что если нажать клавишу "C", то у вас будет добавлен LWID- Leader World Id. Нажимаем "C" и "Enter".

LWID - Leader World Id

Теперь зная LWID, нажмите клавишу "K", она вызовет меню "World to kill (WID)", данная операция поможет принудительно завершить процесс LWID. Вбиваем наш LWID и нажимаем "Enter".

World to kill (WID)

Тут у вас два варианта, чудо произошло (80% вероятности) и чудо не произошло, часто бывает в случаях с ошибкой "Another task is already in progress"

esxi cli World to kill (WID)

Кстати World ID можно вычисли и просто введя команду:

esxcli vm process list

esxcli vm process list

Там вы сможете увидеть World ID, после чего его можно убить командой:

esxcli vm process kill --type=hard --world-id=имя id

В моем случае чудо произошло, виртуалка перешла в состояние Power OFF, я это вижу в Power-CLI.

запуск зависшей виртуальной машины

Если принудительное завершение процесса вам не помогло, то делаем вот что, по возможности мигрируйте все остальные виртуальные машины с данного хоста, у вас из-за ошибки останется только сбойная. Все в том же SSH. введите:

ps | grep vmx | grep имя виртуалки

Cannot power off

В итоге у вас будет выведен список, где первая колонка это PID процесса, вторая PID родительского процесса, убиваем его для вашей виртуальной машины.

После чего пишем kill PID-родительского процесса. Если не помогло, то пробуем выполнить вот, что (по возможности перевезите другие сервера с данного хоста на другие хосты)

services.sh restart

В результате действий хост стал работать нормально, единственное может быть ситуация, что виртуалку придется удалить из inventory и добавить заново. Если и это не помогло, то попробуйте выполнить:

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

Висит задача create virtual machine snapshot

Еще в своей практике встречал ситуации, что из-за незаконченного задания у меня не выполнялось резервное копирование, задание висело со статусом "create virtual machine snapshot"

create virtual machine snapshot

Так же вычисляем родительский PID подключившись по SSH, после его завершения, вы увидите сообщение, которое покажет, что с виртуальной машиной теперь можно взаимодействовать.

The attempted operation cannot be performed in the current state (Powered off)

зависла виртуальная машина

На этом у меня все, мы с вами научились восстанавливать работу зависшей виртуальной машины на гипервизоре ESXI. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org,

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *