Résumé :
VBoxManage.exe modifyhd --resize
peut augmenter (mais pas diminuer) la taille logique de l'image disque (la taille vue par l'OS invité).
VBoxManage.exe modifyhd inputfile.vdi --compact
peut diminuer la taille physique de l'image disque (la taille du fichier image sur le disque vu par l'OS hôte). Cela ne change cependant pas la taille logique du disque. Notez que cela ne fonctionne que si l'espace libre a d'abord été mis à zéro dans le système d'exploitation invité.
modifyhd
ne fonctionne qu'avec la variante de format dynamique (“dynamically allocated image”).
modifyhd
ne fonctionne qu'avec les formats d'image VDI et VHD.
- Si vous utilisez des instantanés, vous devrez cloner le dernier instantané VDI du sous-dossier “Snapshots”.
Pour plus de détails, voir la section 8.23. VBoxManage modifyhd du manuel.
La raison pour laquelle la réduction de la taille du disque logique d'une VDI n'a pas encore été mise en œuvre est de prévenir la corruption des données qui pourrait se produire et vous auriez des VM non amorçables à la suite de cela. Par conséquent, lorsque l'option --resize
est utilisée, la nouvelle taille du disque doit être supérieure à la taille actuelle. Il n'est pas permis d'être inférieur ou égal à la taille actuelle. En d'autres termes, un disque de 40 Go ne peut être redimensionné qu'à 41 Go ou plus, il ne peut pas être redimensionné à 40 Go (c'est juste idiot) ou à 39 Go ou moins.
Les anciennes versions de VirtualBox créaient des fichiers VDI en tant que variante de format “fixe”. Le nouveau paramètre par défaut consiste désormais à créer des variantes de format “dynamiques” lorsque de nouveaux fichiers VDI (image de disque virtuel) sont créés. (Je suppose que c'est le cas depuis l'introduction de la variante de format dynamique, quelle que soit la version dans laquelle elle a été introduite).
Ainsi, le message d'erreur “l'opération pour ce format n'est pas encore implémentée” signifie que votre fichier VDI utilise la variante de format “fixe”. Pour contourner ce problème, vous devrez cloner votre fichier VDI en utilisant la commande clonehd
. Pour voir dans quelle variante de format se trouve votre fichier VDI actuellement, vous pouvez utiliser la commande showhdinfo
.
Exemple de travail
Affiche les informations VDI sur le disque actuel.
Commande d'entrée : vboxmanage.exe showhdinfo path\inputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity: 40960 MBytes
Size on disk: 40962 MBytes
In use by VMs: sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)
C:\Program Files\Oracle\VirtualBox>
Voir où il est écrit “fixed default” ? C'est pourquoi il crache l'erreur ci-dessus lorsque vous essayez de le redimensionner.
Clone l'ancien fichier VDI dans un nouveau fichier VDI.
Commande d'entrée : vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c
C:\Program Files\Oracle\VirtualBox>
Voilà ! L'ancien fichier a maintenant été cloné dans un nouveau fichier. Comme le paramètre par défaut dans les nouvelles versions de VirtualBox est d'utiliser la variante de format “dynamique”, vous n'avez pas à le définir explicitement. Cependant, si vous travaillez avec une ancienne version de VirtualBox, vous pouvez choisir l'option “dynamique” (si elle est disponible) pour assurer une meilleure compatibilité et/ou flexibilité avec les futures versions de VirtualBox.
Affiche les informations VDI sur le disque cloné.
Commande d'entrée : vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
Voir comment il est maintenant écrit “dynamic default” ? Comme c'est agréable !
(Sur le côté ! La raison pour laquelle il est indiqué 7806 Mo comme taille physique ici est que j'avais utilisé l'option --compact
sur le fichier VDI original pour tenter d'imposer la conversion en variante de format dynamique. C'est juste un truc que j'ai lu sur le forum de VirtualBox, ça aurait soi-disant fonctionné avec des versions plus anciennes, alors j'ai pensé que je pourrais aussi bien essayer. Ça n'a pas marché.)
** Redimensionnement du disque cloné.**
Commande d'entrée : vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:\Program Files\Oracle\VirtualBox>
Succès ! Finies les conneries de format. N'oubliez pas de redimensionner le nouveau disque cloné, et non l'original. N'oubliez pas que la taille est exprimée en Mo. Je pense que vous pouvez utiliser par exemple 51200
ainsi que 50G
(ou éventuellement “GB”). Il existe également l'option --resizebyte
qui peut être utilisée pour exprimer la taille en octets.
Affiche les informations VDI concernant le disque cloné redimensionné.
Commande d'entrée : vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
C'est tout ! A partir de là, vous devez ajouter ce disque cloné comme votre nouvelle VDI pour la VM. Vous faites cela à l'intérieur de VirtualBox. Je ne vais pas m'étendre sur ce sujet. Si vous avez été capable de lire et de comprendre cela jusqu'à présent, alors vous n'avez probablement pas besoin de conseils supplémentaires. Vous pouvez soit supprimer l'ancien fichier “corrigé”, soit le laisser en tant que sauvegarde. Assurez-vous de tester le nouveau fichier VDI avant de supprimer le fichier source original.
Note! Vous ne verrez pas immédiatement la nouvelle taille du disque cloné. Vous devez démarrer la VM avec, puis utiliser votre outil de gestion des partitions pour étendre votre partition afin de remplir le disque virtuel (ou créer d'autres partitions). Pour Windows, il suffit d'exécuter diskmgmt.msc
et vous pourrez y étendre la partition.
Captures d'écran
Référence