Fragmentierung (Dateisystem)
aus Wikipedia, der freien Enzyklopädie
Unter Fragmentierung (Fragment = Bruchstück) versteht man im Zusammenhang mit Datenträgern die ungünstige Verteilung von Datenblöcken, so dass sich die Zugriffszeiten auf die Daten durch zusätzliche Bewegungen der Schreib-/Leseköpfe verlängern. Unter Defragmentierung versteht man die Neuordnung von Datenblöcken fragmentierter Dateien auf den Spuren und Sektoren der Festplatte, so dass Zugriffe mit optimaler Geschwindigkeit durchgeführt werden können.
Inhaltsverzeichnis |
[Bearbeiten] Entstehung der Fragmentierung
Ein Datenträger (auf dem Lesen und Schreiben erlaubt ist) ist kein statisches Gebilde, sondern es finden dauernd Lese-, Schreib- und Löschoperationen statt. Manche Operationen geben Speicherplatz wieder frei, manche benötigen neuen Speicherplatz. Dieses dauernde Freigeben und erneute Belegen von Speicherblöcken führt dazu, dass zum einen die unbenutzten Speicherblöcke sich über die Festplatte verteilen (Freispeicherfragmentierung) und zum anderen Dateien und Metadateien nicht mehr am Stück auf den Spuren der Festplatte abgespeichert sind (Dateifragmentation). Eine weitere Quelle für Fragmentierung ist das Verlängern schon bestehender Dateien.
Im folgenden Diagramm sei dieser Vorgang veranschaulicht:
Vorgang | Speicherblock | |||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
Datei "dokument.doc" entsteht | dokument.doc (1/1) | Frei | ||||
Datei "film.avi" entsteht | dokument.doc (1/1) | film.avi (1/1) | Frei | |||
"dokument.doc" wird größer | dokument.doc (1/2) | film.avi (1/1) | dokument.doc (2/2) | Frei | ||
Nach der Defragmentierung | dokument.doc (1/1) | film.avi (1/1) | Frei |
[Bearbeiten] Arten von Fragmentierungen
Es gibt mehrere Arten von Fragmentierung (auch wenn mit Fragmentierung meist die Intrafile-Fragmentierung gemeint ist):
- Intrafile-Fragmentierung: Intrafile-Fragmentierung ist das Verteilen von Nutzdateien auf der Festplatte, so dass zusätzliche Positionierzeiten beim sequentiellen Lesen von Dateien auftreten.
- Interfile-Fragmentierung: Interfile-Fragmentierung ist das Verteilen von Dateien und Metadateien, die normalerweise nacheinander gelesen werden. Sie spielt vor allem beim korrelierten Lesen von vielen kleinen Dateien eine Rolle (zum Beispiel Verzeichnisse mit vielen kleinen Bildern).
- Metafile-Fragmentierung: Metafile-Fragmentierung ist das Fragmentieren von Verzeichnissen, Blockbelegungstabellen und ähnlichen Metainformationen.
- Fragmentierung des unbenutzten Plattenplatzes: Sie stellt selbst keinen Nachteil für den Zugriff auf Dateien dar, ist aber eine der Ursachen für das Entstehen von Fragmentierung (Neuanlegen von Dateien).
[Bearbeiten] Auswirkungen der Fragmentierung
Fragmentierung hat mehrere Auswirkungen:
- Reduzierung der reinen Transferrate einer Datei (durch die notwendigen Umpositionierungen des Schreib-Lese-Kopfes der Festplatte)
- Bei modernen Dateisystemen (ReiserFS, XFS, NTFS) kommt es weiterhin zu einer Vergrößerung der Metadaten, die beschreiben, wo sich die Daten auf dem Speichermedium befinden.
[Bearbeiten] Vermeiden und Verringerung von Fragmentierung
Es gibt verschiedene Strategien, um die Fragmentierung eines Dateisystems zu reduzieren.
- Verwendung von größeren Blockgrößen (allerdings erhöht das auch den Verschnitt des Dateisystems)
- Preallocation (man reserviert vorsorglich schon Blocks, obwohl diese noch nicht benötigt werden)
- Spätes Festlegen der zu benutzenden Speicherblocks (Late Allocation) statt sofortiges Festlegen (Early Allocation)
- Mehrstufige Allozierungssysteme (Zerlegung einer Festplatte in Cluster, Blockgruppen, Blöcke).
Bei allen Arten von Dateisystemen bewirkt ein Freilassen von 5% bis 20% des Speicherplatzes ein Verringern der Fragmentierung. Fatal sind (auch nur kurzzeitig) zu 100% gefüllte Dateisysteme. Das Dateisystem hat zunehmend weniger Freiheiten, Dateien sinnvoll abzuspeichern.
[Bearbeiten] Fragmentierungsgrad eines Dateisystems
Es gibt verschiedene Möglichkeiten, die Fragmentierung eines Dateisystems anzugeben.
- Verhältnis der Lese- oder Schreib-Geschwindigkeit des fragmentierten (realen) Dateisystemes gegenüber einem nichtfragmentierten (optimalen) Dateisystem
- Verhältnis der fragmentierten Dateien zur Gesamtanzahl der Dateien
- Verhältnis des durch fragmentierte Dateien belegten Plattenplatzes zum gesamten belegten Plattenplatz
- Verhältnis des durch fragmentierte Dateien belegten Plattenplatzes zum gesamten vorhandenen Plattenplatz
- Anzahl der zusammenhängenden Blocks zur Gesamtanzahl der belegten Blocks
- Anzahl der zusammenhängenden Blocks zur Gesamtanzahl der vorhandene Blocks
Die durch unterschiedliche Verfahren bestimmte Fragmentierungsgrade sind nicht vergleichbar; nicht einmal durch gleiche Verfahren bestimmte Fragmentierungen sind vergleichbar, weil die realen Auswirkungen bei vielen Verfahren weiterhin von Blockgröße, durchschnittlicher Dateigröße und Geschwindigkeit des Mediums abhängen.
Die Prozentzahlen der Fragmentierung, die Werkzeuge verschiedener Betriebssysteme anzeigen, sind nicht direkt vergleichbar:
- Linux-Werkzeuge (fsck) geben den Grad der Fragmentierung durch Angabe der Anzahl der Fragmente geteilt durch die Anzahl der benutzten Blocks an.
- Windows-Werkzeuge geben üblicherweise den Grad der Fragmentierung durch Angabe der Anzahl der fragmentierten Dateien geteilt durch die Anzahl der Dateien an.
Ein Fragmentierungsgrad von 1% in einem ext2-Dateisystem bedeutet, dass Fragmente aus durchschnittlich 100 Blocks bestehen. Die Fragmentierung einer Datei kann man sich mit dem Befehl filefrag (meist im Paket e2fsprogs) ausgeben lassen.
Ein Fragmentierungsgrad von 1% in einem NTFS-Dateisystem bedeutet, dass jede hunderste Datei fragmentiert ist und 99% unfragmentiert sind, was in der Praxis keine Beeinträchtigung darstellt. Wenn sich auf einem Dateisystem große Dateien befinden, können selbst 100% Fragmentierung keinerlei Auswirkung haben (10 große Dateien, jeweils in zwei Fragmente zerlegt, bilden ein 100% fragmentiertes Dateisystem). Unter NTFS sind nicht nur einzelne Dateien von Fragmentierung betroffen, sondern auch die MFT.
Aus dieser unterschiedlichen Sichtweise der Messung der Fragmentierung beruht der Mythos, dass Unix-Dateisysteme nicht oder nur gering fragmentieren.
Ext2 implementiert mehrere Mechanismen, um Fragmentierung zu reduzieren. Dazu gehört das Zusammenfassen von Blöcken zu Blockgruppen. Dateien werden dann möglichst gleichmäßig auf Blockgruppen verteilt. Dadurch entsteht eine gleichmäßige Verteilung von Dateien (und freien Bereichen) auf der Platte. Im Gegensatz zu FAT werden nun Dateien immer in möglichst schlecht passende freie Bereiche gelegt, also kleine Dateien in große Lücken, um auf Größenänderungen der betreffenden Dateien ohne Verluste reagieren zu können. Hinter jeder Datei versucht Ext2 auch genug Platz zu lassen, sodass kleinere Größenänderungen von Dateien nicht prompt zu einer Fragmentierung führen. Durch die Verteilung der Daten über den kompletten nutzbaren Bereich fällt im Serverbetrieb die Fragmentierung weniger ins Gewicht als beim Lesen im „Burst“-Modus. So ordnen moderne Festplatten-Scheduler die Lese- oder Schreibanforderungen derart, dass Suchzeiten (z. B. des Schreib-Lese-Kopfes der Platte) minimal werden.
Eine weitergehende Reduzierung von Fragmenten erhält man z. B. durch das Dateisystem XFS, welches Schreiboperationen verzögert (delayed write) und im RAM möglichst komplett zwischenspeichert. Bei kleinen Dateien ist so die komplette Dateigröße dem Dateisystem bekannt, bevor die Datei auf die Platte geschrieben wird. So kann XFS eine optimale Stelle für die Datei finden. Passt die Datei nicht komplett in den RAM, wird natürlich schon vorher begonnen den Puffer auf den Datenträger zu schreiben.
Bei der Beurteilung der Fragmentierung von Dateisystemen muss man zwischen Durchsatz und Performance unterscheiden: Performance ist die Datenrate, die ein Anwender mit einem einzelnen Prozess maximal vom Dateisystem (in MB/s) erreichen kann. Durchsatz ist die Datenrate, die das Dateisystem über alle Anwender und Prozesse (mit mehreren, konkurrierenden IO-Anfragen) summiert liefern kann. In Multitasking- bzw. Multiuser-Systemen ist der Durchsatz oft sehr viel größer als die Performance. Linux hat Algorithmen, die den Durchsatz, nicht die Performance des Systems erhöhen. Starke Fragmentierung wirkt sich stärker auf die Performance aus. Bei Systemen mit vielen konkurrierenden Anfragen an das Dateisystem wird eine (größere) Datei ohnehin nicht in einem Stück gelesen und der Schreib-Lese-Kopf ohnehin mehrfach bewegt.
[Bearbeiten] Werkzeuge zur Defragmentierung
Unter Windows steht allen Benutzern der mitgelieferte Defragmentierer zur Verfügung. Im Vergleich zu kommerziellen Alternativen verfügt er jedoch nur über einen eingeschränkten Funktionsumfang. Für die unter Linux und Unix-Varianten verwendeteten Dateisysteme gibt es nur teilweise Programme zur Defragmentierung, die in den jeweiligen Support-Paketen der Distributionen enthalten sind. Ext2 kann durch defrag, XFS mit Hilfe von xfs_fsr defragmentiert werden. Andere populäre Dateisysteme, wie beispielsweise ReiserFS bieten kein Programm zur Defragmentierung.
[Bearbeiten] Defragmentierung starten
Bei Windows gibt es eine Defragmentierung! Diese öffnen sie so: In der Taskleiste auf Start klicken dann klicken sie auf Zubehör dann auf Systemprogramme und dann auf Defragmentierung! Schon ist die Defragmentierung geöffnet! Sie können sie jederzeit stoppen oder pausieren!