Noch nicht ganz fertig

Trotz vieler Vorteile gegenüber der ersten Ext-Version kämpft Ext2 mit einigen Limitierungen. So darf ein Verzeichnis aufgrund eines internen Limits maximal 31 998 Verzeichnisse enthalten, wobei diese Zahl in der Praxis vermutlich nur selten eine Rolle spielt. Aufgrund der Art, wie Ext2 Dateien verwaltet, kommt das Dateisystem bei mehr als 10 000 Dateien in einem Ordner aus dem Tritt.

Zumindest besser als in Ext verhält es sich unter Ext2 mit den maximalen Datei- und Dateisystemgrößen: Mit Kernel-Versionen 2.4 oder später darf ein Ext2-Dateisystem immerhin bis zu 16 TByte umfassen und Dateien mit Größen von bis zu 2 TByte verwalten (vorausgesetzt, die Blockgröße beträgt 4 KByte).

Mit einem Linux-Kernel 2.4 oder älteren Versionen war noch die Größe von Block-Devices auf 2 TByte beschränkt, was folglich ein Ext2-Dateisystem ebenfalls auf diese Größe limitierte.

Sprung zu Ext3

Ext2 hatte sich zur Jahrtausendwende zu einem stabilen und weitverbreiteten Dateisystem entwickelt. Mit der Zeit erwies es sich für das Dateisystem jedoch immer schwieriger, die wachsenden Datenmengen auf stetig wachsenden Festplatten sinnvoll und effizient zu verwalten. Einige Entwickler, darunter der Schotte Dr. Stephen Tweedie, versuchten sich daher an Performance-Verbesserungen und nützlichen Änderungen im Code.

Die Architektur von Ext2 setzt jedoch bestimmte Grenzen, womit es irgendwann sinnvoll erschien, zu einer neuen Version des Dateisystems überzuleiten. Tweedie wagte daher mit anderen Entwicklern zusammen den Sprung und startete ein zu Ext2 abwärtskompatibles Ext3.

Eine große Neuerung in Ext3 war ein Feature, das Tweedie schon im Jahr 2000 als Erweiterung für Ext2 entwickelt hatte: das Journal. Diese Funktion sichert ein Dateisystem im Falle eines plötzlichen Crashes gegen Inkonsistenzen ab (siehe Kasten "Journal des Ext-Dateisystems"). Ext3 startete demnach im Wesentlichen als ein leicht verbessertes Ext2 mit Journal.

Journal des Ext-Dateisystems

Eine Änderung im Ext-Dateisystem wirkt sich an vielen Stellen aus: Kommt eine neue Datei hinzu, reserviert das Filesystem Blöcke sowie eine Inode-Position. Weiterhin legt Ext einen Inode an, schreibt die Daten, ändert die letzte Zugriffszeit im Inode des entsprechenden Verzeichnisses und aktualisiert die Statistiken im Superblock. Zudem schreibt der Kernel die Daten nicht direkt auf die Festplatte. Er behält sie zunächst im Arbeitsspeicher, signalisiert der Software aber, dass der Vorgang abgeschlossen sei. Erst nach einem festgelegten Intervall schreibt der Kernel optimiert mehrere Änderungen in einem Schwung auf die Platte.

Tritt jedoch vorher ein unvorhergesehenes Ereignis wie ein Systemabsturz auf, macht dies das Dateisystem mit hoher Wahrscheinlichkeit inkonsistent: Beispielsweise ist nicht klar, welche Daten der Kernel nun auf die Festplatte geschrieben hat und welche sich nur im flüchtigen Arbeitsspeicher befanden. Beim Booten oder beim Einhängen prüft das System daher das Dateisystem. Je nach Größe des Dateisystems und Geschwindigkeit des Mediums dauert dieser Test in etwa so lange wie ein bis zwei Folgen Ihrer Lieblingsfernsehserie. Im schlimmsten Fall fällt anschließend noch eine manuelle Reparatur an.

Ein Journal macht Tests dieser Art überflüssig: Das Dateisystem spannt eine Art Sicherheitsnetz. Unter Ext3 erfolgen Änderungen nicht direkt, stattdessen schreibt der Kernel diese erst ins Journal (eine Art Logbuch). Je nach Konfiguration enthält das Journal nur die Metadaten (also zum Beispiel die Nummern der reservierten Blöcke sowie alle anderen Nicht-Nutzdaten) oder Meta- und Nutzdaten. Als Standard speichern viele Distributionen aus Leistungsgründen meist nur die Metadaten.

Wurden alle zusammengehörigen Änderungen ins Journal geschrieben, gilt der Vorgang (Transaktion) als vollständig, ein sogenannter Commit schließt ihn ab. Bei nächster Gelegenheit schreibt der Kernel nun die Änderungen auf die Festplatte, womit nun ein neuer, konsistenter Zustand sichergestellt ist. Die eigentlichen Daten sind bei der Standardeinstellung schon auf der Festplatte gelandet, aber erst nach dem Journal-Commit referenziert das System sie im Dateisystem.

Tritt zwischen dem Journal-Commit und dem Schreiben der Änderungen ein Systemabsturz auf, braucht das System beim nächsten Booten während des Dateisystem-Checks lediglich die Transaktionen aus dem Journal ins Dateisystem zu überführen.

Ein vollständiges Maß an Sicherheit gibt es allerdings nur, wenn Sie dafür sorgen, dass das System die geänderten Inhalte im Journal vorhält. Wie das Journal arbeitet, legen Sie beim Mounten des Dateisystems fest (mit mount -o data=Modus, also zum Beispiel mount -o data=journal). Der Journal-Modus beeinträchtigt allerdings die Performance des Dateisystems, weshalb er nicht standardmäßig aktiv ist, obwohl er die bestmögliche Sicherheit bietet.

Der wohl am meisten genutzte Modus des Journals lautet ordered (häufig der Standard), wonach zunächst die Inhalte ins Dateisystem geschrieben und erst danach die Metadaten im Journal aktualisiert werden (Abbildung 4). Der dritte Modus, writeback, schreibt nur die Metadaten ins Journal und überlässt es dem Kernel, wann dieser die eigentlichen Inhalte auf die Festplatte schreibt.

Ein Dateisystem-Journal bietet je nach Konfiguration eine recht gute Versicherung gegen Systemabstürze. Das Journal lässt sich zudem bei Bedarf auf ein anderes Speichermedium auslagern, damit es die Performance des Ext-Dateisystems nicht beeinträchtigt. Es sorgt aber auch für wesentlich mehr Schreibzugriffe auf das darunterliegende Speichermedium. Bei Speichermedien mit einer limitierten Anzahl an Schreibzyklen, wie etwa Flash-Speicher, verkürzt das Journaling daher die Lebensdauer drastisch. Für diese Medien greift man daher in der Regel zu Ext2.

Abbildung 4: Mit dem Kommando dumpe2fs lassen sich Informationen zum Journal anzeigen. Der hier dargestellte Modus inode blocks entspricht dem Modus ordered.

Wie schon erwähnt skaliert Ext2 aufgrund einiger Designentscheidungen nicht gut, wenn es viele Tausend Dateien in Unterverzeichnissen beherbergt. Sobald das System in so einem Verzeichnis nach einer bestimmten Datei sucht, muss es aufwendig alle Einträge im Verzeichnis-Inode durchforsten, um das Ergebnis zu präsentieren.

Um für die Zukunft besser gewappnet zu sein, spendierten die Entwickler dem Dateisystem die sogenannte HTree-Indexstruktur. Diese baumartige Struktur ermöglicht es Ext3, Inhalte von Verzeichnissen effektiv zu organisieren, was die Suche nach Dateien erheblich beschleunigt.

Das Feature wurde ursprünglich schon für Ext2 entwickelt, schaffte es aber damals noch nicht in den offiziellen Quellcode. Während es unter Ext4 standardmäßig aktiviert ist, setzt Ext3 noch voraus, dass Sie das Directory-Indexing manuell anschalten. Außerdem erlaubt es Ext3, die Größe des Dateisystems zu ändern, während es noch eingehängt ist.

Darüber hinaus dürfen Sie definieren, wie sich der Kernel verhält, wenn er einige Metadaten des Dateisystems nicht versteht – zum Beispiel bei Schäden. Je nach Konfiguration kann der Kernel trotzdem das Dateisystem einhängen, wobei ein Schreibzugriff nur eingeschränkt möglich ist (und aus Gründen der Datensicherheit besser nicht geschehen sollte).

Ähnlich wie Windows-Dateisysteme zeigt sich Ext3 bei längerem Einsatz anfällig für Fragmentierung. Je nachdem, wie sich die freien Blöcke über das Dateisystem verteilen, kann das System vermutlich nicht immer zusammenhängende Daten auch hintereinanderschreiben. Abhilfe schafft die sogenannte Block-Preallokierung, mit der Ext3 Blöcke reserviert, bevor es sie wirklich benötigt. So gelingt es dem Dateisystem, die Daten möglichst nahe beieinander zu lagern.

Ein Online-Tool zur Defragmentierung gibt es für Ext3 übrigens nicht. Allerdings haben verschiedene Entwickler Werkzeuge veröffentlicht, die die Verteilung der Daten zumindest etwas optimieren. Durch das Hinzufügen eines Journals verwandeln Sie ein Ext2-Dateisystem in ein Ext3-Dateisystem, umgekehrt wird ebenfalls ein Schuh daraus.

Die Nähe zu seinem Vorgänger stellt übrigens den größten Nachteil von Ext3 dar: Da sich viele Strukturen ähneln, fehlten Ext3 anfangs einige Features, die konkurrierende Dateisysteme schon zu bieten hatten. Ein Ext3-Dateisystem mit einer Blockgröße von 4 KByte darf maximal 2 TByte große Dateien beherbergen und kann lediglich auf bis zu 16 TByte wachsen.

Einige Jahre nach Veröffentlichung von Ext3 galt das Dateisystem zwar als stabil, mehrere Firmen und Entwickler arbeiteten jedoch nach wie vor an Erweiterungen und Verbesserungen (besonders in Hinblick auf Performance und Stabilität). Auf der Kernel-Mailingliste entwickelte sich jedoch eine lebhafte Diskussion um die Frage, ob weitere Änderungen wirklich Verbesserungen an den fundamentalen Problemen bringen könnten oder den bisherigen Anwendern nicht sogar mehr Nachteile bescheren würden.

Schließlich einigten sich die Entwickler 2006 darauf, die Arbeit an Ext3 weitgehend einzustellen. Stattdessen entschieden sie sich, den Code des Dateisystems einmalig in einen neuen Zweig namens ext4 zu kopieren und neue Features sowie substanzielle Änderungen nur noch dort einzuspielen. Mehr als zwei Jahre später schaffte es Ext4 in Kernel 2.6.28, wodurch es nach und nach zum Standard für viele Distributionen avancierte.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Dateisysteme aufsetzen, konfigurieren und warten mit Bordmitteln
    Mit ein paar einfachen Shell-Befehlen legen Sie die Grundlage für jede moderne Linux-Distribution: das Dateisystem.
  • Clever schachteln
    Btrfs bringt alles mit, was die großen Spieler im Linux-Business von einem Dateisystem erwarten: Es ist schnell, erweiterbar und flexibel. Dieser Artikel stellt Ihnen das neue Linux-Dateisystem vor.
  • Festplatten und Dateisysteme
    Wer heute mit einem handelsüblichen Computer arbeitet, verwendet automatisch auch eine Festplatte. Wie die Dateien dort gespeichert werden und welche Möglichkeiten dabei geboten werden, weiß hingegen kaum jemand. Dieser Artikel will etwas Licht ins Dunkel bringen.
  • Inode in Not
    Mit den richtigen Werkzeugen fühlen Sie Ihrem Dateisystem auf den Zahn, beseitigen Inkonsistenzen und restaurieren beschädigte Dateien.
  • Umstieg auf das Ext3-Dateisystem
    Dateisysteme mit Journal erleichtern den Umgang mit Linux: Stürzt der Rechner ab, muss man beim Neustart nicht die langwierige Überprüfung der Dateisysteme mit "fsck" abwarten. Wir helfen bei der Umstellung auf Ext3fs und zeigen auch den Weg zurück.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...