Понякога се натъквам на факта, че определена виртуална машина на 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 с посочения идентификатор:
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, екранът ще изглежда така.