h1

Defragmentieren von HFS+ (Teil 2: Die Analyse)

19. Oktober 2007

Die Fragmentierung eines HFS+ Volumes sichtbar machen.

Gut, nach der Erkenntnis, dass man auf HFS+ halt (wie eigentlich auf jedem Filesystem) ein bisschen Platz lassen sollte (Empfehlungen sprechen von 10% der Partitionsgröße) stellt sich nun die Frage, wie ich die nun einmal vorhandenen Dateien wieder in einem Block auf die Platte geschrieben bekomme. Defragmentierungstools sind nicht so meines – zu unsicher. Da greife ich schon lieber auf die „Arme-Leute“-Variante zurück:

  1. Datei (z.B. Windows.vmdk kopieren – das kann auch im Finder passieren mit Maus ziehen und dabei Alt-gedrückt halten – das ergibt sagen wir die Datei Windows Kopie.vmdk
  2. Originaldatei (Windows.vmdk) löschen
  3. Kopierte Datei auf ursprünglichen Namen umbenennen

Vorsicht: Bevor man das macht, sollte man woanders (externe Platte, die abgesteckt ist, DVD, …) Kopien haben – irren ist menschlich und ein Datei schnell überschrieben.

Wenn nun genug nicht-fragmentierter Platz auf der Platte vorhanden war, dann wurde die Datei beim Neuanlegen defragmentiert abgelegt. Ich habe auf diesem Weg beispielsweise eine ca. 4 GB große, auf 341 extents (=Fragmente) verteilte Datei auf 60 extents reduzieren können – dabei waren knapp 36 GB Platz auf meiner Platte frei. Also schon ein Fortschritt aber noch kein Durchbruch.

Um zu wissen welche Dateien denn nun fragmentiert sind und wie viel nicht-fragmentierter Speicherplatz zur Verfügung steht, muss man das HFS+-Volumen analysieren. Dazu gibt es ein sehr feines Tool: hfsdebug.

Die Wahl des Namens hfsdebug ist vielleicht ein wenig irreführend, denn es dient ausschließlich zru Analyse und verändert eine Partition in keinster Weise – was mir zunächst einmal sehr recht ist.

Die Ausgabe von sudo hfsdebug -f -t 25 listet alle fragmentierten „forks“ (sinngemäß das selbe wie Dateien) auf und gibt am Ende eine Hitliste aus: Die 25 am meisten fragmentierten Files. Das ist ganz nett, aber was mich wirklich interessiert ist eine Liste aller Dateien, die mehr als 8 Fragmente haben, da es hierbei zu einer zusätzlichen Fragmentierung in den Dateideskriptoren kommt. Um das zu erreichen, habe ich ein kleines Perlscript geschrieben, das die Ausgabe von hfsdebug entsprechend filtert. Zusätzlich können auch als Parameter Logfiles zur Analyse übergeben werden, die zuvor mit dem Umleitungszeichen „>“ geschrieben wurden. Das im Beispiel unten verwendete frag.log wurde also so erzeugt:

$ sudo ./hfsdebug -f > frag.log

Die Ausgabe meines Perlscripts sieht dann in etwa so aus:

$ ./check_frag.pl frag.log 
ext. * bytes * path to file
9 * 85064460 * Macintosh HD:/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox_debug
...
13 * 711196672 * Macintosh HD:/Users/ingo/Virtual Machines/Networkdevice.lab/Networkdevice.vmwarevm/Ubuntu Server.vmdk
129 * 7737984000 * Macintosh HD:/Users/ingo/Movies/Wichtel.dv
193 * 1980039168 * Macintosh HD:/Users/ingo/Virtual Machines/Xubuntu 7.04 Securitydesktop/Xubuntu.vmwarevm/Xubuntu.vmdk
198 * 708837376 * Macintosh HD:/.Spotlight-V100/ContentIndex.db
284 * 5374368000 * Macintosh HD:/Users/ingo/Movies/Igls-Fru%0308hling 2007.dv
341 * 3561553920 * Macintosh HD:/Users/ingo/Virtual Machines/Windows Server 2003 Standard Edition.vmwarevm/Windows Server 2003 Standard Edition.vmdk
362 * 277938176 * Macintosh HD:/Users/ingo/Virtual Machines/Snort-Nagios-Server/Ubuntu Server.vmwarevm/Ubuntu Server-000001.vmdk
371 * 5764431766 * Macintosh HD:/Users/ingo/Virtual Machines/Basisinstallationen/SCOM2007.zip
435 * 116871168 * Macintosh HD:/.Spotlight-V100/.store.db
463 * 865861632 * Macintosh HD:/Users/ingo/Virtual Machines/Nagios 2.x/Ubuntu Server.vmwarevm/Ubuntu Server.vmdk
509 * 116871168 * Macintosh HD:/.Spotlight-V100/store.db
735 * 8195904000 * Macintosh HD:/Users/ingo/Documents/Tom und Jerry auf wilder Jagd (....).dv
3789 * 9484697600 * Macintosh HD:/Users/ingo/Virtual Machines/SCOM2007.vmwarevm/Windows Server 2003 Standard Edition.vmdk
Summary: 129 files with more than 8 extents found.

Man sieht also sofort, dass die Problemkandidaten vor allem in den Ordnern Virtual Machines und Movies zu finden sind – wär hätte das gedacht :-) Und die Fragmentierung ist heftig: Sowohl die Anzahl von 129 Files als auch die Verteilung des Spitzenkandidaten auf fast 4000 Fragmente sind eindeutig zu viel.

http://www.kernelthread.com/software/hfsdebug/

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: