macfidelity

|

rethinking the think-different thing

mac | How to shrink a virtual linux harddisk in VMware Fusion

December 10th, 2009 at 18:41

20091210_vmware_fusion_01

Der regelmäßige Besucher wird es wissen – ein Thema welches hier in regelmäßigen Abständen wieder hochkommt ist VMware Fusion.

Im Regelfall ging es in der Vergangenheit eher darum wie man Mac OS X unter Mac OS X in Betrieb nehmen kann – diesbezüglich verweise ich hier nochmal auf die Artikel

Ein Aspekt den ich in den meisten virtuellen Maschinen einsetzte sind wachsende Festplatten – dies hat Vor- und Nachteile. Da Performance für mich meist nicht das Killerargument ist ziehe ich eben wachsende Festplatten vor … die über den Daumen gepeilt in der Theorie nur so viel Platz einnehmen sollten wie das virtuelle OS derzeit auch wirklich belegt.

In der Praxis zeigt sich jedoch das speziell virtuelle Linux Installationen bei mir bei Bedarf zwar ihre Festplatte im Rahmen der definierten Maximalgröße anpassen – dieser Vorgang aber mehr oder weniger nur in die Wachstumsrichtung wirklich reibungslos läuft – zumindest wenn man wie ich ein Linux ohne X und damit auch ohne VMware Tools betreibt ;)

Daher im folgenden mal ein Ansatz wie man eine virtuelle Linux Festplatte unter Mac OS X und VMware Fusion wieder gesund schrumpfen kann.

Ausgangsszenario

  • Mac OS X 10.6.x
  • VMware fusion 2.x
  • Ubuntu 8.04 TLS
  • lt. Ubuntu sind knapp 13 GB der max 64 GB großen virtuellen HD belegt
  • lt. Mac OS X ist die virtuelle Maschine 51 GB groß
  • Snapshots sind keine mehr enthalten

Relevant ist wohl die Info dass in der Vergangenheit diverse Snapshots angelegt wurden – diese teilweise wieder entfernt wurden und dies sicherlich zur gesamt Ausgangslage beitragen hat.

Shrink Ansätze in VMware Fusion

Einstellungen der virtuellen Festplatte

VMware bietet innerhalb den Harddisk-Einstellungen einer virtuellen Maschine die Möglichkeit diese mittels der Funktion Clean Up Disk zu bereinigen.

20091210_vmware_fusion_02
Vorsicht das Bild entspricht nicht der besprochenen virtuellen Maschine

Laut VMware funktioniert der Spaß allgemein gesehen dann ganz einfach

Sollte ein Disk Cleanup Sinn ergeben wird die Option angeboten – ansonsten ist diese Funktion ggf ausgegraut und mit dem Hinweis versehen das die anwendung derzeit nicht notwendig ist.

Das klingt schön – brachte mir aber bei der obig erwähnten virtuellen Maschine – ohne VMware Tools (und ohne X) relativ wenig da die Funktion zwar anstoßbar war – aber die Fusion Diagnose zuvor schon stets klar ausdrückte

Macht hier keinen Sinn

und endete auch leider nicht erfolgreich.

Defragmentierung

Soweit so gut – daher wurde es Zeit sich nach alternativen Ansätzen umzusehen. Mein erster Gedanke ging in Richtung Defragmentierung – wenngleich dies in derart heftiger form eigentlich auf der virtuellen ext3 Platte nicht hätte passieren sollen.

Anbei noch ein Support Dokument von VMware mit Gedanken zum Thema Defrag.

Ich hatte das Thema an dieser Stelle erstmal beiseite gelegt und wollte mir noch die sonstigen VMware Fusion Boardmittel ansehn was beim Thema

vmware-vdiskmanager

Dieses Tool wird mit VMware Fusion mitinstalliert und erlaubt es dem geneigten Terminaluser auch aus der Kommandozeile (irgendwie liebe ich dieses Wort) heraus Änderungen an den virtuellen Festplatten durchzuführen.

Wer diesbezüglich Interesse hat sollte sich mal unter

/Library/Application Support/VMware Fusion/

VMware selbst dokumentiert einige Beispiele u.a. hier – wobei es fast nahe liegt sich einfach mal alle Optionen direkt im Terminal anzeigen zu lassen.

20091210_vmware_fusion_03

Obwohl die Idee naheliegend ist dass die im ersten Punkt gezeigte Clean Up Disk Funktion im Hintergrund genau auf vmware-vdiskmanager zurückgreift wollte ich auch diese Varianze mal durchspielen.

Daher habe ich sowohl ein Defrag (-d), wie auch ein Shrink (-k) und ein abschließend ein Check (-R) durchgeführt – jedoch war die virtuelle Festplatte nach diesen Operationen noch exakt so groß wie zuvor. Während dem reinen Defrag war diese interessanterweise sogar zeitweise über der definierten 64 GB Marke wenn man den Angaben des Finders ueberhaupt trauen will ;)

Die finale Lösung

Wie so oft liegt die Lösung in einer Mischung der Ideen … und die Idee kam im IRC Channel #vmware auf nachdem hin und her diskutiert wurde.

You need to zero out the unused disk space first before performing the shrink

Eh voila – da liegt der Hase begraben. Also fix ein innerhalb der virtuellen Maschine auf dd zurückgreifen

dd if=/dev/zero of=/empty_file; rm /empty_file

und darauf anschließend dann unter Mac OS X erneut ein Shrink mittels vmware-vdiskmanager anstoßen. Je nach Umfang der VM dauert der Vorgang dann doch recht lange ….. am Ende kam ich aber auf die erhoffte Reduktion von ursprünglich 51 GB auf ca 14 GB runter  – was in etwa meiner vorstellung entsprach.

Fazit

Interessant wäre natürlich wie unterschiedlich die Gesamtsituation inzwischen mit VMware Fusion 3 – letzlich kommt na aber auch mit Fusion 2 und etwas Terminal-Hackerei gut zum Ziel – wenngleich es mich wundert das man relativ wenig Informationen zu dem Problem findet – bzw die Foreneinträge meist 0815 Geschwaffel bieten – die aber letzlich leider oft nicht 100% zielführend sind.

Fragen über Fragen

Kennt ihr das Grundproblem ?

Wenn ja wie geht ihr damit um ?

Und seht ihr ähnliche Effekte bei Virtualbox oder Parallels ?

Tags: , , , , , , ,

11 Responses to “mac | How to shrink a virtual linux harddisk in VMware Fusion”

  1. fellowweb Says:

    Cooles Thema! Wirklich Nische, aber absolut klasse auf den Punkt. Danke!

    Hast Du schonmal einen Blick auf KDE 4.x angesehen (k.A., was aktuell ist; ich hatte, was jetzt gerade aktuell mit openSUSE 11.2 kam)? Ich fand das doch recht schick.

    ReplyReply
  2. Tweets die mac | How to shrink a virtual linux harddisk in VMware Fusion | macfidelity erwähnt -- Topsy.com Says:

    [...] Dieser Eintrag wurde auf Twitter von I want a Mac!, fidel erwähnt. fidel sagte: post:: mac | How to shrink a virtual linux harddisk in VMware Fusion http://bit.ly/7UnfGN [...]

  3. fidel Says:

    @fellowweb
    ich seh den aktuellen KDE Stand recht regelmäßig – im Kern jede Woche mind einmal ;)

    Mir geht es ähnlich wie dir ….. KDE 4 ist nicht unattraktiv – bietet ne Konfigurationsvielfalt die teilweise fast zu weit (Fenstereigenschaften und Effekte ….) geht – aber alles in allem ist das ne tolle Sache wenn man nen grafiklastingen WindowManager sucht.

    Wie geht’s dir dabei ? Und was war davor die letzte Version die du kanntest ?
    Weil wenn KDE 3 zuvor der letzte Stand bei dir war dann wirkt KDE 4 sicherlich wie ne neue – und vor allem recht bunte Welt oder?

    Gruss
    fidel

    ReplyReply
  4. fellowweb Says:

    @fidel:

    Im Detail konnte ich es mir noch nicht ansehen. Bisher habe ich primär mit GNOME unter Ubuntu Erfahrungen gesammelt. Als jetzt openSUSE 11.2 rauskam und es hieß, dass damit die erste richtig brauchbare Version von KDE 4.x kommt, konnte ich es mir jedoch nicht verkneifen, das Live CD-ISO mal in VMware Fusion zu starten. Schon chique.

    Davor hatte ich, glaub ich, KDE zum letzten Mal in der Version 3 gesehen. Es scheint mir schon ein gewaltiger Sprung zu sein. Mich würde freuen, wenn ein paar helle Köpfe mal einen wirklich innovativen Fenstermanager entwickeln würden. – Einige Pakete wie AWN, Docky oder GNOME Do haben mir schon ganz gut gefallen (z.B. die Wetter- oder Netzwerk-Widgets im Dock).

    Nutzt Du KDE ausschließlich/schwerpunktmäßig oder auch GNOME? Setzt Du Linux für irgendetwas “produktiv” ein? Oder mehr zum “Frickeln”/Erfahrung sammeln?

    ReplyReply
  5. Volker Says:

    Ich möchte ja nicht klugscheissen, aber müsste es nicht

    dd if=/dev/zero of=/empty_file; rm /empty_file

    heissen? :)

    ReplyReply
  6. fidel Says:

    @fellowweb:
    Witzig das man jetzt KDE wieder über Suse entdeckt- nachdem der Großteil der Distris bei Gnome angekommen ist – was die Defaultwahl angeht. Der optische Sprung von KDE3 auf KDE 4 war definitiv ein großer ;)

    Ich nutzte KDE eigentlich garnicht – aber im Umfeld verwenden das einige – teilweise seit > 10 Jahren und über diesen Weg habe ich immer mal wieder Kontakt dazu – weniger als Anwender / aber es reicht um neue UI-Entwicklungen im Ansatz im blick zu behalten.

    Linux verwende ich selbst privat nur sehr selten und wenn dann als Bastelwiese – at work kommen diverse Linux-Installationen zum Einsatz, jedoch sind diese ohne grafische Oberfläche o. Ä. …. da einfach unnötig für die Zwecke.

    Gruss
    fidel

    ReplyReply
  7. fidel Says:

    @Volker
    klugscheissen rockt in dem Fall – danke für den Korrektur-Hinweis.

    Irgendwann werd ich mich dahingehend anpassen dass ich hier ein Ticket System installiere – NUR für meine Typos ;)

    Gruss und guten Start ins Wochenende.
    fidel

    ReplyReply
  8. AndiSHFR Says:

    Hallöle.

    1. Speicherplatzbedarf beim Verkleinern
    Das der Speicherplatzbedarf für die virtuelle Festaplatte zeitweise über den 64 GB lag ist einfach zu erklären. Das Werkzeug von VMWare verkleinert die virtuelle Festplatte indem es einfach die (benutzten) Sektoren von der aktuellen Datei in eine neue Datei kopiert. Danach wird die alte Datei entfernt und die Zwischendatei zur Originaldatei umbenannt. Ist die virtuelle Festplatte in 2GB Stücke aufgeteilt (was ich ausschließlich auch tue) dann läuft die Verkleinerung separat pro 2GB Datei. Wenn Du eine virtuelle Festplatte hast die nicht in 2 GB Stücke unterteilt ist, dann benötigst Du beim Verkleinern ausreichen freien Speicherplatz. Im ungünstigsten Fall für soviel, wie die größe der virtuellen Platte ist.

    2. Ausfüllen des unbenutzen Dateisystemplatzes mit Null-Bytes
    Wenn eine Datei im Dateisystem gelöscht wird, dann wird gemeinhin lediglich die Verwaltungsinformation (i-node) als wieder frei markiert. Die wirklichen Inhalte der Datei verbleibt weiterhin auf der Festplatte. Das Werkzeug zum Verkleinern der virtuellen Festplatte kann aber nicht erkennen ob ein Sektor in der Festplatte zu einer gelöschten Datei gehört oder auch nicht. Im Sektor sind einfach Daten enthalten (die zu einer eventuellen früheren Datei gehören). Mit dem DD Befehl sorgst Du nun dafür, dass alle freien Sektoren die in dem mount-point (ich mache das dann auch pro mount-point mit einem kleinen Script) zur Verfügung stehen auch zu der neuen Datei empty_file gehören werden, jedoch komplett mit Null-Bytes gefüllt. Das Werkzeug zum Verkleinern muss diese Sektoren wohl speziell behandeln. Damit kommt dann eine echte Verkleinerung zu Stande.

    Gruss
    Andi

    ReplyReply
  9. fidel Says:

    @Andi

    bzgl 2:
    wenn ich es richtig verstehe – hätten die Onboard-Mittel von VMware Fusion die verkleinerung auch realisiert hätte ich ein X sowie die VMware Tools installiert.

    Im Falle dieser VM handelte es sich jedoch nur um nen kleinen Server – der auf beides verzichtete …. weshalb ich halt eine alternative Lösung benötigte auf die schnelle ;)

    Merci für die ausführungen
    Gruss
    fidel

    ReplyReply
  10. AndiSHFR Says:

    Ja genau.

    Die VMWare Tools in der VM machen das eben mit einer hübschen Oberfläche.
    Deswegen dauert das Verkleinert mit den Tools auch so ewig. Weil eben auch die freien Sektoren mit NULL-Bytes aufgefüllt werden. Wird auch nur mit wasser gekocht. ;-)

    Ich habe viele Debian Installationen in VM und kein X installiert und mache das immer so.

    ReplyReply
  11. fidel Says:

    @Andi
    klar …. alles Wasser – meist gleiche Temperatur ;)

    Ich dachte nur ich halte das mal fest – vor allem da ich anfangs selbst nicht an X & die VMware Tools dachte (die Sache mit dem Brett vor dem Kopf lässt grüßen)

    ReplyReply

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>