VMWare ESXi Рестартиране на висяща виртуална машина

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

Ако процесът на виртуална машина на сървъра ESXi замръзне, той спира да реагира на командите за нулиране / изключване на захранването и дава една от грешките при всяко действие:

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

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

Първо определете на кой ESXi хост висящата виртуална машина работи. За целта намерете VM в клиентския интерфейс vSphere. Името на хоста, на което се изпълнява, е посочено в раздела Summary в секцията Свързан обект -> домакин.

Кликнете върху името на хоста ESXi. Трябва да разрешите достъп до него чрез SSH. Отидете на Конфигуриране -> Услуги -> SSH -> начало.

Сега можете да се свържете с този ESXi хост чрез SSH, като използвате клиента за замазка.

Списък на виртуалните машини, работещи на хоста на ESXi:

esxcli vm списък процес

Копирайте идентификационния номер на желаната виртуална машина (World ID).

За да прекратите процеса на окачена виртуална машина на хоста на ESXi, използвайте следната команда:

esxcli vm процес убий --type = [мек, твърд, сила] --world-id = WorldNumber

Както можете да видите, има три типа прекратяване на VM процес:

  • мек - най-сигурният начин за прекратяване на VMX процеса (подобен на kill -SIGTERM);
  • трудно - незабавно прекратяване на VM процеса (убий -9);
  • сила - най-тежкият режим на прекратяване на процеса трябва да се използва последен, ако нищо друго не помага.
Уверете се, че VM не разполагат с активни задачи за създаване на моментни снимки, архивиране и подобни операции, а VM не разполагат със статут на виртуална машина. В противен случай можете да счупите вашия VM и той ще трябва да бъде възстановен от архивиране.

Нека се опитаме внимателно да спрем VM с посочения идентификатор:

esxcli vm процес убивам --type = soft -w = 25089429

VM трябва да се изключи.

Можете да спрете замразена виртуална машина с помощта на PowerCLI (това е удобно, тъй като при свързване към vCenter не е необходимо да търсите хоста, на който работи VM и да активирате SSH достъп). Проверете дали VM работи:

get-vm “web2” | изберете име, PowerStates

Принудително спиране на VM процеса с командата:

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

Можете също да спрете замразена виртуална машина, като използвате помощната програма ESXTOP.

В SSH сесията въведете командата esxtop, след това кликнете върху „в”За показване на CPU ресурси и изместване + V, за показване само на процесите на вирусни машини

След това кликнете върху „е”(Изберете показаните полета),“в”(Показва полето LWID - Leader World Id) и щракнете Въведете.

В колоната Име намерете виртуалната машина, която искате да спрете, и определете нейната LWID от съответната колона.

След това остава да натиснете бутона "к"(убийте) и наберете LWID идентификатора на виртуалната машина, която искате да принудите да изключите.

Последният начин да изключите трудно виртуалната машина е да използвате помощната програма убийство. Този метод ще спре не само VM, но и всички детски процеси.

Вземете идентификационния номер на родителския процес на VM:

ps | grep "web2"

Завършете процеса:

убий -9 24288474

След такова „твърдо нулиране“, инсталираната ОС ще започне в режим на възстановяване. В случай на гост Windows, екранът ще изглежда така.