Fragmentierung (Dateisystem)

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche
Visualisierung des Defragmentiervorgangs
Visualisierung des Defragmentiervorgangs

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, Problemlösung?

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.odt entsteht dokument.odt Frei
Datei film.avi entsteht dokument.odt film.avi Frei
dokument.odt wird größer dokument.odt (1/2) film.avi dokument.odt (2/2) Frei
Nach der Defragmentierung dokument.odt film.avi 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 vieler 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 die Entstehung 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 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 Blöcke, obwohl diese noch nicht benötigt werden)
  • Spätes Festlegen der zu benutzenden Speicherblöcke (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 Prozent des Speicherplatzes ein Verringern der Fragmentierung. Fatal sind (auch nur kurzzeitig) zu 100 Prozent 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 Zahl 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 Blöcke zur Gesamtanzahl der belegten Blöcke
  • Anzahl der zusammenhängenden Blöcke zur Gesamtanzahl der vorhandenen Blöcke

Die durch unterschiedliche Verfahren bestimmten 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.

Darüber hinaus ist der Fragmentierungsgrad allein nicht eine verlässliche Messgröße für die Performance eines Dateisystems. Zum einen liegt das daran, dass in einigen Dateisystemen auch die Metadaten fragmentiert werden können, bei anderen jedoch nicht. (Die MFT in NTFS ist zum Beispiel davon betroffen.) Zum Anderen verfügen verschiedene Dateisysteme über verschiedene Mechanismen, um den Performanceeinbruch bei vorhandener Fragmentierung zu vermindern.

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 unter anderem 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, der Schreib-Lese-Kopf wird mehrfach bewegt um auch anderen Anfragen nachzugehen.

[Bearbeiten] Defragmentierung in Betriebssystemen

[Bearbeiten] Defragmentierung unter Windows (Geschichte)

Das Programm defrag.exe wurde mit MS-DOS Version 5 eingeführt und führte zu einer wesentlichen Geschwindigkeits-Steigerung unter dem damaligen Computer (386/486). Der Computer musste sich nach der Defragmentierung nicht mehr einzelne Bruchstücke einer Datei über die gesamte Festplatte zusammensuchen. Dieses Phänomen kann bei diesen älteren Computern sogar „mitverfolgt“ werden, indem die Festplattengeräusche analysiert wurden (Klackern von einer zur anderen Seite, später: Durchgängiges Rattern).

Defrag.exe unter DOS erlaubte bis zu Windows ME (was ebenfalls noch „DOS-lastig“ war) ein genaues visuelles Verfolgen dieses Vorgangs. Beispielsweise wurden Blöcke von Dateien zunächst im Lesezugriff grün markiert, eine freie Stelle auf der Festplatte gesucht und zum Schreiben rot unterlegt. Wurde keine genügend große freie Stelle innerhalb des Bearbeitungssegments gefunden, wanderten die Daten zumeist an das Ende der Festplatte. Nach dem Freiräumen wurde eben dieser Block wieder verschoben.

Ab Windows 2000 ist eine genaue Vorgehensweise des Programms nur noch aus dem Blickwinkel der gesamten Festplatte sichtbar. Einzelne Dateien werden zwar in der Statusleiste angezeigt, jedoch wird intern nur ein Timer verwendet, der den Fortschritt anzeigt.

Unter Windows Vista ist sogar die grafische Anzeige völlig verschwunden, so dass man erraten muss, welchen Status der Vorgang insgesamt hat.

Unter DOS waren auch Programme von Fremdanbietern (Norton, Digital Research) verbreitet (DISKOPT.EXE/DSKSPEED.EXE). Gemeinsam ist den Defragmentierungsprogrammen, dass sie eine Sortierung nach Dateiname, -größe oder -datum anbieten.

[Bearbeiten] Defragmentierung unter Mac OS X

Die von Mac OS X verwendeten Dateisysteme HFS und HFS+ sind so ausgelegt, dass sie den größten freien Speicherblock auf der Festplatte suchen in dem eine Datei gespeichert werden soll. Erst wenn eine Datei nicht in den größten freien Speicherblock passt, wird die Datei aufgeteilt (fragmentiert) und der noch nicht geschriebene Teil wird in einem weiteren Block gespeichert.

Um der Fragmentierung entgegenzuwirken läuft unter Mac OS X ein Hintergrundprozess, welcher regelmäßig das Dateisystem defragmentiert.

[Bearbeiten] Werkzeuge zur Defragmentierung

Unter Windows-NT-Betriebssystemen (ab Windows 2000) steht nur dem Administrator der mitgelieferte Defragmentierer zur Verfügung. Dem normalen Benutzer wird der Zugriff verwehrt. Im Vergleich zu Fremdprodukten verfügt er jedoch nur über einen eingeschränkten Funktionsumfang. Einige der unter Linux und Unix-Varianten verwendeteten Dateisysteme beugen der Fragmentierung besser vor und benötigen keine Programme zur Defragmentierung. Dennoch gibt es für einige Dateisysteme Defragmentierungsprogramme, die in den jeweiligen Support-Paketen der Distributionen enthalten sind. Ext2 kann durch defrag, XFS mit Hilfe von xfs_fsr defragmentiert werden, was aber im normalen Einsatz nie nötig ist. Andere populäre Dateisysteme, wie beispielsweise ReiserFS und Ext3 stellen solche Programme erst gar nicht zur Verfügung. Die einzige Lösung zum Defragmentieren stellt folgendes Szenario dar: Kopieren oder tar-Archivierung aller Dateien auf neu angelegtes Dateisystem. Anschließend löscht man die Dateien und packt das Archiv daraufhin wieder aus.

Zur Defragmentierung des von Apple in Mac OS X verwendeten HFS+ läuft im Hintergrund ein Defragmentierungsprogramm, das dem Benutzer keinerlei Ausgabe präsentiert und die Defragmentierung bei Festplattenzugriffen automatisch unterbricht, so wie es Microsoft auch bei Windows Vista realisiert.

[Bearbeiten] Literatur

  • Dr. Oliver Diedrich: Fragmente und Verzeichnisse, Das Linuxdateisystem Ext3 tunen. c't 05/2008.

[Bearbeiten] Weblinks

Wiktionary
 Wiktionary: Defragmentierung – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen und Grammatik
Persönliche Werkzeuge