zar, première chose à faire… ne jamais déplacer une machine qui est en état sauvegardé, avant de la déplacer vous devez éteindre 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 vesion du pack d'extension… ou au moins le nouvel hôte a une version supérieure, mais jamais une version inférieure sur aucun des deux.
Et enfin, je l'ai appris à la dure, supprimer la configuration du dossier SHARED sur VirtualBOX avant de déplacer la machine, puis la recréer correctement… très important lorsque les hôtes sont différents (hôtes Windows / Linux).
Et juste pour info… j'utilise toujours des fichiers VDI de disque dur inmuables pour les OS ainsi que pour les VDI de données (de cette façon la même VDI de données peut être utilisée pour plus qu'un invité), spécialement pour le fichier de page 4GiB. sys
Cette dernière partie, la réutilisation d'un fichier VDI inmuable rend les choses un peu plus difficiles, VirtualBOX a un GRAND BUG.
Pour voir le Bug en action :
- Créer une VDI inmutable (comme celle que j'utilise pour pagefile.sys)
- Créer deux ou trois VM sur VirtualBOX
- Déplacer l'une d'entre elles en haut de la liste (juste pour éviter d'endommager l'une des vôtres)
- Sauvegarder le fichier . vbox de chacune des machines que vous avez créées (pour les comparer après le BUG)
- Attacher cette VDI inmutable à plus d'une de ces machines (sauf celle en haut de la liste)
- Voir maintenant 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 : Modifier une machine en ajoutant une VDI inmutable qui est utilisée par une autre affecte la machine en haut de la liste
Pourquoi diable je réutilise la même VDI 4GiB sur toutes les machines Windows ? Facile, c'est un disque MBR avec une partition FAT32 où je mets pagefile.sys, puisqu'il est inmuable toutes les machines virtuelles vont créer un fichier sur leur dossier de snapshot où elles stockent les modifications, et qui se perdent 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 GiB puisque j'ai plus de 20 fenêtres différentes pour tester les applications que je développe pour moi, toutes combinaisons de (XP, Vista, 7, 8, 8.1, 10)*(32Bits, 64Bits) * (Comme à 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 tous je partage l'inmuable VDI 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 que ce sont seulement 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 puisque certaines VDIs sont manquantes (c'est FAUX et VRAI, c'est que cette première machine contient les références à de telles VDIs insérée d'être sur la bonne machine). VBOX de tous ces fichiers avec les BackUp précédents… notez comment on se trompe de modification ?… oui, c'est celui qui est en haut de la liste.
Eh bien, ce BUG a été informé à VirtualBOX il y a quelques années, ils ne peuvent toujours pas le réparer… et il cause beaucoup, beaucoup de problèmes.
De plus, si vous déplacez celui du haut sur les machines virtuelles vers une position plus basse, fermez VirtualBox et relancez-le… vous verrez que certaines machines sont endommagées et ne peuvent pas être démarrées… oui le premier de la liste doit être traité différemment si vous ne voulez pas avoir beaucoup de problèmes.
C'est un très mauvais BUG qui m'a pris beaucoup de jours à découvrird (il y a quelques années) je l'apprends à la dure ! Je l'ai surmonté en ayant une machine que j'avais appelée :
Elle a une configuration vide et une seule VDI, oui, vous avez raison, vous l'avez deviné, la VDI inmuable que je partage pour toutes les autres machines virtuelles.
Eh bien quand j'ouvre le fichier .VBOX je vois à l'intérieur beaucoup de lignes sur la section <MediaRegistry>
<HardDisks>
, une par machine où j'utilise cette VDI inmutable… juste à titre d'exemple (j'enlève 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>
Pretty BUG, non résolu depuis des années.
Eh bien, pour déplacer de telles machines… il faut éditer manuellement le fichier . VBOX, afin de placer toutes les références de ces disques sur le nouvel hôte de la première machine (celle qui est en haut de la liste) avant d'ajouter les fichiers .VBOX à la liste, de sorte que lorsque vous les ajoutez, VirtualBOX a les références des VDI manquantes (manquantes à cause du gros BUG).
Le problème se produit parce que chaque fois que vous connectez une VDI qui est utilisée sur une autre machine, VirtualBOX met à jour deux machines . VBOX (celle qui appartient à la machine que vous utilisez) et à la première de la liste.
Je ne suis pas totalement sûr de ce qui se passerait si, dans la liste, la première n'avait pas de VDI aussi commune… mieux vaut ne pas essayer, vu ce que je vois.
Donc la migration vers un autre HOST est beaucoup plus compliquée que ce qu'elle semble être à cause d'une très mauvaise implémentation sur les fichiers .VBOXstructure interne et à cause de très gros BUGs lorsque VirtualBOX les édite.
Echecs :
- La structure interne (XML) dépend de l'HOST (Windows ou Linux)
- Editer une machine peut en modifier une autre, pas seulement celle qui est éditée
- … quoi d'autre ?
Besoin de plus… je migre toujours les machines en faisant cela (et je n'ai jamais eu de problème, jamais) :
- Prendre note de la liste de toutes les machines (ordre, regroupement, etc)
- Prenez note de la première de la liste (toute sa configuration)
- Prendre 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 du 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 un nouvel hôte
- Fermer VirtualBox sur le nouvel hôte
- Différer comparer l'ancien .txt avec les nouveaux fichiers .vbox et copier de .txt à .vbox certaines parties de manière humaine, pas seulement copier-coller
- Ouvrir VirtualBox et joindre toutes les VDI dans le bon ordre
- Une fois de plus, fermer VirtualBox sur le nouvel hôte
- Diff comparer l'ancien .txt avec les nouveaux fichiers .vbox et “réparer” de .txt à .vbox certaines parties de manière humaine, pas seulement par copier-coller
Tout le reste (dossier des instantanés et fichiers VDI), je les copie de la manière normale (Copier-coller du système de fichiers)
Tout ce travail manuel difficile est causé par le Big BUG VirtualBox : Il édite / modifie une machine non modifiée lorsque vous joignez une VDI inmuable utilisée sur plus d'une machine, sinon un simple copier-coller du fichier .VBOX suffirait (après avoir fixé les chemins des dossiers partagés, etc).