Zusammenfassung:
VBoxManage.exe modifyhd --resize
kann die logische Größe des Datenträgerabbilds (die Größe, die vom Gastbetriebssystem angezeigt wird) erhöhen (aber nicht verringern).
VBoxManage.exe modifyhd inputfile.vdi --compact
kann die Größe des Images der physischen Festplatte verringern (die Größe der Image-Datei auf der Festplatte, wie sie vom Host-Betriebssystem angezeigt wird). Dies ändert jedoch nicht die Größe der logischen Festplatte. Beachten Sie, dass dies nur funktioniert, wenn der freie Speicherplatz zuerst im Gastbetriebssystem auf Null gesetzt wurde.
modifyhd
Funktioniert nur mit der dynamischen Formatvariante ("dynamisch zugewiesenes Bild").
modifyhd
Funktioniert nur mit den Bildformaten VDI und VHD.
- Wenn Sie Snapshots verwenden, müssen Sie die neueste Snapshot-VDI aus dem Unterordner "Snapshots" klonen.
Details siehe Abschnitt 8.23. VBoxManage modifyhd im Handbuch.
Der Grund, warum das Verringern der Größe der logischen Festplatte eines VDI noch nicht implementiert wurde, besteht darin, Datenbeschädigungen zu vermeiden, die auftreten können und die dazu führen, dass VMs nicht mehr gestartet werden können. Wenn die --resize
Option verwendet wird, muss die neue Datenträgergröße daher größer als die aktuelle Größe sein. Es darf nicht kleiner oder gleich der aktuellen Größe sein. Mit anderen Worten, eine 40-GB-Festplatte kann nur auf eine Größe von 41 GB oder mehr, nicht auf eine Größe von 40 GB (das ist nur dumm) oder auf eine Größe von 39 GB oder weniger angepasst werden.
Alte Versionen von VirtualBox haben VDI-Dateien als "feste" Formatvariante erstellt. Die neue Standardeinstellung besteht nun darin, "dynamische" Formatvarianten zu erstellen, wenn neue VDI-Dateien (Virtual Disk Image) erstellt werden. (Ich vermute, dass dies seit der Einführung der dynamischen Formatvariante der Fall ist, in welcher Version auch immer.)
Die Fehlermeldung "Vorgang für dieses Format ist noch nicht implementiert" bedeutet also, dass Ihre VDI-Datei die Formatvariante "Fest" verwendet. Um dieses Problem zu umgehen, müssen Sie Ihre VDI-Datei mit dem clonehd
Befehl klonen . Mit dem showhdinfo
Befehl können Sie anzeigen, in welcher Formatvariante sich Ihre VDI-Datei gerade befindet .
Arbeitsbeispiel
VDI-Informationen zur aktuellen Festplatte anzeigen.
Eingabebefehl: 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>
Sehen Sie, wo es heißt "fester Standard"? Aus diesem Grund wird der obige Fehler bei dem Versuch, die Größe zu ändern, ausgeblendet.
Klonen Sie die alte VDI-Datei in eine neue VDI-Datei.
Eingabebefehl: 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à! Die alte Datei wurde jetzt in eine neue Datei geklont. Da die Standardeinstellung in neuen Versionen von VirtualBox die Verwendung der "dynamischen" Formatvariante ist, müssen Sie dies nicht explizit definieren. Wenn Sie jedoch mit einer älteren Version von VirtualBox arbeiten, möchten Sie möglicherweise die Option auf "dynamisch" setzen (falls überhaupt verfügbar), um eine bessere Kompatibilität und / oder Flexibilität mit zukünftigen Versionen von VirtualBox sicherzustellen.
VDI-Informationen zur geklonten Festplatte anzeigen.
Eingabebefehl: 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>
Sehen Sie, wie es jetzt heißt "Dynamic Default"? Wie schön!
(Nebenbei bemerkt! Der Grund, warum hier 7806 MB als physische Größe angegeben sind, ist, dass ich die --compact
Option für die ursprüngliche VDI-Datei verwendet habe, um die Konvertierung in eine dynamische Formatvariante zu erzwingen. Nur etwas, das ich angeblich im VirtualBox-Forum gelesen habe Hätte mit älteren Versionen gearbeitet, also dachte ich, ich könnte es genauso gut versuchen. Es hat nicht funktioniert.)
Ändern der Größe der geklonten Festplatte
Eingabebefehl: 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>
Erfolg! Kein Formatbullshitting mehr. Denken Sie daran, die Größe der neuen, geklonten und nicht der ursprünglichen Festplatte zu ändern. Beachten Sie, dass die Größe in MB angegeben wird. Ich glaube du kannst zB 51200
auch 50G
(oder evtl. "GB") verwenden. Es gibt auch die Option, mit --resizebyte
der die Größe in Bytes ausgedrückt werden kann.
Anzeigen von VDI-Informationen zur verkleinerten Klon-Festplatte.
Eingabebefehl: 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>
Das ist es! Ab hier müssen Sie dieses geklonte Laufwerk als Ihr neues VDI für die VM hinzufügen. Das machst du in VirtualBox. Ich werde nicht darauf eingehen. Wenn Sie dies bisher gelesen und verstanden haben, brauchen Sie wahrscheinlich keine weiteren Anleitungen. Sie können entweder die alte "feste" Datei löschen oder als Backup behalten. Stellen Sie sicher, dass Sie die neue VDI-Datei testen, bevor Sie die ursprüngliche Quelldatei löschen.
Hinweis! Die neue Größe der geklonten Festplatte wird nicht sofort angezeigt. Sie müssen die VM damit booten und dann mit Ihrem Partitionsverwaltungstool Ihre Partition erweitern, um die virtuelle Festplatte zu füllen (oder weitere Partitionen zu erstellen). Für Windows einfach ausführen diskmgmt.msc
und Sie können die Partition dort erweitern.
Screenshots
Referenz