13.2. Wichtige Dateisysteme in Linux

Die Wahl eines Dateisystems für ein Linux-System ist nicht mehr wie noch vor zwei oder drei Jahren eine Sache von wenigen Sekunden (Ext2 oder ReiserFS?). Kernels, die mit 2.4 beginnen, stellen eine Vielzahl von Dateisystemen zur Auswahl. Nachfolgend erhalten Sie einen Überblick über die grundlegende Funktionsweise und die Vorzüge dieser Dateisysteme.

Denken Sie daran, dass es wahrscheinlich kein Dateisystem gibt, das für alle Arten von Anwendungen optimal ist. Jedes Dateisystem hat seine Stärken und Schwächen, die berücksichtigt werden müssen. Selbst das anspruchsvollste Dateisystem kann jedoch keine vernünftige Strategie für Sicherungskopien ersetzen.

Die Begriffe Datenintegrität und Datenkonsistenz beziehen sich in diesem Kapitel nicht auf die Konsistenz der Daten auf Benutzerebene (Daten, die Ihre Anwendung in ihre Dateien schreibt). Ob diese Daten konsistent sind, muss die Anwendung selbst prüfen.

[Important]Einrichten von Dateisystemen

Wenn in diesem Kapitel nicht anders angegeben, können alle Schritte für das Einrichten oder Ändern von Partitionen und Dateisystemen mit YaST ausgeführt werden.

13.2.1. ReiserFS

Offiziell eines der Hauptmerkmale der Kernel-Version 2.4, steht ReiserFS als Kernel-Patch für 2.2.x SUSE-Kernels seit SUSE Linux-Version 6.4 zur Verfügung. ReiserFS wurde von Hans Reiser und dem Namesys-Entwicklungsteam entwickelt. Es hat sich als leistungsstarke Alternative zu Ext2 bewährt. Seine Vorzüge sind eine bessere Nutzung des Speicherplatzes, bessere Leistung beim Plattenzugriff und schnellere Wiederherstellung nach einem Absturz.

Die Stärken von ReiserFS:

Bessere Nutzung des Speicherplatzes

In ReiserFS werden alle Daten in einer Struktur namens „B*-balanced Tree“ organisiert. Die Baumstruktur trägt zur besseren Nutzung des Festplattenspeichers bei, da kleine Dateien direkt in den Blättern des B*-Baums gespeichert werden können, statt sie an anderer Stelle zu speichern und einfach den Zeiger auf den tatsächlichen Ort zu verwalten. Zusätzlich wird der Speicher nicht in Einheiten von 1 oder 4 KB zugewiesen, sondern in exakt der benötigten Größe. Ein weiterer Vorteil liegt in der dynamischen Zuweisung von Inodes. Damit bleibt das Dateisystem flexibler als traditionelle Dateisysteme wie Ext2, bei dem die Inode-Dichte bei der Erstellung des Dateisystems angegeben werden muss.

Bessere Leistung beim Festplattenzugriff

Bei kleinen Dateien werden häufig die Dateidaten und die „stat_data“ (Inode)-Informationen nebeneinander gespeichert. Sie lassen sich in einer einzigen E/A-Operation lesen, d. h., ein einziger Festplattenzugriff genügt, um alle benötigten Informationen abzurufen.

Schnelle Wiederherstellung nach einem Absturz

Durch Verwendung eines Journals zur Nachverfolgung kürzlich erfolgter Metadatenänderungen reduziert sich die Dateisystemüberprüfung sogar für große Dateisysteme auf wenige Sekunden.

Zuverlässigkeit durch Daten-Journaling

ReiserFS unterstützt auch Daten-Journaling und „ordered-data“-Modi ähnlich den Konzepten, die im Ext3-Abschnitt, Abschnitt 13.2.3, „Ext3“, umrissen werden. Der Standardmodus ist data=ordered, was die Integrität von Daten und Metadaten sicherstellt, aber Journaling nur für Metadaten nutzt.

13.2.2. Ext2

Die Ursprünge von Ext2 reichen bis zu den Anfangstagen der Linux-Geschichte zurück. Sein Vorgänger, das Extended File System, wurde im April 1992 implementiert und in Linux 0.96c integriert. Das Extended File System unterzog sich einer Reihe von Änderungen und entwickelte sich als Ext2 für viele Jahre zum beliebtesten Linux-Dateisystem. Mit der Erstellung von Journaling File Systemen und ihren verblüffend kurzen Wiederherstellungszeiten verlor Ext2 an Bedeutung.

Eine kurze Zusammenfassung der Stärken von Ext2 kann erhellen, warum es bei vielen Linux-Benutzern das bevorzugte Linux-Dateisystem war – und in einigen Bereichen immer noch ist.

Stabilität

Als wahrer „Oldtimer“ erlebte Ext2 viele Verbesserungen und wurde ausgiebig getestet. Das kann der Grund dafür sein, dass es als „unerschütterlich“ gilt. Wenn nach einem Systemausfall kein ordnungsgemäßes Aushängen des Dateisystems möglich war, beginnt e2fsck, die Dateisystemdaten zu analysieren. Metadaten werden in einen konsistenten Zustand gebracht und schwebende Dateien oder Datenblöcke werden in ein ausgewiesenes Verzeichnis geschrieben (genannt lost+found). Im Unterschied zu Journaling File Systemen analysiert e2fsck das ganze Dateisystem und nicht nur die kürzlich geänderten Metadaten. Das dauert erheblich länger als das Überprüfen der Protokolldaten eines Journaling File Systems. Abhängig von der Größe des Dateisystems kann dies eine halbe Stunde oder länger dauern. Daher sollte Ext2 nicht für einen Server gewählt werden, der auf hohe Verfügbarkeit angewiesen ist. Da Ext2 jedoch kein Journal führt und bedeutend weniger Speicher belegt, ist es manchmal schneller als andere Dateisysteme.

Einfaches Upgrade

Der Code für Ext2 bildet die verlässliche Grundlage, auf der sich Ext3 zu einem hoch geschätzten Dateisystem der nächsten Generation entwickeln konnte. Seine Zuverlässigkeit und Stabilität wurden geschickt mit den Vorzügen eines Journaling File Systems kombiniert.

13.2.3. Ext3

Ext3 wurde von Stephen Tweedie entwickelt. Im Unterschied zu allen anderen Dateisystemen der nächsten Generation folgt Ext3 keinem komplett neuen Entwicklungsprinzip. Es basiert auf Ext2. Diese beiden Dateisysteme sind sehr eng miteinander verwandt. Ein Ext3-Dateisystem kann einfach auf einem Ext2-Dateisystem aufgebaut werden. Der wesentlichste Unterschied zwischen Ext2 und Ext3 liegt darin, dass Ext3 Journaling unterstützt. Insgesamt bietet Ext3 drei wesentliche Vorteile:

Einfache und höchst zuverlässige Dateisystem-Upgrades von Ext2

Da Ext3 auf dem Ext2-Code basiert und dessen platteneigenes Format sowie sein Metadatenformat teilt, sind Upgrades von Ext2 auf Ext3 unglaublich einfach. Im Unterschied zur Umstellung auf andere Journaling File Systeme, wie z. B. ReiserFS oder XFS, die sich ziemlich langwierig gestalten können (Anlegen von Sicherungskopien des kompletten Dateisystems und ein kompletter Neuaufbau des Dateisystems), ist eine Umstellung auf Ext3 eine Sache von Minuten. Zudem ist es sehr sicher, da die Neuerstellung eines ganzen Dateisystems von Grund auf eventuell nicht reibungslos funktioniert. In Anbetracht der bestehenden Ext2-Systeme, die auf ein Upgrade auf ein Journaling File System warten, lässt sich leicht ausrechnen, warum Ext3 für viele Systemadministratoren eine gewisse Bedeutung hat. Ein Downgrade von Ext3 auf Ext2 ist genauso leicht wie das Upgrade. Führen Sie einfach ein sauberes Aushängen des Ext3-Dateisystems durch und hängen Sie es neu als ein Ext2-Dateisystem ein.

Zuverlässigkeit und Leistung

Einige andere Journaling File Systeme nutzen die Journaling-Methode „nur Metadaten“. Das bedeutet, Ihre Metadaten bleiben stets in einem konsistenten Zustand, jedoch kann dasselbe nicht automatisch für die eigentlichen Dateisystemdaten garantiert werden. Ext3 ist in der Lage, sich sowohl um die Metadaten als auch die Daten selbst zu kümmern. Wie eingehend sich Ext3 um Daten und Metadaten „kümmert“, ist individuell einstellbar. Maximale Sicherheit (Datenintegrität) wird durch den Start von Ext3 im Modus data=journal erreicht; dies kann jedoch das System verlangsamen, da sowohl Metadaten als auch Daten selbst im Journal erfasst werden. Ein relativ neuer Ansatz besteht in der Verwendung des Modus data=ordered, der sowohl die Daten- als auch die Metadatenintegrität gewährleistet, jedoch das Journaling nur für Metadaten verwendet. Der Dateisystemtreiber sammelt alle Datenblöcke, die einem Metadaten-Update entsprechen. Diese Datenblöcke werden vor dem Metadaten-Update auf Platte geschrieben. So wird Konsistenz für Metadaten und Daten erzielt, ohne die Leistung zu beeinträchtigen. Eine dritte Möglichkeit ist die Verwendung von data=writeback, bei der Daten in das Hauptdateisystem geschrieben werden können, nachdem die Metadaten im Journal festgeschrieben wurden. Diese Option wird häufig als die beste hinsichtlich der Leistung betrachtet. Sie kann jedoch ermöglichen, dass alte Daten nach einem Absturz und der Wiederherstellung erneut in Dateien auftauchen, während die interne Integrität des Dateisystems bewahrt wird. Sofern nicht anders angegeben, wird Ext3 mit der Standardeinstellung data=ordered gestartet

13.2.4. Konvertieren eines Ext2-Dateisystems in Ext3

Gehen Sie wie folgt vor, um ein Ext2-Dateisystem in Ext3 zu konvertieren:

  1. Legen Sie ein Ext3-Journal an, indem Sie tune2fs -j als „root“ ausführen. Dabei wird ein Ext3-Journal mit den Standardparametern erstellt.

    Falls Sie selbst die Größe des Journals und dessen Speicherort festlegen möchten, führen Sie stattdessen tune2fs -J zusammen mit den entsprechenden Journaloptionen size= und device= aus. Weitere Informationen über das Programm tune2fs finden Sie auf der Manualpage „tune2fs“.

  2. Um sicherzustellen, dass das Ext3-Dateisystem als solches erkannt wird, bearbeiten Sie die Datei /etc/fstab als „root“, indem Sie den Dateisystemtyp für die entsprechende Partition von ext2 in ext3 ändern. Diese Änderung wird nach dem nächsten Neustart wirksam.

  3. Um ein Root-Dateisystem zu booten, das als Ext3-Partition eingerichtet wurde, nehmen Sie die Module ext3 und jbd in initrd auf. Bearbeiten Sie hierfür /etc/sysconfig/kernel als „root“, indem Sie ext3 und jbd der Variablen INITRD_MODULES hinzufügen. Führen Sie nach dem Speichern der Änderungen den Befehl mkinitrd aus. Damit wird eine neue initrd aufgebaut und zur Verwendung vorbereitet.

13.2.5. Reiser4

Direkt nach der Veröffentlichung von Kernel 2.6 bekam die Familie der Journaling File Systeme Zuwachs durch ein weiteres Mitglied: Reiser4. Reiser4 unterscheidet sich grundlegend von seinem Vorgänger ReiserFS (Version 3.6). Es optimiert die Dateisystemfunktionalität durch Plugins und bietet ein engmaschigeres Sicherheitskonzept.

Engmaschiges Sicherheitskonzept

Bei Reiser4 legten die Entwickler besonderen Wert auf die Implementierung von Sicherheitsfunktionen. Reiser4 wird daher mit einem Satz an speziellen Sicherheits-Plugins geliefert. Das wichtigste führt das Konzept von Datei-„Items“ ein. Derzeit wird die Dateizugriffskontrolle pro Datei definiert. Wenn eine umfangreiche Datei relevante Informationen für mehrere Benutzer, Gruppen oder Anwendungen enthält, mussten die Zugriffsrechte ziemlich unpräzise sein, um alle betroffenen Parteien zu berücksichtigen. In Reiser4 können Sie diese Dateien in kleinere Teile (die „Items“) zerlegen. Zugriffsrechte lassen sich dann für jedes Element und jeden Benutzer separat festlegen, was eine viel präzisere Verwaltung der Dateisicherheit erlaubt. Ein perfektes Beispiel ist /etc/passwd. Bisher konnte nur root die Datei lesen und bearbeiten, während Nicht-root-Benutzer nur Lesezugriff auf diese Datei erhielten. Mithilfe des Item-Konzepts von Reiser4 können Sie diese Datei in mehrere Elemente zerlegen (ein Item pro Benutzer) und Benutzern oder Anwendungen erlauben, ihre eigenen Daten zu ändern, aber nicht auf die Daten anderer Benutzer zuzugreifen. Dieses Konzept erhöht sowohl die Sicherheit als auch die Flexibilität.

Erweiterbarkeit durch Plugins

Viele Dateisystemfunktionen und externe Funktionen, die ein Dateisystem gewöhnlich nutzt, werden in Reiser4 als Plugins implementiert. Diese Plugins lassen sich bequem dem Basissystem hinzufügen. Sie brauchen den Kernel nicht mehr neu zu kompilieren oder die Festplatte neu zu formatieren, um Ihrem Dateisystem neue Funktionen hinzuzufügen.

Besseres Dateisystemlayout durch „Delayed Allocation“

Wie XFS unterstützt Reiser4 „Delayed Allocation“ (verzögerte Speicherzuweisung). Siehe Abschnitt 13.2.6, „XFS“. Der Einsatz dieser Technik sogar für Metadaten kann zu einem besseren Gesamtlayout führen.

13.2.6. XFS

Ursprünglich als Dateisystem für ihr IRIX-Betriebssystem gedacht, begann SGI die Entwicklung von XFS bereits in den frühen 1990er-Jahren. Mit XFS sollte ein leistungsstarkes 64-Bit-Journaling File System geschaffen werden, das den extremen Herausforderungen der heutigen Zeit gewachsen ist. XFS eignet sich sehr gut für den Umgang mit großen Dateien und zeigt gute Leistungen auf High-End-Hardware. Jedoch hat auch XFS einen Schwachpunkt. Wie ReiserFS legt XFS großen Wert auf Metadatenintegrität, jedoch weniger auf Datenintegrität.

Ein kurzer Blick auf die Hauptmerkmale von XFS erklärt, warum es sich möglicherweise als starke Konkurrenz zu anderen Journaling File Systemen in der High-End-Datenverarbeitung erweisen könnte.

Hohe Skalierbarkeit durch den Einsatz von Zuweisungsgruppen

Bei der Erstellung eines XFS-Dateisystems wird das dem Dateisystem zugrunde liegende Blockgerät in acht oder mehr lineare Bereiche gleicher Größe unterteilt. Diese werden als Zuweisungsgruppen (Allocation Groups) bezeichnet. Jede Zuweisungsgruppe verwaltet Inodes und freien Speicher selbst. Zuordnungsgruppen können praktisch als Dateisysteme im Dateisystem betrachtet werden. Da Zuordnungsgruppen relativ autonom sind, kann der Kernel gleichzeitig mehrere von ihnen adressieren. Diese Funktion ist der Schlüssel zur hohen Skalierbarkeit von XFS. Das Konzept der autonomen Zuordnungsgruppen kommt natürlicherweise den Anforderungen von Multiprozessorsystemen entgegen.

Hohe Leistung durch effiziente Verwaltung des Festplattenspeichers

Freier Speicher und Inodes werden von B+-Bäumen innerhalb der Zuordnungsgruppen verwaltet. Der Einsatz von B+-Bäumen trägt wesentlich zur Leistung und Skalierbarkeit von XFS bei. XFS verwendet Delayed Allocation (verzögerte Speicherzuweisung). Es führt die Speicherzuweisung in zwei Schritten durch. Eine ausstehende Transaktion wird im RAM gespeichert und der entsprechende Speicherplatz reserviert. XFS entscheidet noch nicht, wo genau (d. h. in welchen Dateisystemblöcken) die Daten gespeichert werden. Diese Entscheidung wird auf den letztmöglichen Moment hinausgezögert. Einige kurzlebige, temporäre Daten werden somit niemals auf Platte gespeichert, da sie zum Zeitpunkt der Entscheidung über ihren Speicherort durch XFS bereits überholt sind. So erhöht XFS die Leistung und verringert die Fragmentierung des Dateisystems. Da jedoch eine verzögerte Zuweisung weniger Schreibvorgänge als in anderen Dateisystemen zur Folge hat, ist es wahrscheinlich, dass der Datenverlust nach einem Absturz während eines Schreibvorgangs größer ist.

Vorabzuweisung zur Vermeidung von Dateisystemfragmentierung

Vor dem Schreiben der Daten in das Dateisystem reserviert XFS den benötigten Speicherplatz für eine Datei (bzw. weist ihn vorab zu). Damit wird die Dateisystemfragmentierung erheblich reduziert. Die Leistung wird erhöht, da die Dateiinhalte nicht über das gesamte Dateisystem verteilt werden.