Je veux transformer une machine physique exécutant MS Windows 7 en une machine virtuelle VirtualBox. C'est facile, je l'ai déjà fait, mais cette fois, j'avais besoin que la taille/capacité virtuelle du disque soit un fixe et plus petit taille.
Il doit être corrigé car j'y installerai le chiffrement du disque PGP pour des raisons de conformité. Cela étendra un disque dynamique à sa taille maximale.
Mis à part ce cas particulier, il existe d'autres raisons pour lesquelles les disques doivent être plus petits et fixes. C'est mon expérience. Si vous exécutez par exemple un serveur de génération Jenkins sur un disque à expansion dynamique, vous pouvez voir le disque se développer rapidement à sa taille maximale tandis que dans l'espace disque du système d'exploitation invité, l'utilisation de l'espace est stable et il y a beaucoup d'espace libre.
Utilisation de Disk2vhd J'ai créé un fichier vhdx. Ce fichier que j'ai converti au format vdi.
vboxmanage clonehd --format VDI MSWIN7.VHDX MSWIN7.vdi
Avec vdi, vous pourriez réduire la taille/capacité virtuelle avec des commandes similaires à
vboxmanage modifyhd MSWIN7.vdi --resize 160000
J'ai trouvé que cela ne fonctionne pas. Même si vous essayez des variantes, vous obtiendrez systématiquement des messages d'erreur tels que:
État d'avancement: VBOX_E_NOT_SUPPORTED VBoxManage: erreur: l'opération de redimensionnement du disque dur pour ce format n'est pas encore implémentée!
Ci-dessous est la disposition du disque de mon disque vdi. J'ai ajouté cela à un Ubuntu VM pour le regarder en utilisant Gparted et CloneZilla. La capacité est d'environ 300 Go. Non allouée 145 Go. Utilisée est d'environ 153 Go.
Je souhaite réduire la capacité à environ 160 Go. Cela devrait être suffisant pour s'adapter à /dev/sdb1
et /dev/sdb2
.
BTW, j'ai essayé CloneZilla mais il ne semble pas non plus aimer réduire la capacité d'un disque plus petit. J'ai essayé divers paramètres dans CloneZilla mais sans succès.
Comment puis-je réduire la taille/capacité virtuelle?
Déplacez le contenu de l'ancien disque vers le nouveau disque:
vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
Activez la machine virtuelle.
En fin de compte, j'ai réussi à résoudre ce puzzle d'une manière simple et inattendue en utilisant l'utilitaire de ligne de commande préinstallé dd
voir Clonage de disque . Comme indiqué ci-dessous, mon disque de 160 Go dans mon système d'exploitation invité est maintenant stocké dans un fichier vdi VirtualBox fixe de 160 Go.
Je l'ai résolu en utilisant les étapes suivantes:
MSWIN7.vdi
avec MS Windows 7 vers un Ubuntu VM comme deuxième disque./dev/sda1
avec la VM Ubuntu en cours d'exécution, /dev/sdb2
avec la source MSWIN7.vdi
et /dev/sdc1
avec le nouveau vdi./dev/sdc
. CloneZilla l'a fait pour moi. Il n'a pas copié les données mais a créé le partitionnement que je voulais. Bien sûr, vous pouvez le faire manuellement.sdb
vers sdc
avec la commande dd
similaire à Sudo dd if=/dev/sdb of=/dev/sdc
. La commande se termine par un message d'erreur "pas d'espace restant", ce qui est attendu. J'ai ignoré cela car il s'agit simplement d'un espace non alloué qu'il n'a pas réussi à copier.Je pense qu'il est possible d'exécuter la commande pour chaque partition. C'est peut-être mieux et n'affichera pas de message d'erreur. Sudo dd if=/dev/sdb1 of=/dev/sdc1
et Sudo dd if=/dev/sdb2 of=/dev/sdc2
.
vagrant@devops:~$ Sudo dd if=/dev/sdb of=/dev/sdc
dd: writing to ‘/dev/sdc’: No space left on device
335544321+0 records in
335544320+0 records out
171798691840 bytes (172 GB) copied, 6360.3 s, 27.0 MB/s
Je pense que cette solution est extrêmement dangereuse! Il repose sur tous les fichiers se trouvant dans les premiers 153 Go de la partition originale de 300 Go. La commande dd ne copie pas les fichiers. Il copie simplement TOUS les blocs dans l'ordre. Ainsi, si vous avez eu la malchance d'avoir des fichiers importants APRÈS la coupure de 160 Go, dd ne saura pas les copier.
La solution typique que j'ai vue dans de très nombreux articles consiste à allumer Windows VM et à utiliser une combinaison d'outils de défragmentation et d'outils d'administration pour consolider tous les fichiers à l'avant du disque - la difficulté est que de nombreux outils de défragmentation ne déplacent pas les fichiers système Windows non amovibles (j'ai dû désactiver la récupération système pour supprimer un bloc de disque amovible de 7 Go), qui se trouvent quelque part au milieu de l'espace que vous essayez de consolider.
Une fois que vous avez consolidé les fichiers sur le devant du disque (MyDefrag est un outil gratuit qui fournit un affichage de l'emplacement de vos fichiers sur le disque), vous devez réduire la taille de votre partition Windows. J'ai utilisé l'outil diskpart avec l'option de réduction.
À ce stade, vous pouvez utiliser dd pour copier la partition désormais plus petite vers un nouveau vdi.
J'ai également utilisé vboxmanage modifymedium win10.vdi --compact, sur mon hôte Linux, mais j'ai d'abord dû exécuter sdelete.exe dans le système Windows pour éliminer tout l'espace inutilisé en premier (sdelete -z c :). L'utilisation de vboxmanage pour compacter le fichier vdi existant vous permet de tout faire sur place (mais toujours d'avoir une sauvegarde).
Dans mon cas, j'avais une fenêtre VM avec 50 Go de vdi pour réduire à 20 Go.
J'ai essayé la solution Andre Figueiredo mais j'ai eu un problème avec le vdi
cloné.
Lorsque j'applique la solution Andre Figueiredo et que j'attache la vdi
rétrécie à la machine virtuelle, lors du démarrage, Virtualbox s'arrête avec une erreur d'E/S.
Cela est peut-être lié à mon système de fichiers btrfs
(j'ai entendu que btrfs
causait des problèmes avec Vritualbox vdi
).
Ma solution:
J'ai essayé une solution différente afin de réduire le VM (vdi
), nommé OVdi , ( OVdi a une taille de disque de 50 Go, une partition ntfs unique avec 40 Go d'espace libre).
Suivons ces étapes (c'est mon cas, vous pouvez adapter/inventer différents noms vdi ):
arrêter le VM (poweroff)
créer un nouveau disque (vdi
) avec le nom DVdi de la taille souhaitée (20 Go dans mon cas ..)
attacher DVdi à la VM
boot VM et installez l'utilitaire EaseUS Backup Free
Exécutez EasyUS et utilisez la fonction EasyUS Clone (il clone OVdi MBR, et la partition ntfs de OVdi en réduisant le nouveau disque DVdi )
Éteignez la VM
Détacher OVdi de la VM
Vérifiez si DVdi est le premier périphérique de démarrage pour la machine virtuelle
redémarrez la machine virtuelle
S'amuser
N'oubliez pas de supprimer le volume OVdi .
En suivant ces étapes, j'ai réussi à réduire la taille du disque VM de 50 Go à 20 Go