20 votes

Comment diminuer la taille/capacité d'un fichier vdi de Virtualbox ?

Je veux transformer une machine physique fonctionnant sous MS Windows 7 en une machine virtuelle VirtualBox. C'est facile, je l'ai déjà fait auparavant, mais cette fois j'avais besoin que la taille/capacité virtuelle du disque soit une fixe et plus petit taille.

Il doit être réparé car je vais y installer le cryptage de disque PGP pour des raisons de conformité. Cela va étendre un disque dynamique à sa taille maximale.

En dehors de ce cas particulier, il existe d'autres raisons de vouloir que les disques soient plus petits et fixes. C'est mon expérience. Si vous exécutez par exemple un serveur de construction Jenkins sur un disque à expansion dynamique, vous pourriez voir le disque s'étendre rapidement jusqu'à sa taille maximale alors que dans le système d'exploitation invité, l'utilisation de l'espace disque est stable et il y a beaucoup d'espace libre.

Utilisation de Disk2vhd J'ai créé un fichier vhdx. J'ai converti ce fichier au format vdi.

vboxmanage clonehd --format VDI MSWIN7.VHDX MSWIN7.vdi

Il semblerait qu'avec vdi, vous puissiez réduire la taille/capacité d'un virtuel à l'aide de commandes telles que

vboxmanage modifyhd MSWIN7.vdi --resize 160000

J'ai constaté que cela ne fonctionne pas. Même si vous essayez des variantes, vous obtiendrez systématiquement des messages d'erreur du type :

État d'avancement : VBOX_E_NOT_SUPPORTED VBoxManage : erreur : Redimensionnement du disque dur pour ce format n'est pas encore implémenté !

Voici la disposition de mon disque vdi. Je l'ai ajouté à une VM Ubuntu pour le regarder en utilisant Gparted et CloneZilla. La capacité est d'environ 300 Go. Non alloué 145GB. Utilisé : environ 153 Go.

Je veux réduire la capacité à environ 160 Go. Cela devrait être suffisant pour contenir /dev/sdb1 y /dev/sdb2 .

BTW, j'ai essayé CloneZilla mais il ne semble pas non plus aimer réduire la capacité à un disque plus petit. J'ai essayé plusieurs paramètres dans CloneZilla, mais sans succès.

Comment puis-je réduire la taille/capacité d'un réseau virtuel ?

enter image description here

31voto

Felix Kling Points 247451
  1. Désallouer l'espace à la fin du disque en OS invité où espace >= taille (disque source) - taille (nouveau disque). Typiquement par rétrécissement de la dernière partition .

  2. Éteindre la machine virtuelle.

  3. Créez un nouveau disque Virtual Box de la taille souhaitée.

  4. Déplacez le contenu de l'ancien disque vers l'intérieur du nouveau disque :

     vboxmanage clonemedium disk "source-disk.vmdk" "new-disk.vmdk" --existing
  5. Allumez la machine virtuelle.

  6. Vous devrez peut-être redimensionner la partition dans OS invité pour remplir le reste du disque en fonction de l'espace désalloué à l'étape 1.

3voto

onknows Points 292

Finalement, j'ai réussi à résoudre cette énigme d'une manière étonnamment simple en utilisant l'utilitaire de ligne de commande préinstallé dd voir Clonage de disque . Comme indiqué ci-dessous, j'ai maintenant mon disque de 160 Go dans mon système d'exploitation invité stocké dans un fichier vdi de VirtualBox de 160 Go fixe.

enter image description here

Je l'ai résolu en suivant les étapes suivantes :

  1. Redimensionnez le disque en utilisant Gestion des disques dans MS Windows à une taille égale ou mieux un peu plus petite que la taille de la VDI.
  2. Ajouter le vdi source MSWIN7.vdi avec MS Windows 7 à une VM Ubuntu comme deuxième disque.
  3. Créez un nouveau vdi fixe de 160 Go et ajoutez-le également à la VM Ubuntu. Il y a maintenant trois disques : /dev/sda1 avec la VM Ubuntu en cours d'exécution, /dev/sdb2 avec la source MSWIN7.vdi y /dev/sdc1 avec le nouveau vdi.
  4. Créez le partitionnement correct sur /dev/sdc . CloneZilla a fait cela pour moi. Il n'a pas copié les données mais a créé le partitionnement que je voulais. Vous pouvez bien sûr le faire manuellement.
  5. Copie sdb a sdc con dd similaire à la commande sudo dd if=/dev/sdb of=/dev/sdc . La commande se termine par un message d'erreur "no space left", ce qui est attendu. Je l'ai ignoré car il s'agit simplement d'espace non alloué que la commande n'a pas réussi à copier.

Je pense qu'il est possible d'exécuter la commande pour chaque partition. Peut-être que c'est mieux et que cela n'affichera pas de message d'erreur. sudo dd if=/dev/sdb1 of=/dev/sdc1 y 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

3voto

Fabiano Tarlao Points 161

Dans mon cas, j'avais une VM Windows avec un vdi de 50GB à réduire à 20GB.

J'ai essayé Andre Figueiredo solution mais j'ai eu un problème avec le clone vdi .

Quand j'applique Andre Figueiredo et fixez le film rétracté vdi à la VM, lors du démarrage, Virtualbox s'arrête avec une erreur I/O.

Peut-être que c'est lié à mon btrfs système de fichiers (j'ai entendu btrfs cause des problèmes avec Vritualbox vdi ).

Ma solution :

J'ai essayé une solution différente afin de réduire le disque VM ( vdi ), nommé OVdi , ( OVdi a une taille de disque de 50 Go, une seule partition ntfs avec 40 Go d'espace libre).

Suivons les étapes suivantes (il s'agit de mon cas, vous pouvez adapter/inventer d'autres cas). vdi noms) :

  • arrêter la VM (poweroff)

  • créer un nouveau disque ( vdi ) avec le nom DVdi de la taille souhaitée (20GB dans mon cas )

  • joindre DVdi à la VM

  • démarrer la VM et installer l'utilitaire EaseUS Backup Free

  • Exécuter EasyUS et utiliser l'EasyUS Clone (il clone OVdi MBR, et la partition ntfs de OVdi en rétrécissant sur un nouveau disque DVdi )

  • Mettre la VM hors tension

  • Détacher OVdi de VM

  • Vérifiez si DVdi est le premier périphérique de démarrage de la VM

  • redémarrer la VM

  • Amusez-vous bien

N'oubliez pas de supprimer le OVdi volume.

En suivant ces étapes, j'ai réussi à réduire la taille du disque de la VM de 50 Go à 20 Go.

2voto

Paul Hursky Points 21

Je pense que cette solution est extrêmement dangereuse ! Elle repose sur le fait que tous les fichiers se trouvent dans les 153 premiers Go de la partition originale de 300 Go. La commande dd ne copie pas les fichiers. Elle copie simplement TOUS les blocs en séquence. Ainsi, si vous avez la malchance d'avoir des fichiers importants APRÈS la limite des 160 Go, dd ne saura pas les copier.

La solution typique que j'ai vue dans de très nombreux messages est de mettre sous tension la VM Windows et d'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 inamovibles (j'ai dû désactiver la restauration du système pour supprimer un morceau de disque inamovible 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 à l'avant du disque (MyDefrag est un outil gratuit qui fournit un affichage de l'endroit où se trouvent vos fichiers sur le disque), vous devez réduire la taille de votre partition Windows. J'ai utilisé l'outil diskpart avec l'option shrink.

A ce stade, vous pouvez utiliser dd pour copier la partition maintenant 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 vider tout l'espace inutilisé (sdelete -z c :). L'utilisation de vboxmanage pour compacter le fichier vdi existant vous permet de tout faire sur place (mais ayez toujours une sauvegarde).

1voto

goamn Points 101

Comme d'autres l'ont mentionné, la réponse d'Andre Figueiredo est basée sur la chance, car il n'y a aucune garantie que les "X premiers gb" d'espace soient votre espace, à moins que vous ne défragmentiez, auquel cas c'est toujours risqué.

La réponse de Paul Hursky est beaucoup plus sûre. Je vais énumérer quelques étapes supplémentaires que j'ai effectuées (notez que ceci est pour Windows, le mien était XP mais cela devrait également fonctionner pour d'autres) :

1) Obtenez l'édition gratuite de "MiniTool Partition Wizard Free 12" dans ce lien

2) Installez-le dans le système d'exploitation invité et redimensionnez votre disque, en laissant un peu d'espace pour être sûr (ne le tirez pas complètement en arrière ). Puisque vous êtes probablement en train de redimensionner le disque dur de l'OS actuel, il vous donnera une option pour redémarrer et effectuer l'action, faites ceci.

3) Maintenant, à l'aide du même programme MiniTool Partition, sélectionnez l'espace non alloué (sous la rubrique *: ) -> Clic droit -> Effacer la partition -> Remplir les secteurs avec zéro (rapide).

4) Maintenant, arrêtez l'OS invité en toute sécurité. Allez dans le dossier VirtualBox où existe VBoxManage.exe, ouvrez cmd dans ce chemin et exécutez ceci :

vboxmanage modifymedium C:\PATH_TO_YOUR_VDI\CHANGE_ME.vdi --compact

5) Et maintenant, tout devrait fonctionner comme par magie. Lorsque vous ouvrirez le système d'exploitation invité, il lancera la vérification du disque, laissez-le s'exécuter, il trouvera des "fichiers orphelins" qui ressemblent à des fichiers système.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X