Fragmentierung (Dateisystem)

Fragmentierung (Dateisystem)
Visualisierung der Fragmentierung und des anschließenden Defragmentiervorgangs

Unter Fragmentierung (Fragment = Bruchstück) versteht man die verstreute Speicherung von logisch zusammengehörigen Datenblöcken des Dateisystems auf einem Datenträger. Dies kann bei Speichermedien mit relativ hohen Zugriffszeiten wie beispielsweise Festplatten zu einer spürbaren Verlangsamung der Lese- und Schreibvorgänge führen, da diese ihre volle Geschwindigkeit technisch bedingt nur bei sequentiellem Zugriff erreichen.

Unter Defragmentierung versteht man die mit speziellen Programmen durchführbare Neuordnung von fragmentierten Datenblöcken auf dem Speichermedium, so dass logisch zusammengehörige Datenblöcke möglichst aufeinanderfolgend auf dem Datenträger abgelegt werden. Dies kann den sequentiellen Zugriff mitunter deutlich beschleunigen und damit die Arbeitsgeschwindigkeit des gesamten Systems erhöhen.

Inhaltsverzeichnis

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 sich zum einen die unbenutzten Speicherblöcke auf dem Datenträger verteilen (Freispeicherfragmentierung) und zum anderen die logisch zusammenhängenden Datenblöcke von Dateien und Metadateien nicht mehr hintereinander auf dem Datenträger abgespeichert werden (Dateifragmentation). Eine weitere Ursache von Fragmentierung ist das Verlängern schon bestehender Dateien.

Vereinfacht ausgedrückt: Wenn das Betriebssystem eine Datei auf dem Speichermedium ablegen will, kann es vorkommen, dass diese nicht zusammenhängend, sondern verstreut auf dem Datenträger gespeichert wird. Einige Dateisysteme prüfen nicht, ob die Daten innerhalb des freien Speicherplatzes zusammenhängend abgelegt werden können, sondern beginnen den Speichervorgang einfach in dem ersten freien Speicherplatzbereich. Es kommt jedoch nicht selten vor, dass dieser Speicherbereich nicht groß genug ist, um die gesamte Datei aufzunehmen. In diesem Fall beschreibt das Dateisystem den ersten freien Speicherbereich, bis dieser voll ist, und legt den restlichen Teil der Datei wiederum im nächsten freien Speicherbereich ab.

Im folgenden Diagramm wird 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

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 dem Datenträger, so dass keine zusätzlichen Verzögerungszeiten beim sequentiellen Lesen von Dateien auftreten können.
  • Interfile-Fragmentierung: Interfile-Fragmentierung ist das Verteilen von Dateien und Metadateien, die normalerweise nacheinander gelesen werden. Sie spielt vor allem beim korrelierten Lesen vieler kleiner 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 Speicherplatzes: 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).

Auswirkungen der Fragmentierung

Beim Lesen und Schreiben von fragmentierten Daten kann es je nach Beschaffenheit des Speichermediums zu mehr oder weniger spürbaren Geschwindigkeitseinbußen kommen. Bei modernen Dateisystemen (ReiserFS, XFS, NTFS) kommt es zusätzlich zu einer Vergrößerung der Metadaten, die beschreiben, wo sich die Daten auf dem Speichermedium befinden.

Am Beispiel einer Festplatte lässt sich die negative Auswirkung der Fragmentierung besonders gut verdeutlichen: Beim Lesen einer fragmentierten Datei, die überall verstreut auf der Magnetscheibe der Festplatte abgelegt ist, muss der Lesekopf der Festplatte in kurzen Abständen sehr oft und über längere Strecken hinweg auf der Magnetscheibe neu positioniert werden. Dies bewirkt viele kleine Verzögerungen, die sich im Bereich von wenigen Millisekunden bewegen. Je nach Größe der Datei, Fragmentierungsgrad und Zugriffszeit der Festplatte können sich diese Verzögerungen über den gesamten Lesevorgang zu einer spürbaren Verlangsamung summieren.

Im Gegensatz dazu existieren auch andersartige Speichermedien, die ohne bewegte Teile auskommen und damit nicht von mechanisch begründeten Verzögerungen bei Lese- und Schreiboperationen betroffen sind. Dazu gehören unter anderem Datenträger, die auf Speicherchips (vornehmlich Flash-Speicher) aufbauen, beispielsweise USB-Sticks, Speicherkarten oder Solid State Disks. Nur teilweise von diesem Problem betroffen sind Hybridfestplatten, die sowohl Magnetplatten als auch Speicherchips zum dauerhaften Ablegen von Daten nutzen.

Jedoch können auch derartige Speichermedien von einem fragmentierten Dateisystem verlangsamt werden. Aufgrund der anderen internen Organisation des Speichers sind die Auswirkungen einer Fragmentierung abhängig von Gerät und Hersteller jedoch sehr unterschiedlich und können nicht mit einer Festplatte verglichen werden. Der Controller dieser Speichermedien legt die Daten je nach Modell mitunter nicht in der physischen Reihenfolge auf den Speicherchips ab, die vom Dateisystem abgebildet wird. Dadurch lässt sich keine verlässliche Aussage bezüglich der Auswirkung von Fragmentierung auf Flash-Speichermedien treffen. Sicher ist jedoch, dass sich eine Defragmentierung negativ auf die Lebensdauer von Flash-Speichermedien auswirkt, da diese nicht unbegrenzt oft beschreibbar sind.

Vermeiden und Verringerung von Fragmentierung

Es gibt verschiedene Strategien, um die Fragmentierung eines Dateisystems zu reduzieren. Diese Strategien sind primär auf Festplatten als verwendete Datenträger bezogen und könnten sich bei anderen Speichermedien nicht oder nur wenig vorteilhaft auswirken.

  • Verwendung einer höheren Blockgröße des Dateisystems (dabei wird jedoch mitunter Speicherplatz verschwendet)
  • 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 sofortigen Festlegens (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.

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 Speicherplatzes zum gesamten belegten Speicherplatz
  • Verhältnis des durch fragmentierte Dateien belegten Speicherplatzes zum gesamten vorhandenen Speicherplatz
  • 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 sowie Geschwindigkeit und interner Speicherorganisation 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.

Das Dateisystem 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 dem Speichermedium. 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, so dass 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 den Datenträger 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. Das Betriebssystem 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, es werden gleichzeitig auch andere Anfragen getätigt.

Defragmentierung in Betriebssystemen

Je nach Dateisystem gibt es verschiedene Methoden zur Defragmentierung. Während es vor allem für ältere Dateisysteme tatsächlich keine hauseigenen Wege zur Defragmentierung gibt, sind für moderne Dateisysteme Defragmentierprogramme verfügbar.

Folgende Methoden sind üblich:

  • Kopieren der Daten auf eine leere Partition: Diese Methode ist aufwändiger, aber zuverlässiger. Da jede Datei einzeln kopiert wird, werden auf der Quellpartition alle Teile der Datei zusammengesetzt, welche auf der Zielpartition in aufeinanderfolgenden Speicherblöcken gespeichert werden. Alternativ können die Dateien in ein Archiv auf derselben Partition gespeichert werden; die Originaldateien werden anschließend gelöscht und das Archiv wieder ausgepackt. Der Nachteil ist der doppelte Speicherplatzbedarf in Form einer zusätzlichen Partition bzw. von freiem Platz auf der Partition. Dafür ist diese Möglichkeit bei jedem Dateisystem anwendbar.
  • Nutzung von Defragmentierprogrammen: Dabei muss man zwischen Offline- und Onlinedefragmentierung unterscheiden. Bei ersterer darf das Dateisystem nicht eingebunden sein. Damit ist es zum Beispiel nicht möglich, die Systempartition eines laufenden Systems zu defragmentieren. Bei der Onlinedefragmentierung besteht dieses Problem in der Regel nicht. Ein Beispiel für ein Dateisystem, das Onlinedefragmentierung unterstützt, ist XFS, welches mit dem Programm xfs_fsr defragmentiert werden kann.

Defragmentierung unter Windows (Geschichte)

Das Programm defrag.exe wurde mit MS-DOS Version 6 eingeführt und war eine eingeschränkte lizenzierte Version von Norton SpeedDisk. Es konnte – wie die Vollversion von SpeedDisk – in bestimmten Fällen zu einer wesentlichen Geschwindigkeitssteigerung auf den damals üblichen Computern (386/486) führen. 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 (ebenfalls noch DOS-basierend) 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.

Seit Windows Vista ist sogar die grafische Anzeige völlig verschwunden, so dass man keine Hinweise hat, 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 optional eine Sortierung nach Dateiname, -größe oder -datum anbieten, die sich aber nicht oder kaum auf die Effizienz des Dateisystems auswirken. Je nach gewählter Option (z.B. Sortierung nach Änderungsdatum oder nach bestimmten Dateinamenserweiterungen) lassen sich bestimmte Systemdateien an den Anfang der Partition verschieben, sodass dieser Bereich kaum noch von erneuter Fragmentierung betroffen ist. Dadurch kann sich der Prozess der künftigen Fragmentierung verlangsamen und die Systemperformance bleibt länger stabil.

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.

Defragmentierung unter Unix und Linux

Es wird gelegentlich behauptet, dass unixoide Betriebssysteme keine Defragmentierung benötigen würden. Entstanden ist diese Behauptung aus dem Inhalt der Masterarbeit A Fast Filesystem for UNIX von Bill Joy, Samuel Leffler und Kirk McKusick. Die dort gemachten Aussagen beziehen sich jedoch nur auf das UFS, das in der Tat auch bei extrem ungünstiger Nutzung nicht merklich an Performance verliert, und sind nicht generell auf andere Dateisysteme übertragbar.

Wie im Abschnitt „Vermeiden und Verringerung von Fragmentierung“ erwähnt, sind in den verwendeten Dateisystemen zwar Gegenmaßnahmen implementiert, dennoch tritt Fragmentierung in der Praxis auf. Auch existieren diverse Programme zur Defragmentierung unter Unix.

Werkzeuge zur Defragmentierung

Unter Windows-NT-Betriebssystemen (ab Windows 2000) steht nur Administratoren der mitgelieferte Defragmentierer zur Verfügung, normalen Benutzern wird der Zugriff verwehrt. Im Vergleich zu Fremdprodukten verfügt der auf Diskeeper basierende Defragmentierer jedoch nur über einen eingeschränkten Funktionsumfang. Im Freewarebereich sind beispielsweise MyDefrag und Defraggler bekannt.

Die unter Linux und Unix-Varianten verwendeten Dateisysteme beugen der Fragmentierung zumeist vor, deshalb wird weniger Wert auf die Defragmentierung gelegt. Dennoch sind solche Dateisysteme nicht gegen Fragmentierung resistent. Ext2 kann durch defrag, XFS mit Hilfe von xfs_fsr defragmentiert werden. Andere populäre Dateisysteme wie beispielsweise ReiserFS und Ext3 stellen solche Programme nicht zur Verfügung. Die einzige Lösung zum Defragmentieren stellt das Kopieren auf eine leere Partition dar (s. o.).

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 hat.

Siehe auch

Slack (Dateisystem)

Literatur

Weblinks

Wiktionary Wiktionary: Defragmentierung – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Fragmentierung — (lat. frāgmentum ‚(Bruch)Stück, Überbleibsel‘ zu frangere ‚brechen‘; ieren Bildung neuzeitl.) hat mehrere Bedeutungen. Fragmentierung steht in der Informatik: in TCP/IP Netzwerken für die Aufteilung eines IP Datenpaketes auf mehrere physikalische …   Deutsch Wikipedia

  • Fragmentierung — Zerlegung; Zerteilung; Segmentierung; Diversifikation * * * Frag|men|tie|rung [lat. fragmentum =Bruchstück]: die als ↑ Heterolyse verlaufende Spaltung eines Moleküls in zwei oder mehr Fragmente nach dem allg. Schema a b c d X → (a b)+ + c=d + X‒ …   Universal-Lexikon

  • XFS (Dateisystem) — XFS Hersteller Silicon Graphics Inc. Vollständige Bezeichnung XFS Erstveröffentlichung 1994 (IRIX v5.3) Technische Umsetzung Verzeichnisse B⁺ Baum Dateien extent …   Deutsch Wikipedia

  • Ext2 — Hersteller Rémy Card Vollständige Bezeichnung Second extended file system Erstveröffentlichung Januar 1993 (Linux) Partitionskennung Apple UNIX SVR2 (Apple Partition Map) 0x83 (Master Boot Record) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT …   Deutsch Wikipedia

  • Ext2fs — ext2 Hersteller Rémy Card Vollständige Bezeichnung Second extended file system Erstveröffentlichung Januar 1993 (Linux) Partitionskennung Apple UNIX SVR2 (Apple Partition Map) 0x83 (Master Boot Record) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT …   Deutsch Wikipedia

  • Second extended Filesystem — ext2 Hersteller Rémy Card Vollständige Bezeichnung Second extended file system Erstveröffentlichung Januar 1993 (Linux) Partitionskennung Apple UNIX SVR2 (Apple Partition Map) 0x83 (Master Boot Record) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT …   Deutsch Wikipedia

  • HFS+ — Hersteller Apple Vollständige Bezeichnung Hierarchical File System Plus Erstveröffentlichung 19. Januar 1998 (Mac OS 8.1) Partitionskennung Apple HFS (Apple Partition Map) 0xAF (MBR) Apple HFSX (Apple Partition Map) when HFSX 48465300 0000 11AA… …   Deutsch Wikipedia

  • Master File Table — NTFS Hersteller Microsoft Vollständige Bezeichnung New Technology File System Erstveröffentlichung Juli 1993 (Windows NT 3.1) Partitionskennung 0x07 (MBR) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT) …   Deutsch Wikipedia

  • NTFS4DOS — NTFS Hersteller Microsoft Vollständige Bezeichnung New Technology File System Erstveröffentlichung Juli 1993 (Windows NT 3.1) Partitionskennung 0x07 (MBR) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT) …   Deutsch Wikipedia

  • NTFSDOS — NTFS Hersteller Microsoft Vollständige Bezeichnung New Technology File System Erstveröffentlichung Juli 1993 (Windows NT 3.1) Partitionskennung 0x07 (MBR) EBD0A0A2 B9E5 4433 87C0 68B6B72699C7 (GPT) …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”