Virtuelle Maschinen komprimieren (VirtualBox-VDI-Dateien)

Wegen eines strategischen Fehler stehe ich dumm da: Win 7 Pro läuft auf einem Mainboard, das Virtualisierung nicht hardwareseitig unterstützt. Und auf dem Rechner, dessen Mainboard das tut, habe ich Win 7 Home installiert, ich Nase. Und ich habe wenig Lust, den ganzen Klamauk jetzt jeweils neu zu installieren. Daher fällt Microsofts Windows Virtual PC leider für mich flach, es sei denn, jemand findet einen Tipp für mich, wie ich Win 7 Pro zu Home downgrade und Home zu Pro uppe, als Lizenztausch, also ohne neu installieren zu müssen.

Aus diesem Grunde – und weil ich VMware irgendwann den Rücken kehrte und Parallels (nutze ich auf dem Mac) ziemlich suboptimal finde, habe ich mich Sun VirtualBox virtualbox.org zugewandt. Hier ein kurzer Kurztest: Deutlich schlechter als VMware und Parallels. Aber gratis. Und letztlich reicht mir, was es kann, und für die paar Macken finde ich auch noch Workarounds. Ich betreibe darin zwei Linuxe, zwei XPs, ein Vista, ein 7. Kann man nehmen.

VirtualBox speichert die OSse auf virtuellen Datenträgern, das sind Containerdateien mit der Endung .vdi (wahrscheinlich Virtual Disc Image oder so). Diese werden “wachsend” konfiguriert, das heißt, sie gaukeln dem jeweiligen Gast-OS anfangs nur vor, sie wären 10 oder 20 GByte groß, wachsen aber erst dann wirklich auf diese Größe an, wenn mehr als die derzeit real vorhandene Container-Größe benötigt wird. So weit, so gut, aber natürlich ist das ineffektiv und früher oder später hat man Container mit 8 bis 20 GByte, obwohl nur 4 bis 10 GByte drin stecken. Das könnte einem egal sein, aber ich 7zip-pe das Zeug, um Versionsstände aufzubewahren, und das ist jedesmal ein ewiger Akt und auch externe Festplatten sind mal voll.

Und so schrumpft man eine VDI-Datei:

  • Erstmal Windows abspecken. Raushauen, was keiner braucht. Temporäre Dateien löschen, Caches löschen, Papierkorb löschen, “Datenträger bereinigen”.
  • Dann checken: Datenträger überprüfen.
  • Datenträger defragmentieren, ganz normal mit Bordmitteln.

Nun braucht man das Tool Sdelete. Es shreddert freie Dateibereiche. Ja, das kann Eraser auch, aber Eraser schreibt nur Zufallszahlen, sdelete dagegen schreibt Nullen, und die sind wichtig, weil (fast) jede übliche Komprimierungsmethode auch Methoden verwendet, wo der Kompressionstrick darin besteht, statt “0000000000” einfach “10×0” zu schreiben.

  • Auf Kommandozeile:  sdelete -c c: ausführen.
  • Dauert ein bisschen. Keine Sorge: “Gelöscht” wird nur, was ohnehin gelöscht ist.
  • VM runterfahren, VirtualBox beenden.

Nun braucht man ein Tool aus VirtualBox, das nur auf Kommandozeile zu haben ist: VboxManage.exe im VirtualBox-Verzeichnis. Man füttert das Tool mit dem Parameter clonehd quelldatei zieldatei. Beim “Klonen” optimiert das Tool das HD-Image, daher schrumpft dabei der VDI-Container.

  • Der Aufruf ist also zum Beispiel
    VboxManage clonehd win7_nov.vdi win7_dez.vdi
  • Die vorherige Datei (unkomprimierte) nicht löschen – das Cloning könnte u.U. nicht geklappt haben. Erst löschen, wenn Sie sicher sind, dass die geklonte Version funktioniert.
  • In VirtualBox über “Datei, Manager für virtuelle Medien” die bisherige Festplatte (win7_nov.vdi im beispiel) erst freigeben, dann entfernen. Dann erst die neue (win7_dez.vdi) hinzufügen. Ansonsten gibt’s Gemaule von Vbox.
  • Anschliessend in der Einstellung der VM die neue Festplatte (win7_dez.vdi) einbinden.
  • Wenn man das einmal pro Monat macht, hat man nicht nur stets platzsparende Container, sondern auch monatliche Versionen. Braucht sicher nicht jeder – ich finds nützlich.
  • Die alte Containerdatei mit 7zip auf Stufe “ultra” zippen. Selbst nach Defragmentierung und “clonehd” ist das Ergebnis eine Kompression auf 50, oft nur 40 (XP, Win7), teils 30 Prozent (Vista, irgendwas ist mächtig aufgebläht).

Funktionierte bei mir auf Anhieb super, nur das neu einfummeln der Medien war nervig.

Andreas Winterer

Andreas Winterer ist Journalist, Buchautor und Blogger und beschäftigt sich seit 1992 mit Sicherheitsthemen. Auf unsicherheitsblog.de will er digitale Aufklärung zu Sicherheitsthemen bieten – auf dem Niveau 'normaler Nutzer' und ohne falsche Paranoia. Auf der Nachbarseite passwortbibel.de geht's um Passwörter. Bitte kaufen Sie eines seiner Bücher.

Das könnte Dich auch interessieren …

3 Antworten

  1. dbd sagt:

    Auch wenn der Beitrag schon über zwei Jahre alt ist, ist dies immer noch ein gut praktikables Vorgehen zur .vdi-Sicherung/Archivierung.
    Zu “irgendwas ist mächtig aufgebläht”: bei den vorbereitenden Aufräumarbeiten in dem zu sichernden Windows auch vorübergehnd (wenn vorhanden) die Auslagerungsdatei deaktivieren und prüfen ob die Swapdatei danach gelöscht ist, ebenso eine eventuelle hyberfil.sys
    Für manche Szenarien bietet sich eine eigene swap.vdi an, die sogar von mehrern VMs (nicht gleichzeitig) genutzt werden kann.

    • Andreas sagt:

      Super, danke für die Tipps! (Und auf eine swap.vdi hätte ich ja eigentlich selbst auch kommen können/müssen… :-)

    • Andreas sagt:

      Habe es ausprobiert: Es ergibt sich – zumindest bei VMware Player – kein signifikanter Unterschied in der Größe der VMDK-Datei bei Swapfile auf C: vs. Swapfile in anderer virtueller Datei.