Ich versuche eine Lösung zu finden, um alle Gast-VMs, die unter VirtualBox Windows ausgeführt werden, ordnungsgemäß herunterzufahren, wenn der Host-Computer heruntergefahren oder neu gestartet wird.
Es scheint, dass die sicherste Option darin besteht, den Befehl "save state" auszulösen, wenn der Host heruntergefahren wird. Es ist jedoch nicht klar, ob der Host lange genug warten wird, bis die VMs den Speichervorgang abgeschlossen und ausgeschaltet haben.
Hat jemand eine robuste Lösung für dieses (scheinbar grundlegende) Problem?
windows
virtualbox
virtual-machine
virtualization
shutdown
Matt Jenkins
quelle
quelle
Antworten:
Ich hatte ein ähnliches Problem und löste es, indem ich VirtualBox als Dienst ausführte:
http://vboxvmservice.sourceforge.net/
Mit VBoxVMService können Sie festlegen, wie der Computer heruntergefahren (Status speichern, ausschalten) und gestartet werden soll. Da es als Dienst ausgeführt wird, wartet Windows während des Herunterfahrens des Systems automatisch darauf, dass es heruntergefahren wird.
quelle
Leider scheint dies für VMs, die über die VirtualBox-GUI gestartet wurden, nicht möglich zu sein. Auch wenn die GUI das Host-Shutdown-Ereignis abfängt und reagiert, wird der VirtualBox-Dienst beendet: https://forums.virtualbox.org/viewtopic.php?p=278668#p278668
Wenn Sie keine grafische Konsole benötigen, sind VBoxHeadlessTray oder VBoxVMService möglicherweise die richtige Wahl. Beide unterstützen das automatische Speichern und Fortsetzen beim Herunterfahren und Neustarten des Windows-Hosts.
VirtualBox 5.0 führt einen Startmodus mit abnehmbarer Benutzeroberfläche ein . Dieser Modus startet eine Headless-VM mit einem separaten UI-Prozess. Die Grafikleistung leidet jedoch, und die 3D-Beschleunigung wird noch nicht unterstützt. Aber möglicherweise kann dies in Zukunft mit VBoxHeadlessTray kombiniert werden (VBoxHeadlessTray unterstützt noch nicht 5.0.) Links zum VBoxHeadlessTray-GitHub-Repository und zur entsprechenden GitHub-Pull-Anfrage zum Hinzufügen von VirtualBox 5-Unterstützung .
Bearbeiten: VBoxVmService unterstützt den neuen abnehmbaren Modus ab Version 5.0 ebenfalls nicht. Bisher nur kopflos . Dafür habe ich eine Feature-Anfrage hinzugefügt .
quelle
Ich habe 3 Batch-Skripte, die ich anstelle der Power-Buttons des Startmenüs verwende.
do_shutdown.bat (Herunterfahren des PCs mit einer Wartezeit von 10 Sekunden, um dem VM nicht 10 Sekunden Zeit zum Speichern zu geben, sondern um es mir zu ermöglichen, das Herunterfahren innerhalb von 10 Sekunden abzubrechen. Der Countdown beginnt, nachdem die VMs heruntergefahren wurden.)
do_reboot.bat (startet sofort nach dem Herunterfahren des virtuellen Computers neu)
do_cancel.bat (Ermöglicht mir, das Herunterfahren des PCs innerhalb der Wartezeit von 10 Sekunden abzubrechen. Anschließend werden die VMs neu gestartet, da sie mit do_shutdown.bat heruntergefahren wurden.)
Anstelle von können
savestate
Sie auch eines der folgenden verwendenquelle
Tut mir leid, dass ich zu spät zur Party komme. Es gibt eine genaue Antwort darauf, obwohl es einige Kommandozeilen-FOO erfordert. Weitere Informationen finden Sie in diesem Thread-Beitrag: https://forums.virtualbox.org/viewtopic.php?f=6&t=53684#p285540
Der gesuchte Befehl lautet:
"C: \ Programme \ Oracle \ VirtualBox \ VBoxManage.exe" setextradata "VM NAME" GUI / DefaultCloseAction Shutdown
Das verwende ich auf mehreren VMs, schließe das Fenster und es startet automatisch ein sicheres Herunterfahren. Fahren Sie Windows herunter und warten Sie beim Versuch, alles zu schließen, bis diese Prozesse abgeschlossen sind.
quelle
Ich hatte eine ähnliche Frage und fand diese Seite. Ich möchte VirtualBox nicht als Dienst ausführen, da ich viele VMs zum Testen habe und normalerweise andere zur Ausführung in der VirtualBox-Benutzeroberfläche auswähle. Wenn ich meinen Computer herunterfahre, ist es ärgerlich, den Status jeder VM manuell zu speichern. Die Verwendung von Skripten zum Speichern aller laufenden VMs scheint in diesem Fall eine praktische Lösung zu sein. Um die Antwort von Daniel F zu verallgemeinern, habe ich diese Skripte geschrieben, die automatisch den Status aller laufenden VMs speichern, ohne sie explizit zu benennen.
saveRunningVMs.bat für Windows:
saveRunningVMs.sh für Linux:
quelle
Ich habe ein Python-Skript erstellt, mit dem alle ausgeführten VirtualBox-VMs angehalten werden. Anschließend habe ich das System so eingerichtet, dass das Skript beim Abmelden als geplante Aufgabe ausgeführt wird.
Ich weiß nicht, wie zuverlässig diese Methode genau ist. Wie andere angemerkt haben, gibt es Einschränkungen, wie lange das System auf den Abschluss einer Winlogon 7002-Task warten soll. Aber ich persönlich hatte kein Problem damit, nutzbare Speicherzustände zu liefern, selbst wenn mehrere VMs mit mehr als 4 GB RAM ausgeführt werden.
Hier sind die Schritte zum Einrichten:
python.exe
, zum Beispielc:\Python27\python.exe
C:\Users\rakslice\Documents\vboxsuspend\vboxsuspend.py
Jetzt sollten VirtualBox-VMs beim Abmelden / Neustarten / Herunterfahren angehalten werden.
Das Python-Skript zum Herunterfahren ist unten:
quelle