J'essaie de trouver une solution pour arrêter gracieusement toutes les machines virtuelles invitées fonctionnant sous VirtualBox Windows lorsque l'ordinateur hôte est arrêté ou redémarré.
Il semble que l'option la plus sûre serait de déclencher la commande "save state" lorsque l'hôte commence à s'arrêter, mais il n'est pas clair si l'hôte attendra assez longtemps pour que les VM finissent d'enregistrer l'état et s'éteignent.
Quelqu'un at-il une solution robuste pour ce problème (apparemment basique)?
windows
virtualbox
virtual-machine
virtualization
shutdown
Matt Jenkins
la source
la source
Réponses:
J'ai eu un problème similaire et je l'ai résolu en exécutant VirtualBox en tant que service:
http://vboxvmservice.sourceforge.net/
Avec VBoxVMService, vous pouvez choisir la façon dont vous souhaitez que la machine s'arrête (enregistrement de l'état, mise hors tension) et démarre. Puisqu'il fonctionne en tant que service, Windows attendra automatiquement son arrêt, pendant le processus d'arrêt du système.
la source
Malheureusement, cela ne semble pas possible pour les machines virtuelles démarrées via l'interface graphique de VirtualBox. Même si l'interface graphique peut intercepter l'événement d'arrêt de l'hôte et réagir, le service VirtualBox est arrêté: https://forums.virtualbox.org/viewtopic.php?p=278668#p278668
Si vous n'avez pas besoin d'une console graphique, VBoxHeadlessTray ou VBoxVMService pourrait être le chemin à parcourir. Les deux prennent en charge l'enregistrement et la reprise automatiques lors de l'arrêt et du redémarrage de l'hôte Windows.
VirtualBox 5.0 introduit un mode de démarrage "UI détachable" . Ce mode démarre une machine virtuelle sans tête avec un processus d'interface utilisateur distinct. Les performances graphiques en souffrent cependant et l'accélération 3D n'est pas encore prise en charge. Mais peut - être cela peut être combiné avec VBoxHeadlessTray à l'avenir (VBoxHeadlessTray ne supporte pas encore 5.0.) Liens vers dépôt VBoxHeadlessTray GitHub et à la correspondante demande de tirage GitHub pour ajouter le support VirtualBox 5 .
Edit: VBoxVmService ne prend pas non plus en charge le nouveau mode détachable à partir de la version 5.0. Seulement sans tête jusqu'à présent. J'ai ajouté une demande de fonctionnalité pour cela.
la source
J'ai 3 scripts batch que j'utilise à la place des boutons d'alimentation du menu Démarrer.
do_shutdown.bat (arrêt du PC avec une période d'attente de 10 secondes, non pas pour donner 10 secondes au VM pour enregistrer l'état, mais pour me permettre d'annuler l'arrêt dans les 10 secondes. Le compte à rebours commence après l'arrêt des VM)
do_reboot.bat (redémarre immédiatement après l'arrêt du VM)
do_cancel.bat (me permet d'annuler l'arrêt du PC dans la période d'attente de 10 secondes. Il redémarre ensuite les vm, car ils ont été arrêtés avec le do_shutdown.bat)
Au lieu de
savestate
vous, vous pouvez également utiliser l'un des éléments suivantsla source
Désolé, je suis en retard à la fête. Il y a une réponse exacte à cela, bien qu'elle nécessite une commande-foo. Voir cet article de discussion pour plus d'informations: https://forums.virtualbox.org/viewtopic.php?f=6&t=53684#p285540
La commande que vous recherchez est:
"C: \ Program Files \ Oracle \ VirtualBox \ VBoxManage.exe" setextradata GUI "VM NAME" / DefaultCloseAction Shutdown
C'est ce que j'utilise sur plusieurs machines virtuelles, fermez la fenêtre et il démarre automatiquement un arrêt sûr. Arrêtez Windows et dans sa tentative de tout fermer, il attendra la fin de ces processus.
la source
J'avais une question similaire et j'ai trouvé cette page. Je ne veux pas exécuter VirtualBox en tant que service, car j'ai beaucoup de machines virtuelles à tester, et j'en choisis généralement différentes à exécuter dans l'interface utilisateur de VirtualBox. Lorsque j'arrête mon ordinateur, il est ennuyeux de sauvegarder manuellement l'état de chaque machine virtuelle. L'utilisation de scripts pour enregistrer toutes les machines virtuelles en cours d'exécution semble être une solution pratique dans ce cas. Pour rendre la réponse de Daniel F plus générale, j'ai écrit ces scripts qui enregistrent automatiquement l'état de toutes les machines virtuelles en cours d'exécution sans les nommer explicitement.
saveRunningVMs.bat pour Windows:
saveRunningVMs.sh pour Linux:
la source
J'ai créé un script python qui suspendrait toutes les machines virtuelles VirtualBox en cours d'exécution, puis j'ai configuré le système pour exécuter le script à la déconnexion en tant que tâche planifiée.
Je ne sais pas à quel point cette méthode est fiable. Comme d'autres l'ont fait remarquer il y a des limites à la durée pendant laquelle le système attendra qu'une tâche Winlogon 7002 se termine. Mais personnellement, je n'ai eu aucun problème à ce qu'il donne des états de sauvegarde utilisables même avec plusieurs machines virtuelles en cours d'exécution sur 4+ Go de RAM de machine virtuelle globale.
Voici les étapes pour le configurer:
python.exe
, par exemplec:\Python27\python.exe
C:\Users\rakslice\Documents\vboxsuspend\vboxsuspend.py
Désormais, les machines virtuelles VirtualBox doivent être suspendues lors de la déconnexion / redémarrage / arrêt.
Le script python pour effectuer l'arrêt est ci-dessous:
la source