Sommario:
VBoxManage.exe modifyhd --resize
può aumentare (ma non diminuire) la dimensione logica dell'immagine del disco (la dimensione vista dal SO guest).
VBoxManage.exe modifyhd inputfile.vdi --compact
può diminuire il
dimensione dell'immagine del disco fisico (la dimensione del file immagine sul disco vista dal sistema operativo host). Questo tuttavia non modifica la dimensione del disco logico. Si noti che questo funziona solo se lo spazio libero è stato azzerato prima nel SO guest.
modifyhd
funziona solo con la variante di formato dinamico ("immagine allocata dinamicamente").
modifyhd
funziona solo con i formati di immagine VDI e VHD.
- Se si utilizzano istantanee, sarà necessario clonare l'ultima istantanea
VDI dalla sottocartella "Istantanee".
Per dettagli vedi sezione 8.23. VBoxManage modifyhd nel manuale.
Il motivo per cui la riduzione della dimensione del disco logico di un VDI non è ancora stata implementata è per prevenire il danneggiamento dei dati che potrebbe verificarsi e si otterrebbero VM non avviabili come risultato di esso. Pertanto, quando il --resize
viene utilizzata l'opzione, la nuova dimensione del disco deve essere maggiore della dimensione corrente. Non è consentito essere inferiore o uguale alla dimensione corrente. In altre parole, un disco da 40 GB può essere ridimensionato a 41 GB o superiore, non può essere ridimensionato a 40 GB (solo stupido) o 39 GB o meno.
Le vecchie versioni di VirtualBox creavano file VDI come formati "fissi" diversi. La nuova impostazione predefinita ora crea varianti di formato "dinamiche" quando vengono creati nuovi file VDI (immagine disco virtuale). (Sto indovinando questo è il caso dall'introduzione della variante di formato dinamico, qualunque sia la versione introdotta in.)
Quindi, quale messaggio di errore "l'operazione per questo formato non è ancora implementata" significa che il tuo file VDI utilizza la variante di formato "fisso". Per ovviare a questo problema dovrai clonare il tuo file VDI usando il clonehd
comando. Per visualizzare quale variante di formato è presente nel tuo file VDI al momento, puoi utilizzare il comando showhdinfo
comando.
Esempio di lavoro
Mostra le 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 si dice "predefinito fisso"? Ecco perché sputa l'errore sopra quando provi 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>
Ecco! Il vecchio file è stato ora clonato in un nuovo file. Poiché l'impostazione predefinita nelle nuove versioni di VirtualBox è di utilizzare la variante di formato "dinamico", non è necessario definirla esplicitamente. Sebbene, se si sta lavorando con una versione precedente di VirtualBox, si potrebbe voler impostare l'opzione su "dinamico" (se del tutto disponibile) per garantire una maggiore compatibilità e / o flessibilità con le versioni future di VirtualBox.
Mostra informazioni VDI sul disco clonato.
Comando di input: 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>
Guarda come ora dice "default dinamico"? Che carino!
(Nella nota a margine! La ragione per cui dice 7806 MB come dimensione fisica qui è perché avevo usato il --compact
opzione sul file VDI originale nel tentativo di applicare la conversione alla variante di formato dinamico. Solo qualcosa che ho letto sul forum di VirtualBox, presumibilmente avrebbe funzionato con le versioni precedenti, quindi ho pensato che potrei anche provarlo. 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 in formato. Ricorda semplicemente di ridimensionare il nuovo disco clonato e non quello originale. Tieni presente che la dimensione è espressa in MB. Credo che tu possa usare per es. 51200
così come 50G
(o eventualmente "GB"). C'è anche l'opzione --resizebyte
che può essere usato per esprimere la dimensione in byte.
Mostra le informazioni VDI sul disco clone ridimensionato.
Comando di input: 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 ciò che devi fare è aggiungere questa unità clonata come nuovo VDI per la VM. Lo fai all'interno di VirtualBox. Non entrerò in quello. Se sei stato in grado di leggere e capire fino a questo punto, probabilmente non hai bisogno di ulteriori indicazioni. Puoi cancellare il vecchio file "fisso" o lasciarlo come backup. Assicurati di testare il nuovo file VDI prima di eliminare il file sorgente originale.
Nota! Non vedrai immediatamente la nuova dimensione del disco clonato. È necessario avviare la VM con esso e quindi è necessario utilizzare lo strumento di gestione delle partizioni per espandere la partizione in modo da riempire il disco virtuale (o creare più partizioni). Per Windows, basta eseguire diskmgmt.msc
e sarete in grado di espandere la partizione lì.
Screenshots
Riferimento