Pourquoi ne puis-je pas redimensionner un VDI dynamique avec la commande modifyhd?

29

Je vois ici comment augmenter la taille du disque dur de la machine virtuelle .

Cela devrait fonctionner avec une commande comme

VBoxManage modifyhd xp.vdi --resize 2000

Lorsque le VDI a une taille fixe, vous pouvez obtenir cette erreur:

~/VirtualBox VMs/xp$ VBoxManage modifyhd xp.vdi --resize 2000
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

La discussion et la solution à cela sont ici .

Mais je reçois cette erreur alors que mon VDI est dynamique

~/VirtualBox VMs/xp$ VBoxManage showhdinfo xp.vdi
UUID:           8880dc58-cd0c-4ffb-a583-f8dd50eda98e
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/cip/VirtualBox VMs/xp/xp.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       8192 MBytes
Size on disk:   4693 MBytes
In use by VMs:  xp (UUID: e2b70963-3c26-41cf-88f6-4e03ca721e2d)

Pourquoi donc?

Communauté
la source
même problème ici avec Ubuntu 16.04LTS et vdi dynamique. très étrange
Luckyrings

Réponses:

26

Pour utiliser, VBoxManage modifyhdnous avons les mises en garde suivantes:

  • Les lecteurs doivent être au format .VDI ou .VHD.
  • Les lecteurs doivent être au format dynamique et non fixes (un disque fixe peut être converti en dynamique en créant un clone).
  • La taille du lecteur n'affectera que la taille logique , pas la taille physique.
  • Il n'est pas possible de réduire un disque à une valeur égale ou inférieure à sa taille physique.
  • Pour réduire la taille physique, nous devons remplir l'espace disque inutilisé 0.
  • Un VDI Windows peut devoir être défragmenté avant de réduire sa taille physique.

Dans l'exemple ci-dessus, il a été tenté de redimensionner un disque dynamique d'une taille physique de 4693 Mo à 2000 Mo, ce qui n'est pas possible. D'où l'erreur.

Takkat
la source
1
J'ai trébuché ici aussi. quelle douleur.
nicolas
2
Pour modifier des disques au format fixe, suivez la réponse de @ ripper234
Sharun
vérifiez ma réponse, il a tous les détails dont vous avez besoin et je peux certifier que cela fonctionne
Mauricio Gracia Gutierrez
J'ai créé cette image il y a plus de deux ans, j'avais depuis longtemps oublié qu'il s'agissait d'une taille fixe et non dynamique. Le lire dans votre réponse m'a rappelé. J'ai passé plus d'une heure à essayer de comprendre pourquoi je ne pouvais pas faire ça: (... Merci
Madivad
Merci, cela a aidé. Pour Linux, n'oubliez pas d'exécuter la pvresizecommande pour utiliser cet espace pour Linux
Maksim Luzik
24

Cette solution de contournement a fonctionné pour moi:

  1. Arrêtez la machine
  2. Créez un nouveau disque via l'interface d'administration avec la taille que vous souhaitez
  3. Utilisez VBoxManage clonemedium avec le --existingdrapeau

    VBoxManage clonemedium <source-guid> <destinatin-guid> --existing
    

Remarque : Maintenant, le nouveau disque aura l'espace excédentaire comme non alloué, et vous devrez utiliser gparted pour étendre la taille au maximum.

Je ne sais pas pourquoi les gars de VirtualBox n'ont pas pu utiliser ce qui précède pour implémenter cela au lieu de lancer VBOX_E_NOT_SUPPORTED... au moins un lien vers cela :)

ripper234
la source
1
Comment allouer l'espace excédentaire sur les fenêtres?
Ken
4
@Ken ne sais pas si vous l'avez compris; Démarrer -> Exécuter -> diskmgmt.msc, faites un clic droit sur C: (ou quel que soit le lecteur principal) et choisissez étendre.
Trent
2
cela a aidé. Je ne l'ai pas fait avec GUID mais avec le nom de fichier du lecteur
Luckyrings
3
@ ripper234 Les trois étapes nécessitent des explications détaillées - pour les gens comme moi qui ne sont pas très sûrs de ce qu'ils font. En 2) créons-nous un nouveau disque fixe ou quoi? .vdi .vdmk ?? Veuillez donner un exemple approprié, peut-être avec un graphique. Aussi 3) Que fait clonemedium par opposition à clonehd? D'où viennent les deux guides - en particulier celui de destination - il existe déjà alors que nous clonons? Merci
mwarren
Merci. Maintenant, j'étais dirigé ici en tant qu'utilisateur Windows (même s'il s'agit de askUbuntu), donc j'ajouterai ici que, dans la version Windows de VBoxManage, vous devez mettre les chemins d'accès aux disques durs virtuels, au lieu de la VM GUID.
Sean Burchett
4

Voici tout le processus, je vais essayer d'être le plus détaillé possible

  1. Assurez-vous que la machine dont vous allez augmenter la taille est dans l'état "Arrêt" (pas dans "enregistré" ou tout autre état)

Dans mon cas, il s'agit d'une machine de taille 32 Go et l'appellera la petite machine virtuelle

  1. Créez une nouvelle machine virtuelle avec la nouvelle taille souhaitée

Dans mon cas, j'ai décidé de créer une nouvelle machine virtuelle de 70 Go, tout en restaurant le contenu de la petite machine à l'intérieur de cette nouvelle machine virtuelle et je l'appellerai la grande machine virtuelle

  1. Exécutez la commande VBoxManage list hddsou ouvrez le Virtual Media Manager pour obtenir le GUID de la petite machine virtuelle (origine) et également le GUID de la grande machine virtuelle (destination)

Avec ces GUID, créez la commande suivante

VBoxManage clonemedium SMALL_VM_GUID LARGE_VM_GUID --existing

Dans mon cas, ORIGIN - SMALL VM est: 39143127-42b6-478a-afb2-5e58f14218b

Dans mon cas, DESINATION - LARGE VM est: bb808b5b-b88c-49b2-a646-3414af906d84

Bien sûr, vos GUID vont être différents des miens

Assurez-vous de ne pas inverser les GUID, sinon la toute nouvelle machine remplacera le contenu de votre machine existante !!!!

Après vous être assuré que vous n'avez pas mélangé l'origine avec la destination, exécutez cette commande:

$ VBoxManage clonemedium 39143127-42b6-478a-afb2-5e58f14218b2 bb808b5b-b88c-49b2-a646-3414af906d84 --existant

0% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100%

Support de clonage créé au format 'VDI'. UUID: bb808b5b-b88c-49b2-a646-3414af906d84

  1. Démarrez la nouvelle LARGE VM que vous avez créée à l'étape 2.

  2. Vérifiez dans l'outil de la fenêtre Gestion de l'ordinateur que la machine a en fait plus d'espace inutilisé / non formaté

  3. Si vous préférez, vous pouvez exécuter le "chkdsk" sur le lecteur C pour vous assurer que tout est prêt (cela peut vous prendre deux redémarrages sur la GRANDE VM )

  4. À l'aide de gparted-live * .iso, "insérez-le" dans la nouvelle machine virtuelle et redémarrez-le

  5. Démarrez dans l'environnement gparted

  6. Développez votre partition et enregistrez les modifications

  7. "Éjectez" le gparted-live * .iso pour redémarrer Windows

  8. Vérifiez dans l'outil de gestion de l'ordinateur que la machine dispose désormais d'un lecteur C plus grand pour résoudre vos problèmes spécifiques

J'ai eu les captures d'écran de ces processus mais j'ai décidé de ne pas les inclure car cela rendra ma réponse difficile et intimidante pour les personnes qui sont "pressées" d'obtenir de l'espace libre sur leur machine virtuelle Windows

Mauricio Gracia Gutierrez
la source
Merci pour le guide. À l'étape 3, d'où obtenez-vous les GUID? Je ne sais pas ce qu'est un Virtual Media Manager.
A.Wan
3
VBoxManage list hdds
Tant pis
@ A.Wan c'est le Virtual Media Manager - google.com.co/…
Mauricio Gracia Gutierrez