|
Dies ist die wohl wichtigste Eigenschaft der neueren Dateisysteme.
Ein Journal ermöglicht es, ein Dateisystem nach einem plötzlichen
Systemausfall in einem konsistenten Zustand zu erhalten.
Damit sind langwierige Dateisystem-Tests nach einem solchen Ausfall
nicht mehr notwendig.
Daten werden nicht sofort auf den Datenträger geschrieben, sondern
aus Performance-Gründen zunächst im Arbeitsspeicher gehalten.
Für die Anwendungen gelten die Daten aber schon in diesem Zustand
als gespeichert, damit diese zügig weiterarbeiten können.
Im Arbeitsspeicher wird zusätzlich die Reihenfolge der
Schreibzugriffe so umgestellt, dass möglichst viele Schreibzugriffe
auf einmal durchgeführt werden können. Durch die Firmware der Festplatten
wird die nochmals optimiert, so dasse Kopfbewegungen der Festplatte
erheblich reduziert werden.
Die Daten werden anschließend, mit einer gewissen zeitlichen
Verzögerung, in einem Rutsch auf die Festplatte geschrieben.
Dieses als Caching bezeichnete Verfahren ermöglicht ein wesentlich
schnelleres Arbeiten.
Fällt nun aber plötzlich der Strom aus, ist nicht klar, in welchem
Zustand die Daten gerade waren. Sind sie auf die Platte geschrieben
oder waren sie noch im Arbeitsspeicher?
Deshalb ist in solch einem Fall ohne Journaling eine Prüfung aller
Dateien notwendig, was bei größeren Festplatten sehr lange, bis zu
mehrere Stunden, dauern kann. Dies ist für Produktiv-Systeme in der
Regel nicht akzeptabel.
Darüber hinaus kann bei Inkonsistenzen ein manueller Eingriff notwendig
werden, schlimmstenfalls lässt sich das Dateisystem
nicht mehr reparieren, was allerdings sehr selten vorkommt.
Das Journaling-Dateisystem vermeidet derartig lange
Dateisystem-Prüfungen. Darüber hinaus werden die genannten
Inkonsistenzen, die in seltenen Fällen das Dateisystem zerstören können,
meist vermieden.
|
Ein Dateisystem benötigt interne Verwaltungs-Strukturen, welche
die eigentlichen Daten der Festplatte organisieren und griffbereit
halten. Solche internen Strukturen werden Metadaten genannt
und sind sozusagen die Daten über die Daten.
Die Metadaten definieren z. B., wo die Datenblöcke einer Datei zu finden
sind, wer Besitzer ist, die Rechte, die letzten Zugriffszeitpunkte
und anderes mehr.
Diese Verwaltungsdaten müssen unbedingt konsistent gehalten werden.
So lässt sich auf eine Datei nicht zugreifen, wenn die Datenblöcke
nicht dort sind, wo sie laut Metadaten zu sein haben.
Oder es könnte passieren, dass bestimmte Datenblöcke als nicht belegt
definiert sind, obwohl dort Daten abgelegt sind, die somit
überschrieben werden könnten.
Wird eine Datei neu angelegt, so werden in mindestens fünf
verschiedenen Strukturen der Metadaten Änderungen vorgenommen.
Gibt es während dieser Änderungen einen Systemausfall, ist das
Dateisystem inkonsistent - es sei denn, es gibt ein Journal.
|
Bevor eine Änderung an den Metadaten vorgenommen wird, wie durch das
Anlegen einer neuen Datei, werden die dafür nötigen
Metadaten-Änderungen zunächst ausschließlich in das Journal
geschrieben, welches eine Art Log-Datei darstellt.
Diese Einträge im Journal gelten solange nicht für das Dateisystem,
bis die Journal-Einträge mit einem commit abgeschlossen
werden. Erst dann werden die neuen Metadaten auf die Festplatte geschrieben.
Wie soll dies nun vor Inkonsistenzen nach einem Systemabsturz schützen?
Nach einem Neustart zieht das Dateisystem als erstes das Journal zu Rate.
Sind die Einträge im Journal schon mit einem commit
abgeschlossen, sind die Metadaten gültig und die Einträge werden auf
die Festplatte übertragen. Fehlt das commit als
abschließender Eintrag, werden die Metadaten nicht von dem Journal auf
die Festplatte geschrieben, sondern verworfen.
Bei Dateisystemen ohne Journal, wie Ext2, müssen dagegen alle Metadaten
überprüft werden, ob sie konsistent sind, was die erwähnten langen
Wartezeiten bewirkt.
Was ist nun mit den eigentlichen Daten, wann werden diese auf die
Festplatte gespeichert? Das ist bei den verschiedenen Dateisystemen
verschieden implementiert. Bei Ext3 werden zunächst die
eigentlichen Daten auf die Festplatte geschrieben,
erst anschließend wird das abschließende commit im Journal
gesetzt. Bei den anderen Journaling Dateisystemen können dagegen die Metadaten
schon auf die Festplatte geschrieben werden, bevor die Daten komplett
auf der Festplatte sind, was zu Problemen führen kann, aber schneller ist.
Hier hat Ext3 in Sachen Sicherheit die Nase vorn.
Die Integrität der eigentlichen Daten stellt das Journal leider nicht sicher.
Es kann also durchaus sein, das nach einem Absturz eine Datei einen
Mix aus einer alten und neuen Version enthält.
Auch hier hat Ext3 die Nase vorn, denn nur Ext3
kann über die Metadaten hinaus auch die Datenänderungen selbst
mitprotokollieren, mehr dazu siehe Ext2 und Ext3.
|
|
|
Ein Binärbaum ermöglicht einen beschleunigten Zugriff auf die
Informationen der Verzeichniseinträge, insbesondere bei Verzeichnissen
mit vielen Dateien und Unterverzeichnissen. Bei einem traditionellen
Dateisystem wie Ext2/Ext3 müssen der Reihe
nach alle Verzeichniseinträge durchgegangen werden, bis der gesuchte
Eintrag gefunden ist (doppelt verzeigerte Liste).
Somit ermöglicht ein Binärbaum ein beschleunigtes Suchen im Dateisystem.
Beispiel:
Wird ein Verzeichnis mit 1000 Einträgen nach einem Dateinamen
durchsucht, sind ohne Binärbaum-Struktur durchschnittlich 500
Suchaktionen notwendig, mit Hilfe eines Binärbaum dagegen nur 10.
|
Allerdings benötigt ein Binärbaum mehr Rechenzeit, da das System
komplexer ist und nach Bearbeitung der Verzeichniseinträge erneut
ausbalanciert werden muss.
|
Außer ReiserFS können alle hier genannten
Dateisysteme um ACLs
erweitert werden.
Der Vorteil liegt im Wegfall der Unix-typischen
Beschränkung, das Rechte auf eine Datei oder ein Verzeichnis nur für
je einen Besitzer, eine Gruppe und alle anderen gesetzt werden kann.
Im Gegensatz dazu können mit Hilfe von ACLs verschiedene Rechte für
nahezu beliebig viele Nutzer und Gruppen vergeben werden, was
insbesondere für Netzwerkanwendungen sehr nützlich ist.
So kann einer Gruppe Lese-, einer anderen Gruppe Schreibrecht
gegeben werden, alle anderen können ausgeschlossen werden.
Es können allerdings bislang nur wenige Linux-Programme diese
erweiterten Rechte nutzen, wie etwa Samba.
|
Es sind nicht wenige Geschwindigkeitstests veröffentlicht worden.
Je nach Testumgebung und Zeitpunkt unterscheiden sich die Ergebnisse
erheblich, widersprechen sich zum Teil, deshalb müssen sie mit
großer Vorsicht genossen werden.
Außerdem entwickeln sich die neueren Dateisysteme rasant, so dass die
Tests oft schon veraltet sind. Und es ist die Frage, wie relevant die
Geschwindigkeit für die Praxis ist. Deshalb sind hier nur allgemeine
Tendenzen der Dateisysteme angegeben.
|
Journaling verhindert leider nicht die regelmäßigen
Dateisystem-Überprüfungen, wie oft behauptet wird.
Ist der maximum mount count (oft nach dem 24. mounten) oder
aber der check intervall (oft nach einem halben Jahr ohne
Dateisystem-Check) überschritten, löst ein Neustart eine Dateisystemprüfung
aus, was natürlich oft sehr störend ist. Es sollen damit einerseits Fehler
im Dateisystem-Code begegnet, andererseits frühzeitig Hardware-Fehler
erkannt werden, wie etwa defekte Sektoren.
|
|
|