Was ist Dateisystemfragmentierung und warum findet sie statt?
Bevor wir uns auf die Dateisystemfragmentierung konzentrieren, müssen Sie sich zunächst mit dem Konzept eines Dateisystems vertraut machen. Es bezieht sich auf die Technologie, auf deren Grundlage Daten auf jedem einzelnen Abschnitt eines Speichermediums (Festplatte, SSD, USB-Stick usw.), der als Partition bezeichnet wird, verwaltet werden. Das darin während des Formatierungsprozesses erstellte Dateisystem umfasst Methoden und Strukturen, mit denen gesteuert wird, wie und wo jedes Datenelement gespeichert wird. Dadurch werden die Daten geordnet und nicht in einem kontinuierlichen Bytestrom gehalten. Zudem verwaltet das Dateisystem Aufzeichnungen, die den sofortigen Abruf von Dateien ermöglichen, wann immer sie vom Betriebssystem angefordert werden. Wenn das Betriebssystem bestimmte Daten aus dem Speicher löschen muss, bietet das Dateisystem auch einen Mechanismus zur Ausführung dieses Vorgangs.
Verschiedene Betriebssystemplattformen basieren normalerweise auf verschiedenen Arten von Dateisystemen. Zu den am häufigsten verwendeten gehören FAT/FAT32, exFAT, NTFS, ReFS von Windows, APFS, HFS+ von macOS, Ext4, XFS, Btrfs, F2FS von Linux und UFS, ZFS von BSD, Solaris, Unix. Obwohl sie alle im Wesentlichen die gleichen Funktionen erfüllen, können ihre Design- und Datenplatzierungsstrategien stark voneinander abweichen.
Fragmentierung ist ein Zustand, der auftritt, wenn ein bestimmtes Dateisystem nicht in der Lage ist, einen zusammenhängenden Bereich auf dem Speicher vorzubereiten, um die gesamte Datei an einem einzigen Ort zu speichern. Folglich wird eine Datei in Teile zerlegt, die an separaten Stellen auf der Festplatte gespeichert werden. Diese einzelnen Teile werden als Fragmente bezeichnet, und Dateien, deren Fragmente nicht nebeneinander platziert sind, werden dann als fragmentiert betrachtet. Um nacheinander auf jedes Fragment zuzugreifen und so solche Datei zu lesen, speichert jedes Dateisystem spezielle Dienstinformationen (Metadaten), die unter anderem Zeiger auf die zugehörigen Fragmente enthalten.
Idealerweise sollten die Fragmente, aus denen eine einzelne Datei besteht, so nah wie möglich beieinander liegen. Und bei einem brandneuen Laufwerk, das über viel freien Speicherplatz verfügt, stellt dies gewöhnlich kein Problem dar. Doch im Laufe der Zeit, wenn Dateien erstellt, geändert und gelöscht werden, entstehen Lücken zwischen ihnen, die mit neuen Daten gefüllt werden müssen. Wenn eingehende Dateien klein sind, passen sie problemlos in die verfügbaren Lücken. Meistens ist eine Datei jedoch viel größer als die größte freie Lücke. Die Größe einer vorhandenen Datei kann ebenfalls zunehmen, es können jedoch keine Lücken daneben vorhanden sein. Um das Schreiben ohne Verzögerung durchzuführen, tendiert das Dateisystem dazu, die Daten dort zuzuweisen, wo es gerade Platz dafür findet, sodass die Fragmente der Datei im Speicher verstreut bleiben.
Insgesamt ist Fragmentierung eher charakteristisch für Dateisysteme älterer Generationen, wie z. B. FAT/FAT32 von Microsoft. Moderne Formate zielen hauptsächlich darauf ab, sie durch den Einsatz verschiedener Techniken auf ein Minimum zu beschränken:
-
Extent-basierte Zuordnung
Dateien werden in zusammenhängenden Bereichen gespeichert, die Extents genannt werden. Ein Extent wird als Startadresse dieses Bereichs und seiner Länge dargestellt. Wenn möglich, wählt der Algorithmus einen einzelnen Extent aus, der den für den Inhalt der Datei erforderlichen Speicherplatz bereitstellt, oder benutzt zumindest eine minimale Anzahl von Extents. Zu den typischen Beispielen für Extent-basierte Dateisysteme gehören NTFS, APFS, HFS+, Ext4, XFS und Btrfs.
-
Verzögerte Zuweisung
Der Inhalt einer zu schreibenden Datei wird im RAM zwischengespeichert, während der eigentliche Schreibvorgang möglichst lange verzögert wird. Wenn die endgültige Größe der Datei bekannt ist, ist die Wahrscheinlichkeit viel größer, dass schließlich ein ausreichend großer Bereich ausgewählt wird und bald keine weiteren Bereiche mehr erforderlich werden. Außerdem müssen kurzfristige temporäre Dateien nicht vollständig geschrieben werden und können direkt aus dem RAM gelöscht werden. Viele moderne Dateisysteme verwenden verzögerte Zuweisung, darunter Ext4, XFS, Btrfs, ZFS und HFS+.
-
On-the-fly-Defragmentierung
Einige Dateisysteme sind in der Lage, fragmentierte Dateien anhand bestimmter Kriterien zu erkennen und ihre Fragmente automatisch neu anzuordnen, um sie wieder zusammenhängend zu machen. Solche Algorithmen werden beispielsweise von APFS, HFS+, Ext4 und Btrfs eingesetzt.
Dennoch kann Fragmentierung auch in modernen Dateisystemen nicht als gelöstes Problem angesehen werden. Sie können mit zunehmendem Alter immer noch darunter leiden, insbesondere in den folgenden Fällen:
-
eine Festplatte oder SSD mit geringer Kapazität wird als Systemlaufwerk verwendet;
-
eine große Anzahl kleiner Partitionen sind auf einem Laufwerk angeordnet;
-
der freie Speicherplatz eines Speichers geht zur Neige (mehr als 85–95 % der Kapazität sind besetzt);
-
große Dateien werden häufig bearbeitet, vor allem bei Platzmangel;
-
Dateien unterschiedlicher Größe werden gelöscht und geschrieben, wenn der Speicher fast voll ist.
Welche negativen Auswirkungen hat die Fragmentierung?
Mit der Zeit und wenn das Dateisystem aktiv genutzt wird, können die darin gespeicherten Dateien in Hunderte oder sogar Tausende von Fragmenten aufgeteilt werden, die über das Laufwerk verteilt sind. Solcher Zustand kann schwerwiegende Auswirkungen auf die Leistung haben, je nachdem, um welche Art von digitalem Medium es sich handelt. Mechanische Festplatten speichern Informationen auf rotierenden Platten. Um darauf zuzugreifen, muss das Gerät seinen Lese-/Schreibkopf über die Oberfläche bewegen und jedes Fragment der angeforderten Datei finden. Wenn diese an völlig unterschiedlichen Orten verstreut sind, dauert es viel länger, sie zu erreichen und die gesamte Datei abzurufen, als nur einen großen zusammenhängenden Teil zu lesen. Dies hat auch zur Folge, dass die rotierenden Komponenten des Laufwerks deutlich stärker verbraucht werden, was wiederum die Lebensdauer des Geräts verkürzt. Im Gegensatz dazu verfügen Solid-State-Laufwerke über keine mechanischen Teile und sind daher nicht anfällig für Leistungseinbußen durch Fragmentierung.
Darüber hinaus verschärft die Fragmentierung die Situation, wenn das Datenverlust auftritt und die Dateien wiederhergestellt werden müssen. Erstens ist die Wahrscheinlichkeit, dass eine fragmentierte Datei ihre Integrität verliert, indem sie teilweise mit anderen Daten überschrieben wird, viel höher. Überdies kann es in einigen Fällen vorkommen, dass der Inhalt noch auf dem Speicher vorhanden ist, aufgrund der erheblichen Fragmentierung jedoch nicht wiederhergestellt werden kann. Aus dieser Perspektive wird das Problem weiter unten in diesem Artikel näher erläutert.
Dateisystemfragmentierung im Zusammenhang mit der Datenrettung
Damit eine fragmentierte Datei korrekt wiederhergestellt werden kann, ist es ist notwendig, nicht nur ihren Startort zu bestimmen, sondern auch alle dazugehörigen Fragmente zu identifizieren und sie in der richtigen Reihenfolge anzuordnen, um die Datei zu retten. Das Dateisystem verlässt sich normalerweise auf seine Metadaten, um diese Art von Korrespondenz zu verfolgen. Wenn die Serviceaufzeichnungen noch verfügbar sind, ist es normalerweise möglich, sie zu analysieren und herauszufinden, welche Fragmente mit welchen Dateien verknüpft sind. Solange eine Datei also nicht überschrieben wird, ist es einfach, sie wiederzugewinnen, egal wie fragmentiert sie auch sein mag.
Noch schlimmer wird es jedoch, wenn solche Dateien ohne die Hilfe von Metadaten extrahiert werden müssen. Diese können aufgrund eines logischen Fehlers oder während eines Formatierungsvorgangs beschädigt werden. Besser noch: Bestimmte Dateisysteme wie FAT/FAT32 wischen absichtlich einen Teil davon ab, sobald eine Datei gelöscht wird. In diesem Fall kann ein Datenwiederherstellungstool den Startspeicherort der Datei anhand der Kenntnis ihrer Struktur ermitteln. Es wird nach bestimmten Mustern im Rohinhalt des Laufwerks suchen, die als Signaturen bezeichnet werden. Der Ort, an dem das nächste Fragment beginnt, kann jedoch äußerst schwer oder sogar unmöglich vorherzusagen sein, insbesondere wenn eine Datei in viele Teile fragmentiert ist, die weit voneinander entfernt liegen.
Fragmentierung ist eine große Herausforderung für die Datenwiederherstellung. Selbst die ausgefeiltesten Algorithmen können bei der Verarbeitung stark fragmentierter Daten ohne verwendbare Dateisystemdatensätze kein 100-prozentiges Ergebnis liefern. Und leider ist der Fragmentierungsgrad der wertvollsten Dateitypen – Bilder, Videos, Office-Dokumente, Datenbanken, E-Mails usw. – im Allgemeinen hoch. Es ist nicht ungewöhnlich, dass etwa 15 % der Bilder und sogar 50 % der Videodateien im FAT/FAT32-Dateisystem, das häufig auf tragbaren Medien wie USB-Sticks und USB-Sticks eingesetzt wird, fragmentiert sind. Vor diesem Hintergrund ist es wichtig, Vorsichtsmaßnahmen gegen Fragmentierung zu treffen, um dauerhaften Datenverlust im Falle logischer Fehler zu vermeiden. Dateisysteme, die am stärksten davon betroffen sind, können mit speziellen in Windows integrierten Tools oder Dienstprogrammen von Drittanbietern, die auch für Linux und macOS entwickelt werden, defragmentiert werden.