Virtualbox Image schrumpfen

Virtualbox ist prima geeignet um ein Ubuntuserver für die Entwicklung zu verwenden. Besonderer Komfort erzielt man dabei wenn man das Image auf einem USB-Stick auch unterwegs am Laptop nutzen kann.

Doch im Gegensatz zu dem verschwenderischen Platz auf Festplatten stösst man auf einem USB-Stick schnell an ein Speicherlimit. Die Datenmengen steigen erst recht wenn man häufige SVN Updates des verwendeten Frameworks lädt.

"Aber ein SVN-Update löscht doch vorher die Dateien."

Ja richtig die Datei wird gelöscht und ist für den Benutzer nicht mehr erreichbar. Aber was passiert dabei intern? Der Eintrag im Filesystem wird gelöscht. Doch die Daten in Form von Bytes verbleiben im Image. Das heisst es steht an der Stelle an der vorher die Datei stand ein Salat aus Nullen und Einsen.

Damit steigt das Volumen eines dynamischen Imagefiles immer mehr an. Jetzt hat Virtualbox eine Möglichkeit diese Images zu komprimieren. Allerdings werden dabei nur die Teile des Image reduziert die nur mit Nullen beschrieben sind. Für unser "verschmutzes" Image also nicht anwendbar.

Mit dem folgenden Tutorial möchte ich erklären wir es trotzdem gehen kann. Auch nicht so linuxfeste Nutzer können bei strikter Einhaltung der Anleitung es schaffen das Image zu verkleinern und Platz für neue Daten zu schaffen. Trotzdem sollte nicht verschwiegen werden, dass es Möglicherweise zu Fehlern kommen kann, also bitte VORHER ein Backup vom Image anlegen.

Zu erledigende Punkte

  1. zerofree Datei downloaden von: http://intgat.tigress.co.uk/rmy/uml/zerofree-1.0.1.tgz
  2. Datei entpacken:
    tar -xvzf zerofree-1.0.1.tgz
  3. In das Zerofree Verzeichnis wechseln:
    cd zerofree-1.0.1
  4. Benötigte Bibliotheken gcc und ext2fs installieren:
    sudo apt-get install build-essential
    sudo apt-get install e2fslibs-dev
  5. C-Code Kompilieren:
    make
  6. Ausführbare Datei ins /usr/bin Verzeichnis kopieren:
    sudo cp zerofree /usr/bin
  7. Im Runlevel 1 starten:
    sudo telinit 1
  8. "root" im Wiederherstellungsmenu auswählen.
  9. Prüfen welche Laufwerke vorhanden sind:
    df
  10. Laufwerk nur lesend mounten:
    mount -n -o remount,ro -t ext2 /dev/sda1 /
  11. Filesystem prüfen
    fsck -f /dev/sda1
  12. Gelöschte Dateien nullen:
    zerofree /dev/sda1
  13. Nochmals das Filesystem prüfen
    fsck -f /dev/sda1
  14. Linux Beenden:
    halt
  15. In der Windows Konsole das Komprimieren aufrufen:
    "C:\Program Files\Sun\VirtualBox\VBoxManage" modifyvdi vdi_file.vdi compact
Meine Mission

Ziel meiner Veröffentlichungen ist es, meine Begeisterung für die Programmierung und das über die Jahre gewonnene Wissen mit anderen Entwicklern zu teilen. Dabei ist es mir wichtig, Lösungen zu thematisieren für die ich in Suchmaschinen keine Antworten finden konnte. Außerdem versuche ich die von mir veröffentlichten Extensions an Beispielen zu erläutern.

evoWeb © 2019