VirtualBox Images schrumpfen

VirtualBox Images schrumpfen
22.04.2009 20:25

Dynamisch wachsende VirtualBox-Festplatten scheinen ihre Aufgabe sehr ernst zu nehmen: Sie wachsen allmählich, auch wenn der tatsächliche Platzbedarf im Image nach einer Aufräumaktion wieder geringer wird.

Mit mehr oder weniger Erfolg konnte man auf der Kommandozeile einen Befehl absetzen, der ein Image wieder zusammenschob:

 VBoxManage modifyhd <image.vdi> compact

Ob das Image danach tatsächlich kleiner wurde, hing davon ab, ob der freie Bereich aus NULL-Bytes bestand. Wenn Dateien normal gelöscht werden, wird in der Regel nur der Verzeichniseintrag nicht jedoch der eigentliche Datenbereich auf der Festplatte gelöscht. Diese Bereiche enthalten somit Werte ungleich NULL und werden beim Zusammenschieben des Images nicht berücksichtigt. Der Einsatz des Kommandos hat dann keinen Effekt.

Um den freien Bereich im Image mit Nullen zu schreiben, kann das Programm zerofree genutzt werden (ist im Ubuntu-Repository enthalten). Um eine virtuelle Festplatte damit zu "nullen", darf sie nicht read/write gemountet sein - heißt: es funktioniert nicht im laufenden System. Da hilft ein Live-System weiter - im einfachsten Fall die Installations-CD von Ubuntu. Schritt-für-Schritt zum Einsatz von zerofree in einem laufenden System - hier auf /dev/sda1:

  1. zerofree installieren (sudo apt-get install zerofree)
  2. Live-Image im virtuellen System booten
  3. virtuelle Festplatte mounten (sudo mount /dev/sda1 /mnt)
  4. zerofree ins Live-System kopieren (sudo cp /mn/usr/sbin/zerofree /usr/sbin)
  5. virtuelle Festplatte unmounten (sudo umount /mnt)
  6. zerofree einsetzen (sudo zerofree /dev/sda1)

In der VirtualBox-Version 2.2 gibt es die Option compact nicht mehr. Es gibt eine Fehlermeldung mit dem Hinweis, dass die Option in Zukunft wieder unterstützt wird (He?). Hier hilft ein kleiner Trick weiter: das VirtualBox-Kommando clonehd. Damit wird eine Kopie einer virtuellen Festtplatte angelegt. NULL-Bytes werden dabei nicht übernommen. Das aufgeräumte und "genullte" Image ist nach dem klonen dann kleiner. Um eine virtuelle Festplatte zu klonen wird der folgende Befehl im Terminal abgesetzt:

 VBoxManage clonehd <originalImage.vdi> <cloneImage.vdi>

Der Einsatz von zerofree lässt das Image kurz bis zur Maximalgröße wachsen. Wer das vermeiden will, der kann zwei Fliegen mit einer Klappe schlagen, indem er eine neue virtuelle Festplatte erzeugt und mit einem entsprechenden Tool (z. B. tar) das vollständige Dateisystem vom alten Image in die neue Festplatte kopiert. Dann erübrigt sich zerofree und clonehd. Und der Platzbedarf ist garantiert nicht größer als der tatsächlich benötigte. Der Nachteil dieser Methode ist aber, dass man auf die Paritionierung der Festplatte (z. B. sollte die Partition für swap nicht vergessen werden) selbst acht geben und sie gegebenenfalls im neuen Image manuell anlegen muss.


Kommentare
VirtualBox kann jetzt wieder...
Marcus Nasarek, Samstag, 02. Mai 2009 22:15:45
Ein/Ausklappen

In der aktuellen Version von VirtualBox (2.2.2) gibt es die Option für das Zusammenschieben einer vituellen Festplatte wieder:
VBoxManage modify <image.vdi> --compact



Bewertung: 186 Punkte bei 38 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: VirtualBox kann jetzt wieder...
Marcus Nasarek, Samstag, 02. Mai 2009 22:16:50
Ein/Ausklappen

modifyhd muss es natürlich heißen


Bewertung: 176 Punkte bei 40 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zum Autor