ext3
ext3 | |
---|---|
Hersteller | Open-Source-Gemeinschaft |
Vollständige Bezeichnung | Third extended file system |
Erstveröffentlichung | November 2001 (Linux 2.4.15) |
Partitionskennung | 0x83 (MBR) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT) |
Technische Umsetzung | |
Verzeichnisse | Tabelle, optional H-Baum |
Dateien | bitmap (free space), Tabelle (metadata) |
Defektblockliste | Table |
Maximalwerte | |
Größe einer Datei | 16 GiB–2 TiB |
Anzahl aller Dateien | Variabel[1] |
Anzahl Unterverzeichnisse pro Verzeichnis | 32.000[2] (effektiv nur 31.998 wegen der Verknüpfungen zu . und ..) |
Länge des Dateinamens | 255 Byte |
Größe des Dateisystems | 2 TiB–32 TiB |
Erlaubte Zeichen im Dateinamen | Alle Bytes außer NUL und '/' |
Eigenschaften | |
Datumsangaben einer Datei | geändert (modification, mtime), Änderung der Metadaten (ctime), letzter Zugriff (atime) |
Datumsbereich | 1901-12-13 20:45:52 bis 2038-01-19 03:14:07 (UTC+0) (vgl. Jahr-2038-Problem) |
Forks | nein |
Dateiattribute | No-atime, append-only, synchronous-write, no-dump, h-tree (directory), immutable, journal, secure-delete, top (directory), allow-undelete |
Dateirechte-Verwaltung | Unix-Dateirechte, ACLs und arbitrary security attributes (ab Linux-Kernel 2.6) |
Transparente Komprimierung | nein |
Transparente Verschlüsselung | nein |
Unterstützende Betriebssysteme | Linux, BSD, Windows (durch Tools/Treiber) |
Das ext3 (englisch third extended filesystem) ist das dritte extended filesystem, das für den Linux-Kernel entwickelt wurde. Es ist ein Journaling-Dateisystem und ersetzte seinen Vorgänger ext2 bei vielen Linux-Distributionen als Standard-Dateisystem. Es wurde vollständig durch ext4 ersetzt.
Hintergrund
Die von Stephen Tweedie entwickelte Journaling-Erweiterung für ext2 sorgt dafür, dass Metadaten nicht mehr korrumpiert 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 mit einem ext2-Dateisystemtreiber gelesen werden. Das Journal ist eine Dateistruktur, in die Metadaten (optional die Nutzdaten) geschrieben werden, bevor sie auf das tatsächliche Dateisystem geschrieben werden. Aus einem ext2- kann daher ein ext3-Dateisystem gemacht werden, ohne irgendwelche Daten konvertieren zu müssen.
Als direkter Nachfolger existiert ext4.
In Linux 4.3 wurde der Code des nativen Treibers für Ext3 endgültig entfernt. Ext3 wird weiterhin vom Treiber des Nachfolgers Ext4 unterstützt.[3][4]
Technische Eigenschaften
ext3 fügt dem ext2-System folgende Fähigkeiten hinzu:
- ein Journal
- H-Baum-Verzeichnisindizes
- Online-Veränderung der Dateisystemgröße
Bei H-Bäumen (englisch Htree) handelt es sich um eine spezielle Form von B-Bäumen, die für ext3 entwickelt wurden.[5]
Wenn eine Änderung am Dateisystem (zum Beispiel die Umbenennung einer Datei) durchgeführt wird, wird sie als Transaktion im Journal vermerkt und kann im Fall eines Absturzes entweder abgeschlossen oder noch nicht abgeschlossen sein. Wenn eine Transaktion zum Absturzzeitpunkt abgeschlossen war, ist garantiert, dass alle an dieser Transaktion beteiligten Blöcke einen gültigen Dateisystemstatus repräsentieren. Diese Blöcke werden anschließend 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, verlorengeht).
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 Daten zunächst im Journal abgelegt werden. ext3 schützt nicht davor, dass Daten verlorengehen, die zum Absturzzeitpunkt zwar bereits auf die Platte geschrieben sein sollten, vom Kernel jedoch noch in sogenannten schmutzigen Puffern gehalten wurden, um sie später zurückzuschreiben. Nach dem Abspielen des Journals ist nur garantiert, dass mit einem konsistenten Datenbestand zu einem gegebenen Zeitpunkt weitergearbeitet werden 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 jedoch recht langsam beim Schreiben, da alle Daten zweimal auf den Datenträger geschrieben werden müssen. Lesevorgänge werden beschleunigt.
- 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 jedoch die Gefahr von Datenverlust 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.
Kompatibilität zu nicht nativen Betriebssystemen
Es gibt verschiedene Treiber, Programme und Plugins, die einen Zugriff auf ext3, durch die Abwärtskompatibilität ebenfalls auf ext2, unter anderen Betriebssystemen außer den Nativen zulassen. Diese sind insbesondere von Nutzen, wenn Laufwerke unter mehreren Betriebssystemen verwendet werden sollen, so zum Beispiel ein USB-Laufwerk in einer gemischten Linux/Windows-Umgebung. Sie stellen eine Alternative zu den Ansätzen dar, in solchen Linux/Windows-Umgebungen das in seinen Fähigkeiten sehr limitierte Dateisystem FAT/FAT32 zu verwenden oder das proprietäre NTFS von Microsoft durch Reverse-Engineering Linux-basierten Betriebssystemen zugänglich zu machen, wie beispielsweise NTFS-3G. Insbesondere in Dual-Boot-Konfigurationen ist es vorteilhaft, auf eine ext3-Linux-Partition zugreifen zu können und diesen Speicherplatz für Windows nutzbar zu machen. Da ext3, wie viele UNIX basierte Dateisysteme, zwischen Groß- und Kleinschreibung unterscheidet (Case sensitivity), kann es bei der Nutzung unter Betriebssystemen welche Groß- und Kleinschreibung ignorieren, wie z. B. Windows, zu gravierenden Problemen kommen.
Kritik
Ext3 ist langsamer als andere moderne Journaling-Dateisysteme, wie zum Beispiel XFS oder JFS, dafür jedoch relativ robust.
Weiterhin überschreibt ext3 bei Löschvorgängen die Block-Pointer der Inodes mit Nullen. Dies erschwert ein Wiederherstellen gelöschter Dateien, erhöht jedoch die Wahrscheinlichkeit, dass die Integrität des Dateisystems nach einem Programmfehler oder Systemausfall ohne Datenverlust wiederhergestellt werden kann. Ein Wiederherstellen der Daten ist mitunter dennoch möglich.[6]
Siehe auch
Weblinks
- Ext2/3 Treiber für Windows, mit Ext3 Journaling Unterstützung, Open Source (englisch)
- Ext2/3 Treiber für Windows, Freeware (englisch)
- Das Linux-Dateisystem Ext3 tunen auf heise open
- Offizielle ext3-FAQ (englisch)
Einzelnachweise
- ↑ Die maximale Zahl von Inodes (und damit die maximale Anzahl von Dateien und Verzeichnissen) wird bei der Erzeugung des Dateisystems festgelegt. Sei die Größe des Dateisystems in Bytes, so ergibt sich die voreingestellte Anzahl von Inodes durch (oder die Anzahl von Datenblöcken, es wird der niedrigere Wert genommen), und die minimale Anzahl von Inodes ist . Der voreingestellte Wert ist für die meisten Anwendungsszenarien ausreichend.
- ↑ http://kernelnewbies.org/Ext4
- ↑ Jörg Thoma: In Linux 4.3 fehlt der Ext3-Treiber. In: Golem.de. 15. September 2015, abgerufen am 15. September 2015.
- ↑ Linus Torvalds: Re: [GIT PULL] Ext3 removal, quota & udf fixes. In: Gmane.linux.kernel. 2. September 2015, abgerufen am 15. September 2015.
- ↑ Archivierte Kopie (Memento vom 18. Juli 2019 im Internet Archive)
- ↑ Anleitung zum Wiederherstellen von Dateien (Memento vom 19. September 2010 im Internet Archive)