h1

Defragmentieren von HFS+ (Teil 3: Defragmentieren)

19. Oktober 2007

Maßnahmen um bereits bestehende Fragmentierung zu reduzieren.

Nachdem die Problemfelder wie im vorhergehenden Artikel beschrieben eingegrenzt wurden, rücke ich jetzt der Fragmentierung gezielt zu Leibe. Die beiden Problemordner Virtual Machines und Movies verschiebe ich per Drag&Drop auf eine externe Tempdisk.

Danach schaut es auf dem Volume schon viel besser aus. Ich habe dort 109 GB frei und bekomme die folgende Liste der „>8 extents“:

$ ./check_frag.pl frag-109GBfree.log
...
30 * 41521152 * Macintosh HD:/Users/ingo/Pictures/iPhoto Library/Thumb32Segment.data
...
39 * 60501442 * Macintosh HD:/Users/ingo/Music/iTunes/iTunes Music/Podcasts/Der RTL AKTUELL Video-Podcast/RTL AKTUELL  18.10.2007.mp4
42 * 2933719040 * Macintosh HD:/Users/ingo/BnB-VUM-Fotoarchiv.img
...
102 * 441984911 * Macintosh HD:/Users/ingo/Library/Logs/DiskUtility.log
198 * 708837376 * Macintosh HD:/.Spotlight-V100/ContentIndex.db
446 * 117723136 * Macintosh HD:/.Spotlight-V100/.store.db
509 * 117723136 * Macintosh HD:/.Spotlight-V100/store.db
Summary: 55 files with more than 8 extents found.

Nur noch 55 Dateien – eine nette Zwischenbilanz. Da mich iPhoto bezüglich Performance besonders enttäuscht hat, baue ich dessen Miniaturencache neu auf (Apfel+Alt beim Programmstart halten). Das Ergebnis danach ist ein Zwiespältiges:

$ sudo ../hfsdebug -f | ./check_frag.pl | grep iPhoto
11 * 112413409 * Macintosh HD:/Users/ingo/Pictures/iPhoto Library/Library6.iPhoto

Es sind zwar die Caches jetzt schön am Stück, dafür ist auf einmal die Library fragmentiert. Subjektiv ist der Start von iPhoto jetzt schon deutlich flotter. Doch damit geben wir uns nicht zufrieden und forschen weiter. Eine Nachschau in dem vor Neuaufbau des Miniaturencache angelegten Logfiles bringt Klarkeit:

$ grep Library6\.iPhoto frag-109GBfree.log
... extents=8 ... path=Macintosh HD:/Users/ingo/Pictures/iPhoto Library/Library6.iPhoto

Die Library war schon mit 8 extents am Schwellwert, wurde vielleicht nur geringfügig vergrößert wodurch es ihr im letzten Block zu klein wurde und nun ist sie zum ersten mal in der durch check_frag.pl gefilterten Ausgabe zu sehen (in den Voreinstellungen zeigt check_frag.pl nur jene Dateien an, die auf mehr als 8 extents verteilt sind).

Was passiert wenn wir die Library neu aufbauen? Auch hier wieder beim Starten von iPhoto Apfel+Alt gedrückt halten und im Dialogfeld auswählen:

Neuaufbau der iPhoto Datenbank (Library6.iphoto)

Das Ergebnis danach ist nicht sensationell aber es hat was gebracht:

$ grep Library6\.iPhoto frag-iPhotoLibraryNeu.log
... extents=6 ... path=Macintosh HD:/Users/ingo/Pictures/iPhoto Library/Library6.iPhoto

Sechs statt 9 extents – durchaus ein Gewinn. Aber warum legt das HFS+ diese Datei nicht gleich auf einen zusammenhängenden Block ohne Extents? Da muss man sich wohl mal den „Freien zusammenhängenden Platz“ (Free Contiguous Space) ansehen – vielleicht gibt es einfach keinen Block in dieser Größe? Auch dazu gibt es von hfsdump eine schöne Tabelle, die mit einem kleinen Perlscript nochmals handlicher wird. Mit hfsdump –free >free-iPhotoLibraryNeu.log erzeugen wir uns zunächst einmal ein Zustandsprotokoll – das hat aber einige Tausend Zeilen, die wir nun mit dem Perlscript (siehe Link am Ende) auf eine übersichtliche Größe reduzieren.

$ -iP./check_contiguous.pl free-iPhotoLibraryNeu.log
7080 MB
1020 MB
1230 MB
1570 MB
1010 MB
1140 MB
2580 MB
1060 MB
1550 MB
1030 MB
1100 MB
2430 MB
1830 MB
Number Free Contigous Blocks with at least 1000 MB Space: 13

Also da wären doch wirklich genug freie Blöcke, die Library6.iphoto hat gerade mal 107 MB. Vielleicht legt ja iPhoto die Datei nicht neu an, wenn es sie neu generiert? Also ein Versuch kann nicht schaden, und ich kopiere die Datei im Finder um wie in einem der älteren Artikel beschrieben. Und das war dann die Lösung: Die Datei wird als ein Block ohne extents auf die Platte geschrieben. Alles was man noch sieht, wenn man nach Library6.iPhot „grept“, ist die in den Trash gewanderte alte Datei. Dort liegt sie witziger Weise auf drei extents verteilt vor:

$ grep Library6.iPhoto frag-iPhotoLibraryUmkopiert.log
... extents=3 ... path=Macintosh HD:/Users/ingo/.Trash/Library6.iPhoto

Das subjektive Empfinden ist auch sehr positiv – iPhoto ist jetzt deutlich flotter beim Starten.

Und so weiter und so fort – ich denke es ist jetzt klar, wie man die Fragmentierung auf einer HFS+ Partition gezielt rückgängig machen kann.

http://ingo.lantschner.name/downloads/check_contiguous.pl

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: