Někdy narazím na skutečnost, že určitý virtuální stroj na hostiteli VMWare ESXi zamrzne a nelze jej žádným způsobem vypnout nebo restartovat z webového rozhraní klienta vSphere. Restartování celého serveru ESXi z jediného virtuálního počítače není zcela vhodné (zejména pokud máte pouze jednoho hostitele ESXi nebo zbývající servery v klastru DRS nevytahují dodatečné zatížení ve formě virtuálních počítačů z restartovacího serveru). Podívejme se na hlavní způsoby, jak vynutit zastavení zmrazeného virtuálního počítače ve VMWare ESXi.
Pokud proces virtuálního počítače na serveru ESXi zamrzne, přestane reagovat na příkazy Reset / Power Off a při každé akci udělá jednu z chyb:
Pokus o provedení nelze provést v aktuálním stavu
;Další úkol již probíhá
;Virtuální stroj může provádět souběžné operace. Akce: Dokončete souběžnou operaci a zopakujte operaci vypnutí. Virtuální stroj je v neplatném stavu
.
V takových případech můžete ručně zastavit proces virtuálního počítače na hostiteli ESXi z příkazového řádku ESXi Shell nebo PowerCLI..
Nejprve určete, na kterém hostiteli ESXi je spuštěn virtuální počítač. Chcete-li to provést, najděte VM v klientském rozhraní vSphere. Název hostitele, na kterém běží, je uveden na kartě Shrnutí v sekci Související objekt -> Hostitel.
Klikněte na název hostitele ESXi. Musíte k tomu povolit přístup přes SSH. Přejít na Konfigurovat -> Služby -> Ssh -> Začněte.
Nyní se můžete připojit k tomuto hostiteli ESXi pomocí SSH pomocí putty klienta.
Seznam virtuálních počítačů běžících na hostiteli ESXi:
Seznam procesů esxcli vm
Zkopírujte ID požadovaného virtuálního počítače (World ID).
Chcete-li ukončit proces zavěšeného virtuálního počítače na hostiteli ESXi, použijte následující příkaz:
esxcli vm process kill --type = [soft, hard, force] --world-id = WorldNumber
Jak vidíte, existují tři typy ukončení procesu VM:
- Měkké - nejbezpečnější způsob, jak ukončit proces VMX (podobně jako kill -SIGTERM);
- Těžké - okamžité ukončení procesu VM (kill -9);
- Síla - nejtěžší režim ukončení procesu by měl být použit jako poslední, pokud nic jiného nepomůže.
Zkusme jemně zastavit VM se zadaným ID:
esxcli vm proces kill --type = soft -w = 25089429
VM by se měl vypnout.
Zmrazený virtuální počítač můžete zastavit pomocí PowerCLI (to je výhodné, protože při připojování k vCenter nemusíte hledat hostitele, na kterém běží VM a povolit přístup SSH). Zkontrolujte, zda je spuštěn VM:
get-vm „web2“ | vyberte jméno, PowerStates
Vynutit zastavení procesu VM příkazem:
stop-vm - zabijte „web2“ - potvrďte: $ false
Pomocí obslužného programu můžete také zastavit zmrazený virtuální počítač ESXTOP.
V relaci SSH zadejte příkaz esxtop, pak klikněte na „c“Chcete-li zobrazit prostředky procesoru a shift + V, k zobrazení pouze procesů virového stroje
Poté klikněte na „f“(Vyberte zobrazená pole),„c“(Zobrazte pole LWID-Leader World Id) a klikněte na Vstoupit.
Ve sloupci Název najděte virtuální počítač, který chcete zastavit, a určete jeho LWID podle odpovídajícího sloupce.
Poté zbývá stisknout tlačítko "k"(kill) a vytočte identifikátor LWID virtuálního počítače, který chcete vynutit.
Poslední způsob, jak virtuální počítač vypnout, je použití nástroje zabít. Tato metoda zastaví nejen VM, ale také všechny podřízené procesy.
Získejte ID nadřazeného procesu VM:
ps | grep "web2"
Dokončete proces:
zabít -9 24288474
Po takovém „tvrdém resetu“ se nainstalovaný operační systém spustí v režimu obnovy. V případě hostujícího systému Windows bude obrazovka vypadat takto.