VirtualBox: Größe einer VDI verringern

Verwendet man bei einer Virtuellen Maschine unter VirtualBox eine dynamisch wachsende VDI als virtuelle Festplatte, kommt man mitunter irgendwann in die Situation, das man diese wieder verkleinern möchte.

Als Beispiel dient die VDI eines virtualisierten Debian GNU Linux die mit einer maximalen Größe von 80 GB festgelegt war. Da in der Zwischenzeit der Speicherplatz auf dem Host-Computer allerdings relativ knapp geworden ist, sollte die VDI verkleinert werden.

Innerhalb der virtuellen Maschine wurde mittels „df -H“ überprüft, wie viel Speicherplatz tatsächlich belegt ist, das sind gerade mal gute 5 GB. So gibt es mehr als genügend Raum, um die VDI zu verkleinern.

Eine Voraussetzung für das Unternehmen ist allerdings, das der freie Speicherplatz mit Nullen gefüllt ist. Damit dies sicher der Fall ist, wurde „zerofree“ installiert und im Recovery Mode nach dem Aushängen der Partiton ausgeführt.

zerofree -v /dev/sda1

Für Windows-VMs kann man „sdelete“ verwenden.

Anschließend wurde die virtuelle Maschine heruntergefahren und in einer Eingabeaufforderung aus dem Ordner

C:\Program Files\Oracle\VirtualBox

des Windows 10-Hosts folgender Befehl ausgeführt:

vboxmanage modifymedium disk "C:\Users\%username%\VirtualBox VMs\Debian\Debian.vdi" --compact

Dieser Befehl kann auch auf VHDs angewendet werden.

Der Fortschritt sieht so aus:

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

Je nach Größe und Performance dauert es eine Weile, bis der Vorgang abgeschlossen ist.

Anschließend kann man die virtuelle Maschine wieder starten. Möchte man verhindern, das die VDI wieder so starrk anwächst kann man beispielsweise mit GParted Live die Partition verkleinern.

Links und Quellen:

VirtualBox – Manual – Chapter 8. VBoxManage – 8.22. VBoxManage modifymedium

How-To Geek – How to Shrink a VirtualBox Virtual Machine and Free Up Disk Space

2 Kommentare

  • Ist das nicht bei jedem Verkleinern viel Schreiblast für eine SSD (Thema Wear-Levelling)? Oder werden nur die Sektoren genullt, die nicht bereits genullt sind?

  • Der VirtualBox-Befehl kann nur die Bereiche der VDI/VHD verkleinern, die genullt sind, andernfalls bleiben sie belegt und in Folge die VDI/VHD entsprechend größer. Man kann den Befehl ohne voriges zerofree bzw. sdelete und co. laufen lassen und sich das Ergebnis anschauen. Ja, während des Vorgangs ist eine gewisse Last da, es wird allerdings auch nicht der ggf. noch übrige bislang nicht belegte Speicherplatz einer VDI/VHD nun gefüllt, die Datei bleibt bei ihrer letzten Größe, soweit zumindest meine Beobachtung und Erfahrung. In diesem Fall waren von der maximalen Größe von 80 GB lediglich gut 40 GB physikalisch belegt, nach dem Nullen und compact sind es nur noch 10 GB.

    Von einer ggf. verwendeten SSD weiß der VirtualBox-Befehl ja nichts, daher können dann entsprechende Mechanismen so nicht greifen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.