Zar, tout d'abord... ne déplacez jamais une machine qui est dans un état sauvegardé, avant de la déplacer vous devez arrêter l'invité, pas seulement sauvegarder l'état.
Assurez-vous également que vous utilisez la même version de VirtualBOX sur les deux hôtes, mais pas seulement la version de VirtualBOX, également la version du pack d'extension... ou au moins le nouvel hôte a une version plus élevée, mais jamais une version inférieure sur l'un de ces deux.
Et enfin, j'ai appris à la dure, à supprimer la configuration du dossier SHARED sur VirtualBOX avant de déplacer la machine, puis à la recréer de manière correcte... très important lorsque les hôtes sont des OS différents (hôtes Windows / Linux).
Et juste en passant... j'utilise toujours, toujours, des fichiers VDI de disque dur inmutables pour l'OS ainsi que pour les VDI de données (de cette façon, le même VDI de données peut être utilisé pour plus d'un invité), spécialement pour les 4GiB pagefile.sys.
Cette dernière partie, réutiliser un fichier VDI inmutable rend les choses un peu plus difficiles, VirtualBOX a un BIG BUG.
Pour voir le Bug en action :
- Créez un VDI inmutable (comme celui que j'utilise pour pagefile.sys).
- Créer deux ou trois VM's sur VirtualBOX
- Déplacez l'un d'entre eux en haut de la liste (pour éviter d'endommager l'un des vôtres).
- Sauvegardez les fichiers .vbox de chacune des machines que vous avez créées (pour les comparer après l'apparition du BUG).
- Attachez cette VDI inmutable à plusieurs de ces machines (sauf celle en haut de la liste).
- Maintenant, voyez le .vbox de la machine qui est en haut de la liste.
Cette machine a été éditée, elle a des références aux autres machines VDI inmutables.
Donc le BUG est : Editer une machine en ajoutant un VDI inmutable qui est utilisé par une autre affecte la machine en haut de la liste.
Pourquoi diable je réutilise le même VDI de 4GiB sur toutes les machines Windows ? Facile, c'est un disque MBR avec une partition FAT32 où je place pagefile.sys, puisqu'il est inmutable, toutes les machines virtuelles vont créer un fichier dans leur dossier snapshot où elles stockent les changements, et qui sera perdu au prochain démarrage, donc je n'ai pas besoin de 4GiB pour chaque invité stocké sur le disque hôte, juste un seul... de cette façon, j'économise beaucoup de Go puisque j'ai plus de 20 Windows différents pour tester les applications que je développe pour mon propre compte, toutes les combinaisons de (XP, Vista, 7, 8, 8.1, 10)*(32Bits, 64Bits) * (tel quel lors de la première installation, après chaque ServicePack, après la mise à jour complète de Windows), j'ai beaucoup, beaucoup d'invités... donc sur chacun d'eux je partage le VDI inmutable de 4GiB pour la ram virtuelle (pagefile.sys).
Et si vous laissez le BUG aller plus loin, essayez de déplacer une de ces machines vers un autre hôte VirtualBOX (rappelez-vous qu'elles ne sont que des machines virtuelles avec une configuration sur elles et aucun invité encore installé sur elles), vous verrez que VirtualBox ne vous permet pas de les ajouter car certaines VDI sont manquantes (c'est FAUX et VRAI, c'est que cette première machine détient les références à ces VDI au lieu d'être sur la bonne machine).
Maintenant, comparez les fichiers .VBOX de chacun d'entre eux avec le BackUp précédent... remarquez comment l'un d'entre eux est modifié de manière incorrecte... oui, c'est celui qui se trouve en haut de la liste.
Eh bien, ce problème a été signalé à VirtualBOX il y a quelques années, et ils n'ont toujours pas réussi à le résoudre... et il cause beaucoup, beaucoup de problèmes.
De plus, si vous déplacez le premier de la liste des machines virtuelles vers une position plus basse, fermez VirtualBox et relancez-le... il vous dira que certaines machines sont endommagées et ne peuvent pas être démarrées... oui le premier de la liste doit être traité sous une forme différente si vous ne voulez pas avoir beaucoup d'ennuis.
C'est un très mauvais BUG qui m'a pris beaucoup de temps pour le découvrir (il y a quelques années) et je l'ai appris à la dure !
Je l'avais surmonté en ayant une machine que j'avais appelée :
Il a une configuration vide et un seul VDI, oui, vous avez raison, vous l'avez deviné, le VDI inmutable que je partage pour toutes les autres machines virtuelles.
Eh bien, lorsque j'ouvre le fichier .VBOX, je vois à l'intérieur de celui-ci beaucoup de lignes sur l'écran d'accueil. <MediaRegistry>
<HardDisks>
une pour chaque machine où j'utilise cette VDI inmutable... juste à titre d'exemple (je supprime les données privées) :
<MediaRegistry>
<HardDisks>
<HardDisk uuid="...UUID..." location="D:\VDIs\_Virtual_Memory_.vdi" format="VDI" type="Immutable">
<HardDisk uuid="{...UUID...}" location="Snapshots\{...UUID...}.vdi" format="VDI" autoReset="true"/>
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows001 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows002 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows003 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows004 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows005 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows006 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows007 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows008 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows009 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows010 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows011 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows012 ... // This belongs to other virtual Machine
<HardDisk uuid="{...UUID...}" location="D:\VMs\Windows013 ... // This belongs to other virtual Machine
... and so on ... // This belongs to other virtual Machine
</HardDisk>
</HardDisks>
</MediaRegistry>
Joli BUG, non résolu depuis des années.
Eh bien, pour déplacer de telles machines ... vous devez éditer manuellement les fichiers .VBOX, pour mettre toutes les références de ces disques sur le nouvel hôte sur la première machine (celle qui est en haut de la liste) avant d'ajouter les fichiers .VBOX à la liste, de sorte que lors de leur ajout VirtualBOX a les références aux VDI manquants (manques causés par le grand BUG).
Le problème se produit parce que chaque fois que vous connectez un VDI qui est utilisé sur une autre machine, VirtualBOX met à jour les fichiers .VBOX des deux machines (celui qui appartient à la machine que vous utilisez) et le premier de la liste.
Je ne suis pas totalement sûr de ce qui se passerait lorsque sur la liste, la première n'a pas de VDI aussi commune attachée à elle... mieux vaut ne pas essayer, vu ce que je vois.
La migration vers un autre HOST est donc beaucoup plus compliquée qu'il n'y paraît à cause d'une très mauvaise implémentation de la structure interne des fichiers .VBOX et à cause de très gros BUG lorsque VirtualBOX les édite.
Échec :
- La structure interne (XML) dépend de l'HÔTE (Windows ou Linux).
- Editer une machine peut en modifier une autre, et pas seulement celle qui est éditée.
- ... quoi d'autre ?
J'ai toujours migré les machines de cette manière (et je n'ai eu aucun problème, jamais) :
- Prendre note de la liste de toutes les machines (ordre, regroupement, etc.)
- Prenez note du premier de la liste (toute sa configuration)
- Prenez note de toutes les propriétés des machines que je veux déplacer vers un autre hôte.
- Copier les fichiers .vbox en fichiers .txt (celui en haut de la liste + toutes les machines que je veux migrer).
- Recréer toutes les machines (et en avoir une spéciale en haut de la liste) dans VirtualBox sur le nouvel hôte.
- Fermer VirtualBox sur le nouvel hôte
- Diff compare l'ancien fichier .txt avec le nouveau fichier .vbox et copie de .txt à .vbox certaines parties de manière humaine, pas seulement par copier/coller.
- Ouvrez VirtualBox et attachez tous les VDIs dans le bon ordre.
- Fermer à nouveau VirtualBox sur le nouvel hôte
- Comparer en différé les anciens fichiers .txt avec les nouveaux fichiers .vbox et 'corriger' de .txt à .vbox certaines parties de manière humaine, pas seulement par copier/coller.
Tout le reste (le dossier des instantanés et les fichiers VDI), je les copie de la manière normale (copier/coller du système de fichiers).
Tout ce dur travail manuel est causé par le gros BUG VirtualBox : Il édite / modifie une machine qui n'a pas été modifiée lorsque vous attachez un VDI inmutable qui est utilisé sur plus d'une machine, sinon un simple copier/coller du fichier .VBOX serait suffisant (après avoir fixé les chemins des dossiers partagés, etc).