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?
la source
Réponses:
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.
la source
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.
la source
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:
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»).
Cliquez avec le bouton droit sur la machine virtuelle et exécutez la commande "Cloner ...":
Supprimez l'ancienne machine virtuelle (cliquez avec le bouton droit sur la machine virtuelle et exécutez la commande "Supprimer ...").
la source
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=2
et sélectionnez Disk3.vhd. Si vous voulez sur Disk1.vhd toutes les modifications de Disk2.vhd utilisez simplementdepth=1
sé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.
la source