Vor kurzem ist mir aufgefallen, dass die VDI Dateien meiner VMs in Virtualbox relativ viel Platz auf dem Host System verbrauchen. Die VDIs sind dynamisch, jedoch wachsen die Dateien nur an und werden nicht automatisch verkleinert.
In einem Linux Gast muss man dazu den freien Platz mit Nullen überschreiben. Das geschieht relativ einfach mit
dd if=/dev/zero of=wipefile bs=1024x1024; rm wipefile
Man kann das auch mit Root Rechten durchführen um ggf. für Root reservierten Speicherplatz auch mit Nullen zu beschreiben.
Danach die VM ausschalten um auf dem Host System mit folgendem Befehl die VDI Datei verkleinern.
VBoxManage modifyvdi --compact /pfad/zur/datei/file.vdi
Sollte man einen Windows Gast betreiben empfiehlt sich das kleine Programm sdelete welches direkt bei Microsoft verfügbar ist. Die neuere 2.01 Version ist endlich wieder ähnlich schnell wie 1.61. Für ältere Windows Version gibt es auch eine alte Version von sdelete, jedoch nur noch im web archive.
Das Programm verwendet man auf der Befehlszeile cmd oder mit der PowerShell.
sdelete64.exe -z c:
Danach auch mit VBoxManage die VDI Datei verkleinern.