web-dev-qa-db-fra.com

Le moyen le plus rapide de fusionner des instantanés dans VirtualBox?

J'ai vdi avec un certain nombre d'instantanés pris - par exemple, 50 ou 70 instantanés. Je veux avoir un vdi simple avec un état actuel. Ces instantanés prennent beaucoup trop d'espace disque et ne sont pas nécessaires en tant qu'instantanés.

Je sais que si j'appelle

VBoxManage clonehd thedisk.vdi thedisk-full.vdi
(50-70 times) VBoxManage clonehd {uuid-of-snapshot}.vdi thedisk-full.vdi --existing

Je vais obtenir ce que je veux. Mais cela prend très très longtemps (plus de 5 heures compte tenu de mon matériel et de la taille de disque initiale de 16 Go).

Et, bien sûr, j'ai essayé VBoxManage snapshot delete et c'est étrange: cela ne fonctionne pas sur une machine arrêtée, peut échouer sur une machine en cours d'exécution et s'il échoue une fois, tous les appels suivants échouent.

Y at-il un moyen de faire vdi plaine de plusieurs instantanés - plus rapidement?

$ VBoxManage --version
3.2.14r75509

(lui a demandé sur ServerFault mais a décidé que cet endroit était plus approprié pour cette question)

45
Andrey Regentov

Trouvé la solution. C'est aussi simple que la dernière étape des commandes que j'ai écrites ici. C'est à dire.

VBoxManage clonehd fullpath/{uuid-of-last-snapshot}.vdi thedisk-full.vdi

Je ne devrais donc cloner que le dernier instantané, pas tous les instantanés de la chaîne. Et c'est des milliers de pour cent plus vite.

L'uuid peut être trouvé à partir de VBoxManage list hdds | grep VmName | tail

Dans l’interface graphique (sous Windows), sélectionnez la machine virtuelle, sélectionnez Instantanés en haut à droite, faites un clic droit sur l’instantané souhaité, sélectionnez Clone ... , et sélectionnez Full Clone dans la boîte de dialogue.

49
Andrey Regentov

Voici une technique (testée sur VirtualBox 4.3.4) qui utilise la commande 'Cloner' pour fusionner et compacter tous les instantanés en un nouveau VM contenant un seul fichier VDI:

  1. Renommez le VM afin que vous puissiez réutiliser son nom actuel pour le cloné VM (vous pouvez modifier le nom VM à partir de l'onglet "Général" des paramètres "Général". ).

  2. Cliquez avec le bouton droit sur la VM et exécutez la commande 'Cloner ...':

    • Définissez le nom sur le nom d'origine de la machine virtuelle.
    • Acceptez les valeurs par défaut restantes, à savoir le type de clone: ​​'Full clone'; Instantanés: 'État actuel de la machine'.
  3. Supprimez l'ancien VM (cliquez avec le bouton droit de la souris sur VM et exécutez la commande 'Supprimer ...').

21
Stuart Rackham

Vous pouvez essayer d'exporter vers OVF puis importer le fichier généré.

Comme expliqué ici :

OVF ne peut pas décrire les instantanés pris pour une machine virtuelle. Par conséquent, lorsque vous exportez une machine virtuelle contenant des instantanés, seul l'état actuel de la machine sera exporté et les images de disque de l'exportation auront un état "aplati" identique à celui de la machine virtuelle.

En conséquence, vous aurez un VM cloné avec l'état actuel, sans autre instantané.

3
StreakyCobra

Cette opération signifie lire et écrire de très gros fichiers sur le même disque physique. La seule façon d’accélérer ce processus consiste à placer ces fichiers sur différents disques en modifiant les chemins de votre commande VBoxManage. Si la machine ne comporte qu'un seul disque, vous pouvez utiliser un lecteur USB externe ou même un disque d'une autre machine via un partage réseau (en fonction de la vitesse de votre réseau).

0
golimar