Zum Inhalt springen

Ext3

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 24. Oktober 2006 um 20:11 Uhr durch MichiK (Diskussion | Beiträge) (Kritik: Linkfix). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Das ext3 (third extended filesystem) ist ein Journalingdateisystem, das für den Linux-Kernel entwickelt wurde. Bei vielen Linux-Distributionen ist es das Standard-Dateisystem.

Hintergrund

Die von Stephen Tweedie entwickelte Journalingerweiterung für ext2 sorgt dafür, dass Metadaten nicht mehr beschädigt werden können und somit auf einen kompletten Durchlauf der Integritätsprüfung e2fsck nach einem Rechnerabsturz verzichtet werden kann. Die Kombination von ext2 mit der Journal-Erweiterung wird als ext3 bezeichnet. Dabei ändert sich das Datenformat des Datenträgers bei der Verwendung eines Journals nicht. Die Daten können deshalb auch mit einem ext2-Dateisystemtreiber gelesen werden. Das Journal ist eine reguläre Datei, in die die Metadaten (optional auch die Nutzdaten) geschrieben werden, bevor sie auf das tatsächliche Dateisystem geschrieben werden. Aus einem ext2- kann man daher ein ext3-Dateisystem machen, ohne irgendwelche Daten konvertieren zu müssen.

Technische Eigenschaften

ext3 fügt dem ext2-System folgende Fähigkeiten hinzu:

  • Ein Journal
  • H-Baum-Verzeichnisindizes
  • Online-Veränderung der Dateisystemgröße

Wenn eine Änderung am Dateisystem (z. B. die Umbenennung einer Datei) durchgeführt wird, wird sie als Transaktion im Journal vermerkt und kann dann im Fall eines Absturzes entweder abgeschlossen oder noch nicht abgeschlossen sein. Wenn eine Transaktion zum Absturzzeitpunkt (oder im Normalfall, wenn das System nicht abstürzt) abgeschlossen war, ist garantiert, dass alle an dieser Transaktion beteiligten Blöcke einen gültigen Dateisystemstatus repräsentieren. Diese Blöcke werden dann ins Dateisystem kopiert. Wenn eine Transaktion zum Absturzzeitpunkt nicht abgeschlossen war, kann nicht garantiert werden, dass die beteiligten Blöcke konsistent sind, daher wird eine solche Transaktion verworfen (das bedeutet, dass die Dateisystemänderung, die diese Transaktion repräsentierte, verloren geht).

Bei abgebrochenen Schreiboperationen kann es passieren, dass ein Teil einer Datei bereits aus den neuen Daten besteht und ein Teil noch aus den alten, was manchmal noch schlimmer sein kann als ein inkonsistentes Dateisystem. ext3 bietet daher einen besonderen Modus, in dem auch Daten zunächst im Journal abgelegt werden. ext3 schützt nicht davor, dass Daten verloren gehen, die zum Absturzzeitpunkt zwar eigentlich bereits auf die Platte geschrieben sein sollten, vom Kernel jedoch noch in so genannten schmutzigen Puffern gehalten wurden, um sie später zurückzuschreiben. Nach dem Abspielen des Journals ist nur garantiert, dass man mit einem konsistenten Datenbestand zu einem gegebenen Zeitpunkt weiterarbeiten kann.

Journaling-Stufen

Die Linux-Implementierung von ext3 bietet drei Journaling-Stufen:

  • Full (Option data=journal), wobei sowohl Metadaten als auch Dateiinhalte erst ins Journal geschrieben werden, bevor sie ins Dateisystem geschrieben werden. Dies erhöht die Zuverlässigkeit, ist aber recht langsam, da alle Daten zweimal auf den Datenträger geschrieben werden müssen.
  • Writeback (Option data=writeback), wobei nur Metadaten ins Journal geschrieben werden. Das aktualisieren der Dateiinhalte wird dem normalen "sync" Prozess überlassen. Dies ist wesentlich schneller, birgt aber die Gefahr von Datenkorruption durch abgebrochene Out-of-Order-Schreibvorgänge im Absturzfall. Dateien, die sich zu diesem Zeitpunkt im Schreibzugriff befanden, können beim nächsten Einhängen des Dateisystems an ihrem Ende Datenmüll enthalten.
  • Ordered (Option data=ordered) funktioniert wie Writeback. Allerdings werden Dateiinhalte direkt ins Dateisystem geschrieben,erst danach werden die Metadaten im Journal aktualisiert. Dies gilt als akzeptabler Kompromiss zwischen Zuverlässigkeit und Geschwindigkeit und ist daher die Standardeinstellung.

Kritik

Einer der Hauptkritikpunkte bei ext3 ist die Tatsache, dass es die Block-Pointer der Inodes mit Nullen überschreibt. Dies macht ein Wiederherstellen von Dateien nach einem Löschvorgang vergleichsweise schwierig, was einen deutlichen Nachteil gegenüber anderen Dateisystemen darstellt.

Weiterhin ist ext3 deutlich langsamer als andere moderne Journaling-Dateisysteme wie zum Beispiel XFS oder ReiserFS.

Siehe auch

  • Offizielle ext3-FAQ (englisch)
  • LTOOLS - Zugriff u.a. auf ext2/3 Dateisysteme unter Windows (englisch)
  • Explore2fs - Lesen von ext2/3 Dateisystemen unter Windows (englisch)
  • Ext2 IFS for Windows - Lese- und Schreibzugriff auf ext2/3 Dateisysteme unter Windows (englisch), unterstützt vollständige integration in Windows wie eine normale Windows-Partition, sehr performant
  • Ext2fsd - Lese- und Schreibzugriff auf ext2/3 Dateisysteme unter Windows, auch bei Disketten (englisch)
  • Mac OS X Ext2 Filesystem – Zugriff auf ext2 von MacOSX aus (englisch)