Virtualbox, fusion des instantanés et du disque de base


9

J'ai une machine virtuelle avec environ 30 instantanés dans les succursales. Le chemin de développement actuel est de 22 instantanés plus le disque de base. La quantité de fichiers semble avoir un impact sur IO et l'ordinateur portable de développement que j'utilise (je ne sais pas s'il s'agit de problèmes de performances du disque hôte avec la taille totale de 140 Go sur un grand nombre de fragments, ou tout simplement le fait qu'il est frappant des secteurs répartis sur un grand nombre de fichiers).

Je voudrais fusionner la branche de développement actuelle des instantanés avec le disque de base, mais je ne sais pas si la commande suivante produira le résultat correct. Je ne parviens pas à démarrer ce disque une fois la procédure terminée (5-6 heures).

vboxmanage clonehd "C:\VPC-Storage\.VirtualBox\Machines\CRM\Snapshots\{245b27ac-e658-470a-b978-8e62137c33b1}.vhd" "E:\crm-20100624.vhd" --format VHD --type normal

Quelqu'un pourrait-il confirmer si c'est la bonne approche ou non?


Pour ajouter des informations, l'erreur que j'obtiens n'est pas une erreur VirtualBox, mais une erreur de démarrage de Windows. Il veut lancer la réparation de démarrage, mais comme je ne connais pas l'erreur, je ne connais pas le correctif. Le démarrage de Windows entraîne normalement une longue attente et un écran bleu. Est-ce prévu ou ai-je utilisé la mauvaise méthode lors du clonage du disque?
Henrik

J'ai utilisé VBoxManage (sur l'hôte Windows, invité Ubuntu) comme vous l'avez suggéré dans votre question et il a correctement fusionné les instantanés dans l'image de disque de sortie unique
Chaulky

1
Oui, c'est une approche correcte. Il est préférable de spécifier uniquement l'UUID source au lieu de son nom de fichier, alors vous êtes sûr que VBox sera en mesure de résoudre les pièces jointes.
rustyx

Réponses:


7

Ce que vous voulez faire, c'est dans la boîte de dialogue des instantanés, sélectionnez votre instantané parent que vous souhaitez fusionner ensuite tous les instantanés en un seul VDI.

D'après votre description, il semble que ce soit la racine de l'arbre.

Cliquez avec le bouton droit et sélectionnez «Supprimer l'instantané».

Cela fera ce que vous voulez --- il fusionnera toutes les modifications de tous les instantanés enfants dans un seul VDI.

De plus, le clonage de l'image de disque dans le dernier instantané fusionnera également le disque de différenciation avec son parent (et son parent, etc., jusqu'à ce que vous obteniez un type de disque dur «normal»).

Je soupçonne que «supprimer un instantané» exécute la commande clonehd.

Vérifiez vos paramètres de machine virtuelle (en particulier IO APIC activé / désactivé) et assurez-vous qu'ils correspondent.


Je suppose que c'est actuellement la seule façon de le faire, mais c'est un moyen manuel, long et multi-clic dans l'interface graphique de le faire.
Henrik

3

Si vous ne souhaitez conserver qu'un seul instantané, faites-en votre état actuel, puis exportez la machine virtuelle et réimportez-la. Les appliances exportées ne conservent pas leur historique d'instantanés.

Ou vous pouvez utiliser ce script vboxmerge.py pour gérer la fusion pour vous. Étant donné le nombre d'instantanés dont vous disposez, je m'attends à ce que le cycle d'exportation / importation soit plus rapide.


2

Voici une technique (testée sur VirtualBox 4.3.4) qui utilise la commande 'Clone' pour fusionner et compacter tous les instantanés vers une nouvelle machine virtuelle contenant un seul fichier VDI:

  1. Renommez la machine virtuelle afin de pouvoir réutiliser son nom actuel pour la machine virtuelle clonée (vous pouvez changer le nom de la machine virtuelle à partir de l'onglet «De base» des paramètres «Général»).

  2. Cliquez avec le bouton droit sur la machine virtuelle 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, c'est-à-dire le type de clone: ​​«Clone complet»; Instantanés: «État actuel de la machine».
  3. Supprimez l'ancienne machine virtuelle (cliquez avec le bouton droit sur la machine virtuelle et exécutez la commande "Supprimer ...").


0

Si votre hôte est un Windows ou si vous pouvez accéder aux fichiers VHD à partir d'une fenêtre, il existe une astuce pour fusionner toutes les modifications en parent, grand-parent, etc.

Il utilise l'outil DiskPart et les deux commandes:

select vdisk file="whatever your file is, with full path"

merge vdisk depth=#

Où # est le nombre de niveaux de hiérarchie que vous souhaitez déplacer, 1 pour le parent dirent, 2 pour le grand parent, etc.

Il le fait sur place, beaucoup moins de temps que le clonage, etc.

N'oubliez pas qu'après la fusion, tous les disques durs virtuels intermédiaires peuvent être supprimés (il ne les supprime pas pour vous) et n'oubliez pas de joindre à VirtualBox le parent où vous avez fusionné.

Exemple:

Disk3.vhd est enfant de Disk2.vhd, Disk2.vhd est enfant de Disk1.vhd

Si vous voulez sur Disk1.vhd toutes les modifications de Disk3.vhd utilisez simplement depth=2et sélectionnez Disk3.vhd. Si vous voulez sur Disk1.vhd toutes les modifications de Disk2.vhd utilisez simplement depth=1sélectionnez Disk3.vhd.

Souvenez-vous également qu'il n'est pas nécessaire d'avoir des instantanés de VirtualBox moches, vous pouvez utiliser la commande DiskPart create vdisk pour créer un disque de différenciation à partir d'un disque existant (qui peut également être un disque de différenciation, etc.), peut également créer une énorme arborescence.

Pour tout le reste: L'affiche utilise VHD (pas VDI), donc peut utiliser des outils natifs comme DiskPart et Disk Managment pour accéder aux disques hors de l'invité (sur l'hôte, si l'hôte est Windows).

Pour vous, l'affiche: N'oubliez pas de toujours avoir une sauvegarde complète avant la fusion, le clone VirtualBox ne fonctionne pas en place, il crée un nouveau fichier (copie lors de l'écriture), mais la fusion DiskPart fonctionne en place (modifiez le fichier, ne créez pas un nouveau).

J'espère que cela peut donner une autre approche différente puisque VHD / VHDX est en cours d'utilisation (non valable pour VMDK, VDI, etc., uniquement pour Windows Host).

Remarque: Windows 7 et versions ultérieures, XP et Vista peuvent monter des disques durs virtuels avec un outil M $ externe, mais DiskPart ne prend pas en charge les disques durs virtuels sur XP et Vista ... tout cela fonctionne également sur les éditions Windows HOME (7 et versions ultérieures), pas besoin d'un Édition SERVER.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.