Eine Methode zum Abschuss einer Zombie-VM (eine VM die sich mit Mitteln des vSphere Clients nicht abschalten lässt).
Auf der ESX Konsole:
Zuerst der Versuch auf die nette Tour:
vmware-cmd /vmfs/volumes/<Volume>/<VMOrdner>/<VMName>.vmx stop
Die Chancen, daß das nicht zum Ziel führt sind erhöht. Schließlich funktionierte es über die GUI schon nicht. Also nochmal, jetzt aber mit etwas Nachdruck:
vmware-cmd /vmfs/volumes/<Volume>/<VMOrdner>/<VMName>.vmx stop hard
Wenn das auch nicht hilft, dann muss die Kettensäge ran. Wir haben es mit einem harten Zombie zu tun. 😉 Zunächst brauchen wir die PID der VM. Die bekommen wir mit:
ps auxfww | grep <vmname>
Die gesuchte PID (process ID) befindet sich rechts neben “root”.
kill -9 <PID>
vSphereCLI
Diese Methode ist auch bei ESXi einsetzbar.
esxcli --server <Host> --username root --password "<pass>" vms vm list
Die World ID der VM notieren
esxcli --server <Host> vms vm kill --world-id <ID> --type <soft|hard|force>
Die Modi soft, hard und force sind verschiedene Härtegrade der Abschaltung.
soft: löst einen normalen Shutdown der VM aus. Enstpricht dem “kill <PID>” auf der ESX Konsole.
hard: die etwas härte Methode. Schaltet die VM hart aus. Entspricht dem “kill -9 <PID>” im obigen Beispiel auf der Konsole.
force: wenn nichts mehr hilft. Abschuss ohne Rüchsicht auf Verluste. Sollte nur angewandt werden, wenn es mit soft oder hard nicht funktionierte.
powerCLI
PowerCLI erinnert in vielen Punkten an eine bash und ist daher auch sehr gut zur Progrmmierung geeignet. Für einige Aufgaben gibt es keinen direkten Befehl, aber diese können z.B. durch Aufruf der esxcli Kommandos ausgeführt werden.
Für die Einbindung des ESXCli Cmdlets benötigen wir PowerCLI 4.1.1
Die PowerCLI Kommandos fand ich im Blogbeitrag von Boerlowie. Herzlichen Dank.
Connect-VIServer -Server <Host> -Credential $(Get-Credential -Credential root)
$esxcli = Get-EsxCli -Server <Host>
$esxcli.vms.vm.list() | Format-Table -Property DisplayName, WorldID
Die WorldID der Zombie-VM notieren für das folgende Kommando. Auch hier gibt es wieder die drei Modi soft, hard und force (vgl. oben).
$esxcli.vms.vm.kill("soft", <WorldID>)