Sommario:
VBoxManage.exe modifyhd --resize
possono aumentare (ma non diminuire) la dimensione logica dell'immagine del disco (la dimensione vista dal sistema operativo ospite).
VBoxManage.exe modifyhd inputfile.vdi --compact
possono diminuire la dimensione fisica dell'immagine del disco (la dimensione del file immagine sul disco come visto dal sistema operativo ospite). Questo però non cambia la dimensione del disco logico. Nota che questo funziona solo se lo spazio libero è stato prima azzerato nel sistema operativo ospite.
modifyhd
funziona solo con la variante di formato dinamico (“immagine allocata dinamicamente”).
modifyhd
funziona solo con i formati immagine VDI e VHD.
- Se stai usando le istantanee dovrai clonare l'ultima istantanea VDI dalla sottocartella “Snapshots”.
Per i dettagli vedere la sezione 8.23. VBoxManage modifyhd nel manuale.
La ragione per cui la diminuzione della dimensione del disco logico di una VDI non è stata ancora implementata è per prevenire la corruzione dei dati che potrebbe verificarsi e si avrebbero VM non avviabili come risultato. Pertanto, quando si usa l'opzione --resize
, la nuova dimensione del disco deve essere maggiore di quella attuale. Non può essere inferiore o uguale alla dimensione attuale. In altre parole, un disco da 40 GB può essere ridimensionato solo a 41 GB o superiore, non può essere ridimensionato a 40 GB (è semplicemente stupido) o 39 GB o inferiore.
Le vecchie versioni di VirtualBox creavano i file VDI in formato “fisso”. La nuova impostazione predefinita è ora quella di creare varianti di formato “dinamico” quando vengono creati nuovi file VDI (immagine disco virtuale). (Immagino che questo sia il caso dall'introduzione della variante di formato dinamico, qualunque sia la versione in cui è stata introdotta).
Quindi quello che significa il messaggio di errore “il funzionamento per questo formato non è ancora implementato” è che il vostro file VDI usa la variante di formato “fisso”. Per aggirare questo problema dovrete clonare il vostro file VDI usando il comando clonehd
. Per vedere in quale variante di formato si trova il vostro file VDI al momento, potete usare il comando showhdinfo
.
Esempio di lavoro
Mostra informazioni VDI sul disco corrente.
Comando di input: 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>
Vedi dove dice “fixed default”? Questo è il motivo per cui sputa fuori l'errore di cui sopra quando provate a ridimensionarlo.
Clona il vecchio file VDI in un nuovo file VDI.
Comando di input: 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à! Il vecchio file è stato clonato in un nuovo file. Poiché l'impostazione predefinita nelle nuove versioni di VirtualBox è di usare la variante di formato “dinamico”, non è necessario definirla esplicitamente. Anche se, se stai lavorando con una vecchia versione di VirtualBox, allora potresti voler impostare l'opzione su “dynamic” (se disponibile) per assicurare una migliore compatibilità e/o flessibilità con le future versioni di VirtualBox.
Mostra informazioni VDI sul disco clonato.
Comando in ingresso: 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>
Vedi come ora dice “dynamic default”? Che bello!
(Una nota a margine! La ragione per cui dice 7806 MB come dimensione fisica qui è perché ho usato l'opzione --compact
sul file VDI originale nel tentativo di imporre la conversione alla variante di formato dinamico. Solo qualcosa che ho letto sul forum di VirtualBox, presumibilmente avrebbe funzionato con le vecchie versioni, così ho pensato che avrei potuto fare un tentativo. Non ha funzionato.)
Ridimensionamento del disco clonato.
Comando di input: 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>
Successo! Niente più cazzate sul formato. Ricordatevi solo di ridimensionare il nuovo disco clonato e non quello originale. Tenete presente che la dimensione è espressa in MB. Credo che si possa usare ad esempio 51200
così come 50G
(o eventualmente “GB”). C'è anche l'opzione --resizebyte
che può essere usata per esprimere la dimensione in byte.
Mostra informazioni VDI sul disco clone ridimensionato.
Comando in ingresso: 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>
Questo è tutto! Da qui quello che dovete fare è aggiungere questo disco clonato come nuovo VDI per la VM. Lo si fa all'interno di VirtualBox. Non mi addentrerò in questo. Se siete stati in grado di leggere e capire questo finora, allora probabilmente non avete bisogno di ulteriori indicazioni. Potete cancellare il vecchio file “fisso” o lasciarlo come backup. Assicuratevi di testare il nuovo file VDI prima di cancellare il file originale.
Nota! Non vedrete immediatamente la nuova dimensione del disco clonato. Devi avviare la VM con esso, e poi devi usare il tuo strumento di gestione delle partizioni per espandere la tua partizione per riempire il disco virtuale (o creare più partizioni). Per Windows, basta eseguire diskmgmt.msc
e sarete in grado di espandere la partizione lì dentro.
Screenshot
Riferimento