VM mit invalid status wiederbeleben

VirtualBox ist eine fantastische Software um virtuelle Maschinen zu installieren und zu nutzen. Wer einmal erlebt hat, wie einfach es ist eine Testumgebung für ein neues Projekt aufzusetzen, will diesen Luxus in der Zukunft nicht wieder missen. Doch manchmal gibt es Situationen in denen einen VirtualBox zur Verzweiflung bringt. Da beenden sich virtuelle Maschinen ohne erkennbaren Grund, ein RAID-Verbund ist plötzlich nicht mehr synchron oder eine virtuelle Maschine hat plötzlich den Status “stopped” oder “stopping” und lässt sich einfach nicht mehr wiederbeleben.

Dieser Artikel erklärt, wie man mit dem letzten Problem unter Linux umgeht. Wenn der Status einer virtuelle Maschine von VirtualBox nicht mehr geändert werden kann ist guter Rat teuer. Hier hilft die folgende Lösung um die Maschine zuverlässig zu beenden um Sie dann wiederbeleben zu können.

Ausgangslage

Es ist VirtualBox und phpVirtualBox auf einem Ubuntu Server 14.04.02 LTS installiert. Es laufen mehrere virtuelle Maschinen und irgendwann stellt man fest, dass eine der Maschinen (iS-TEST in unserem Beispiel) nicht mehr erreichbar ist bzw. den Dienst quittiert hat. Virtualbox (egal ob die Desktopversion oder phpVirtualBox) zeigen für diese virtuelle Maschine den Status “stopping” an. Die Vorschau zeigt ein schwarzes Bild bzw. die Konsole von phpVirtualBox reagiert nicht mehr. Die virtuelle Maschine lässt sich nicht mehr ausschalten und auch nicht starten. Sämtliche Aktionsmöglichkeiten sind ausgegraut.

Was ist zu tun um die VM wiederzubeleben?

In diesem Fall hilft nur der Weg über das Terminal bzw. per SSH über die Kommandozeile. Mit den folgenden Befehlen kann die virtuelle Maschine zuverlässig beendet werden, so dass diese danach wieder gestartet werden kann. Ziel ist somit ein Neustart der virtuellen Maschine, die den Status “stopping” hat.

Wir gehen im folgenden Beispiel davon aus, dass wir bereits per SSH verbunden sind und der User unter der VirtualBox läuft auch vbox heißt. Der folgende Befehl liefert sämtliche virtuelle Maschinen:

$ VBoxManage list vms

"iS-DEV" {e943b696-7493-42bf-8fa8-96c4d2786058}
"iS-TEST" {f6c26f9f-4b55-49c7-aed6-784caea3f898}

Natürlich kann man versuchen den Status der virtuellen Maschinen auch nochmal über die Konsole zu verändern, dies wird aber wahrscheinlich keinen Erfolg bringen.

$ VBoxManage controlvm iS-TEST resume

VBoxManage: error: Cannot resume the machine as it is not paused (machine state: Stopping)
VBoxManage: error: Details: code VBOX_E_INVALID_VM_STATE (0x80bb0002), component Console, interface IConsole, callee nsISupports
VBoxManage: error: Context: "Resume()" at line 120 of file VBoxManageControlVM.cpp

Deshalb kümmern wir uns nun darum die virtuelle Maschine “iS-TEST” auszuschalten. Dies machen wir indem wir die Prozess-ID ermitteln und diesen Prozess dann beenden.

$ ps -ef

vbox     30743  1149  1 Sep15 ?        00:31:10 /usr/lib/virtualbox/VBoxHeadless --comment iS-TEST --startvm f6c26f9f-4b55-49c7-

Die Prozess-ID ist somit die 30743 und kann mit dem kill Befehl beendet werden.

$ kill 30743

Danach hat die virtuelle Maschinen den Status “aborted” und kann wie gewohnt neu gestartet werden.

geschrieben von

Christoph Dyllick-Brenzinger

Christoph ist Gründer und Chefentwickler von datamate. Er ist ein absoluter Linux-Fan und hat schon früh seine Leidenschaft für Technik und Programmierung entdeckt. Seine langjährige Erfahrung als Unternehmensberater spürt man regelmäßig, wenn er nach optimalen Lösungen für die Kunden sucht. Wenn er nicht gerade den Tennisplatz unsicher macht oder bei Overwatch sein Liga-Ranking verbessert, verbringt Christoph seine Freizeit mit seiner Frau und seinen drei Kindern.