Mit Defragfs optimieren Sie die Dateien im System. So laden Videos schneller, und große Archive öffnen sich im Handumdrehen.
Im Zeitalter der digitalen Inhalte wachsen auch in Haushalten die Datenbestände rasant Waren vor wenigen Jahren Festplatten mit einigen hundert GByte Größe vollkommen ausreichend, kommen mittlerweile immer häufiger Datenträger mit mehreren TByte Speicherkapazität zum Einsatz.
Obwohl herkömmliche Festplatten wartungsfrei arbeiten, fragmentieren die Daten bei zunehmender Laufzeit und zahlreichen Schreib- und Löschvorgängen. Das bremst nicht nur die Festplatte selbst, sondern das komplette System aus –manchmal merklich. Daher empfiehlt es sich insbesondere für Power-User auch unter Linux, gelegentlich die Datenbestände zu reorganisieren.
Zersplittert
Das Fragmentieren geschieht primär bei größeren Dateien, die mangels ausreichend großem, zusammenhängendem Speicherplatz nicht komplett in freie Bereiche einer Festplatte passen, sondern in unterschiedlichen Segmenten liegen (siehe Kasten “Theorie”). Beim Lesen einer solchen Datei fahren die Leseköpfe mehrfach an eine neue Position, um die einzelnen Teile zu sammeln. Dieses ständige Bewegen nimmt Zeit in Anspruch. Bei stark fragmentierten Datenträgern wächst der Zeitbedarf zunehmend.
Theorie
Eine Computerfestplatte braucht mindestens eine Partition, die wiederum ein Dateisystem enthält. Üblicherweise befinden sich auf Speicherboliden mit einigen hundert GByte Kapazität mehrere Partitionen – etwa, um Betriebssystem und Daten sauber zu trennen.
In jeder Partition ist dabei das Dateisystem für die Struktur der Daten zuständig, wobei es diese in Blöcken auf der Festplatte ablegt. Ein Block hat bei kleineren Festplatten einen Umfang von 512 Byte.
Seit relativ kurzer Zeit bieten Hersteller Advanced Format Drives (AFD) an, deren Blockgröße bei 4 KByte liegt. Diese Festplatten weisen sehr hohe Speicherkapazitäten von mehreren hundert GByte bis hin zu einigen TByte auf und verfügen über eine Elektronik, die für ältere Betriebssysteme eine Blockgröße von 512 Byte emuliert.
Doch nicht nur die Daten der Anwender tragen zur Fragmentierung bei, auch das Betriebssystem selbst leistet dem Zersplittern Vorschub: Experimentierfreudige Power-User, die gern und häufig Software ausprobieren, tragen mit der Installation neuer Programme und deren anschließendem Löschen ebenfalls ihren Teil bei.
Partitionen, deren Kapazität zu deutlich mehr als der Hälfte belegt ist, fragmentieren Daten ebenfalls stärker, da das System hier aufgrund des verminderten freien Speicherplatzes größere Dateien auf immer mehr unterschiedliche Bereiche aufteilt.
Letztendlich verschlechtern unter Umständen eigentlich nützliche Tools wie Bleachbit [1] oder Rpmorphan [2] durch das Entfernen nicht mehr benötigter Dateien die Situation, da das Löschen zwischen belegten Segmenten wiederum versprengte freie Blöcke erzeugt.
Prophylaxe
Um das Fragmentieren von Dateien möglichst gering zu halten, bringen die gängigen Dateisysteme Ext2 sowie dessen Nachfolger Ext3 und Ext4 einige Mechanismen mit, die dem Zersplittern entgegenwirken: So behalten die Dateisysteme die zu schreibenden Daten über einen längeren Zeitraum im RAM, um sie komplett in einen einzigen freien Bereich auf der Festplatte zu kopieren, sobald die endgültige Größe feststeht. Zusätzlich reservieren die Dateisysteme freie Blockgruppen auf der Festplatte, um wachsende Dateien darin komplett abzulegen.
Doch selbst solche vorausschauenden Mechanismen kommen dem Problem nicht komplett bei. Linux bringt jedoch für viele Problemstellungen, bei denen andere Betriebssysteme zusätzliche und meist teuer zu erwerbende Software benötigen, entsprechende Lösungen bereits von Haus aus mit – so auch in diesem Falle. Dabei gibt es unterschiedliche Wege, um das Problem zu beheben.
Bevor Sie jedoch einen – je nach Größe der Partition unter Umständen recht lange dauernden – Defragmentierungslauf starten, sollten Sie zunächst prüfen, ob die fragliche Festplatte überhaupt von dem Problem betroffen ist. Ein geringer Datendurchsatz im System deutet nicht zwangsläufig auf einen fragmentierten Datenträger hin. Insbesondere bei den neuen AFD-Festplatten führt eine falsch eingestellte Partition zu erheblichen Einbußen bei der Geschwindigkeit, auch ganz ohne fragmentierte Daten.
Um den Grad der Zersplitterung zu ermitteln, installieren Sie zunächst – sofern nicht bereits bei der ersten Konfiguration geschehen – das Paket e2fsprogs. Die Tools aus diesem Paket liefern wichtige Daten zu den Dateisystemen Ext2/3/4.
Achten Sie darauf, dass Sie die entsprechende Partition zuvor ausgehängt haben. Das erledigen Sie bei Bedarf mithilfe des folgenden Befehls:
$ umount Gerätedatei
Anschließend rufen Sie mit administrativen Rechten im Terminal den folgenden Befehl auf:
# e2fsck -fn Gerätedatei
Sie erhalten nach dem Prüfen der Partition eine Ausgabe, die in der letzten Zeile in einer Prozentangabe den Wert der nicht zusammenhängenden Blöcke ausweist (non-contiguous). Lassen Sie sich dabei von vermeintlich hohen Werten nicht erschrecken: Unter Linux lohnt sich das Defragmentieren erst, wenn das Tool Werte von mehr als 20 Prozent bei den nicht zusammenhängenden Blöcken anzeigt (Abbildung 1).
Möchten Sie den Grad der Fragmentierung der betreffenden Partition noch genauer ermitteln, so nutzen Sie alternativ den folgenden Befehl:
# dumpe2fs Gerätedatei
Damit verschaffen Sie sich einen detaillierten Überblick. Das Tool listet zunächst Angaben zur Beschaffenheit des Dateisystems auf und anschließend die einzelnen Blockgruppen sowie deren Daten.
In der Liste der Gruppen sollten Sie vor allem die Zeile Freie Blöcke: näher in Augenschein nehmen. Steht hier nur ein Bereich, ist alles OK. Finden Sie mehrere freie Blöcke, so sind die in dieser Gruppe befindlichen Daten teilweise fragmentiert. Je mehr Blöcke das Tool ausgibt und je mehr Blockgruppen dies betrifft, umso stärker sind die Daten auf der Partition verstreut (Abbildung 2).
Große Dateien
Insbesondere beim häufigen Speichern und Löschen von großen Dateien wie etwa Multimedia-Files entstehen häufig Löcher in den Datenstrukturen. Liegen die Daten eines hochauflösenden Videos nun in weit auseinander liegenden Bereichen, führt das unter Umständen bei der Wiedergabe zu Artefakten im Bild oder zu gelegentlichem Ruckeln.
In solchen Fällen bietet es sich an, die Konsistenz der Datei zu überprüfen: Sie rufen dazu bei installiertem Paket e2fsprogs mit den Rechten des Administrators im Terminal den folgenden Befehl auf:
# filefrag Datei
Filefrag untersucht anschließend die angeführte Datei und gibt detailliertere Informationen zum jeweiligen Zustand (Abbildung 3). Die Anzahl der sogenannten Extents, also nicht zusammenhängender Dateiblöcke, bezeichnet dabei den Grad der Fragmentierung. Je mehr Extents die Software ermittelt, desto stärker ist die betroffene Datei aufgespaltet.

Abbildung 3: Große multimediale Dateien zerlegt das Dateisystem oft in kleinere Brocken, die es dann unter Umständen an verschiedenen Stellen speichert.
Aufräumen
Um die Dateien wieder zusammenzuführen, bieten sich unterschiedliche Methoden an: Haben Sie viel Zeit, kopieren Sie die Daten von der betroffenen Partition auf einen anderen Datenträger, löschen die Ursprungsdaten und spielen die kopierten Dateien anschließend wieder auf den ursprünglichen Datenträger zurück. Damit hängen die Datenbereiche wieder zusammen.
Der Nachteil dieser Methode liegt im hohen Zeitaufwand bei großen Datenbeständen – vor allem, wenn Sie als Medium zum Sichern einen Massespeicher mit einer USB-2.0-Schnittstelle verwenden.
Da selbst nach einigen Jahren Einsatz der Grad Fragmentierung einer Festplatte unter Linux oft im einstelligen Prozentbereich liegt, hat die Entwicklergemeinschaft bislang ihr Augenmerk kaum auf diese Pflege der Daten gerichtet. So gibt es nur wenige Programme für die Kommandozeile, die sich mit diesem Problem beschäftigen – und von diesen überzeugte im Test lediglich eines: Defragfs [3].
Entpacken Sie das kleine Tool in einen Ordner. Das Perl-Skript bietet trotz seiner geringen Größe von knapp neun KByte einen erstaunlichen Funktionsumfang: Es defragmentiert nicht nur Verzeichnisse und Partitionen, sondern liefert zusätzlich detaillierte Angaben zum Erfolg der Aktionen.
Es empfiehlt sich, das Programm in den Ordner /usr/local/bin zu kopieren. Damit brauchen Sie beim Aufruf nicht den kompletten Pfad anzugeben. Anschließend starten Sie das Tool mit administrativen Rechten über den folgenden Befehl:
# defragfs Verzeichnisname -a
Defragfs ermittelt nun vollautomatisch die entsprechenden Werte und führt die einzelnen Dateien zusammen. Da das Skript die Dateien dabei hin und her kopiert, sollte sich im betroffenen Verzeichnis noch ausreichend freier Speicherplatz befinden.
Möchten Sie selbst Einfluss auf die Arbeit der Software nehmen, so rufen Sie Defragfs ohne Parameter am Ende der Befehlszeile auf. In diesem Fall erwartet die Defragfs mehrere Eingaben. Im Test fiel hierbei negativ auf, dass das Tool nach dem Ende der Arbeit wieder an den Anfang der Routine springt. In diesem Fall beenden Sie das Programm nach der Anzeige der Statistik über die modifizierten Dateien mittels [Strg]+[C].
Erfolg
Defragfs informiert Sie in einer Liste über die zusammengeführten Segmente einer Datei. Dabei gibt es für jede Datei in einer eckigen Klammer die Anzahl der Fragmente vor dem Kopieren und am Ende jeder Zeile die Zahl der Blöcke nach dem Durchlauf. In Abbildung 4 sehen Sie, dass insbesondere bei größeren und großen Dateien von mehr als 100 MByte Umfang die Anzahl der Segmente nach dem Defragfs-Lauf deutlich geringer ausfällt.
Fazit
Ext2 und dessen Nachfolger erweisen sich als von Haus aus so robust, dass sie kaum einen manuellen Eingriff benötigen. Trotzdem sollten Sie als Power-User mit multimedialem Faible und beim Betrieb eines Servers mit umfangreichen Datentransfers von Zeit zu Zeit die Festplatten prüfen.
Als einziges Tool, das unter den Dateisystemen Ext2 komfortabel arbeitet, wusste im Test Defragfs zu überzeugen. Das Programm arbeitet selbst auf eingebundenen Datenträgern ohne Probleme. Das einzige Manko der Software liegt im hohen Zeitbedarf, da sie – wie beim manuellen Kopieren – alle Dateien in freie Bereiche sichert und anschließend zurückspielt. Für das Warten entlohnt Defragfs jedoch oft mit einer besseren Leistung der Festplatte.
Infos
[1] Bleachbit: Erik Bärwaldt, “Sanfte Reinigung”, LU 08/2009, S. 64, https://www.linux-community.de/18942
[2] Rpmorphan: Erik Bärwaldt, “Paketprüfer”, LU 11/2012, S. 64, https://www.linux-community.de/27054
[3] Defragfs: http://defragfs.sourceforge.net








