ext4, ext3 und ext2, erklärt.
Was die Linux-Dateisysteme sind, wie sie Dateien auf einem Datenträger anordnen, was das Journal schützt, welche Features und Grenzen heute zählen und wie du ein ext4-Laufwerk auf einem Mac oder einem Windows-PC öffnest.
Zuletzt geprüft
Was ext2, ext3 und ext4 sind
ext2, ext3 und ext4 sind das zweite, dritte und vierte Extended File System – die Formate, die Linux seit mehr als dreißig Jahren für seine eigenen Datenträger verwendet. Ein Dateisystem legt fest, wie Dateien, Ordner, Namen, Rechte und Zeitstempel auf einem Datenträger angeordnet sind, damit jeder Rechner, der das Format kennt, sie wiederfindet.
Heute begegnest du vor allem ext4. Debian, Ubuntu und Raspberry Pi OS formatieren ihre Datenträger damit, es ist die übliche Wahl für die Datenplatte eines Linux-Servers, und Google hat Android-Telefone 2010 darauf umgestellt. Ein USB-Stick oder eine SD-Karte, die unter Linux vorbereitet wurde, ist fast immer ext4.
Die drei sind eine Familie, keine drei verschiedenen Formate. Jede Generation hat das Layout der vorigen übernommen und erweitert. Deshalb lesen und schreiben aktuelle Linux-Kernel alle drei mit einem einzigen ext4-Treiber.
Eine kurze Geschichte
- 1992
ext, das Extended File System
Rémy Card schreibt es für Linux 0.96c als Ersatz für das Minix-Dateisystem, mit dem Linux begann und dessen Grenzen für Datenträgergröße und Dateinamen schon zu eng waren.
- 1993
ext2
Eine Neukonstruktion im Januar 1993 für Linux 0.99, mit Ideen aus dem Fast File System von BSD: der Datenträger in Blockgruppen geteilt, getrennte Zeiten für Zugriff, Änderung und Bearbeitung. Es bleibt für den Rest des Jahrzehnts der Standard unter Linux.
- 2001
ext3 bekommt ein Journal
Stephen Tweedies ext3 kommt mit Linux 2.4.15 im November 2001 in den Hauptkernel. Das Layout ist das von ext2, ein ext2-Datenträger wird also durch ein hinzugefügtes Journal zu ext3 – nur bedeutet ein Absturz keine lange Prüfung des ganzen Datenträgers mehr.
- 2006
Die Arbeit an ext4 beginnt
Theodore Ts’o kündigt den Plan am 28. Juni 2006 an und baut auf Erweiterungen auf, die für das Cluster-Dateisystem Lustre entwickelt wurden. Eine Entwicklungsversion, ext4dev, erscheint in Linux 2.6.19.
- 2008
ext4 gilt als stabil
Linux 2.6.28, veröffentlicht am 25. Dezember 2008, bringt Extents, 64-Bit-Blocknummern, verzögerte Zuweisung und Zeitstempel auf die Nanosekunde.
- 2013–2021
Prüfsummen, Verschlüsselung, Groß- und Kleinschreibung
Spätere Kernel ergänzen Inline-Daten (3.8), Metadaten-Prüfsummen (3.18), Verschlüsselung (4.1), Ordner ohne Unterscheidung von Groß- und Kleinschreibung (5.2), Verity (5.4), Fast Commits (5.10) und die Orphan-Datei (5.15).
Wie ext4 einen Datenträger aufteilt
Blöcke. ext4 vergibt Platz in Blöcken, meist 4 KiB groß; die Größe wird beim Formatieren festgelegt und kann zwischen 1 KiB und 64 KiB liegen. Selbst eine Datei mit einem Byte belegt einen ganzen Block, sofern der Datenträger keine Inline-Daten nutzt.
Blockgruppen. Der Datenträger ist in Gruppen von Blöcken geteilt – bei 4-KiB-Blöcken 32.768 Blöcke oder 128 MiB pro Gruppe. Jede Gruppe hat zwei Bitmaps, eine für belegte Blöcke und eine für ihre Inodes, dazu ihren Teil der Inode-Tabelle. Liegen die Daten einer Datei nahe bei ihrem Inode, muss der Lesekopf nicht weit wandern. Das Feature flex_bg legt Bitmaps und Inode-Tabellen mehrerer Gruppen zusammen, sodass große Dateien am Stück über Gruppengrenzen laufen können.
Der Superblock. Das Erste auf dem Datenträger nach 1 KiB Abstand: wie groß das Dateisystem ist, seine Blockgröße, welche Features es nutzt und ob es sauber ausgehängt wurde. Kopien liegen in mehreren Blockgruppen, sodass sich ein beschädigter Superblock aus einer Sicherung wiederherstellen lässt.
Inodes. Jede Datei und jeder Ordner hat einen Inode, standardmäßig 256 Byte groß. Er enthält Eigentümer, Rechte, Zeitstempel, Größe und wo die Daten liegen – alles außer dem Namen. Die Zahl der Inodes wird beim Formatieren festgelegt; ein Datenträger voller winziger Dateien kann also keine Inodes mehr haben, obwohl noch Platz frei ist.
Ordner. Ein Ordner ist eine besondere Datei, die Namen Inode-Nummern zuordnet. Namen können bis zu 255 Byte lang sein. Kleine Ordner sind eine einfache Liste, große bekommen einen Index, einen gehashten Baum (dir_index, „htree“), sodass ein Name unter hunderttausend in wenigen Blöcken gefunden wird statt durch Durchsuchen.
Extents statt Blocklisten. ext2 und ext3 vermerken jeden Block einer Datei einzeln: zwölf direkte Zeiger im Inode, dann Blöcke voller Zeiger, Zeiger darauf und noch einmal Zeiger darauf. ext4 vermerkt Abschnitte. Ein Extent sagt „so viele Blöcke, ab hier“, bis zu 32.768 Blöcke (128 MiB bei 4-KiB-Blöcken) in einem Eintrag. Vier Extents passen in den Inode selbst; eine längere, stärker zerstückelte Datei bekommt einen Extent-Baum mit bis zu fünf Ebenen. Eine große, zusammenhängende Datei kommt so mit einer Handvoll Einträgen aus statt mit Tausenden.
Kleine Dateien können im Inode wohnen. Mit dem Feature inline_data werden bis zu 60 Byte einer Datei im Inode selbst gespeichert und etwas mehr in seinem Bereich für erweiterte Attribute, ganz ohne Block.
Das Journal und was es schützt
Eine Änderung am Dateisystem ist nie ein einzelner Schreibvorgang. Eine Datei anzulegen berührt eine Bitmap, einen Inode, einen Ordner und einen Zähler im Gruppendeskriptor. Fällt zwischen zwei dieser Schreibvorgänge der Strom aus, bleibt der Datenträger halb geändert zurück – und ext2 konnte das nur durch eine Prüfung des ganzen Datenträgers mit e2fsck herausfinden, was bei großen Datenträgern lange dauerte.
ext3 und ext4 führen ein Journal: einen reservierten Bereich des Datenträgers, meist Inode 8, in den Änderungen geschrieben werden, bevor sie passieren. Eine Änderung läuft in drei Schritten. Zuerst kommen die neuen Blöcke ins Journal. Dann markiert ein Commit-Eintrag die Transaktion als vollständig. Erst danach werden die Blöcke an ihre eigentlichen Stellen geschrieben – der Checkpoint. Fällt irgendwann der Strom aus, spielt das nächste Einhängen das Journal ein: Transaktionen mit Commit werden erneut angewendet, alles ohne Commit wird verworfen. Das Dateisystem ist in Sekunden wieder konsistent.
| Modus | Was durch das Journal geht | Nach einem Absturz |
|---|---|---|
data=ordered (Standard) | Nur Metadaten, aber Dateidaten werden geschrieben, bevor die Metadaten, die auf sie zeigen, per Commit bestätigt werden. | Die Struktur ist konsistent; eine Datei, die gerade geschrieben wurde, kann ältere Daten enthalten. |
data=journal | Metadaten und Dateidaten. | Am sichersten und langsamsten: Daten, die einen Commit erreicht haben, sind da. |
data=writeback | Nur Metadaten, ohne Reihenfolge für die Daten. | Die Struktur ist konsistent, aber eine kürzlich geänderte Datei kann veraltete Inhalte zeigen. |
Das Journal ist keine Sicherung. Es hält die Struktur des Dateisystems zusammen und garantiert, was bestätigt wurde; eine Änderung, die gerade unterwegs war, holt es nicht zurück, und vor einem sterbenden Datenträger schützt es nicht. ext4 kann außerdem Fast Commits schreiben (Linux 5.10): kleine Einträge nur mit den geänderten Metadaten zwischen vollständigen Commits, damit häufige fsync-Aufrufe günstiger werden.
Eine Karte, die aus einem laufenden Raspberry Pi gezogen wurde, ist genau dieser Fall. Ihr Journal enthält noch bestätigte Transaktionen, die ihre Stellen nie erreicht haben, und der Superblock meldet „needs recovery“. Linux spielt es beim nächsten Einhängen ein; Software, die die Karte anderswo liest, muss es ebenfalls einspielen, sonst zeigt sie die Dateien im Zustand vor diesen Transaktionen.
ext2 vs ext3 vs ext4
| ext2 | ext3 | ext4 | |
|---|---|---|---|
| In Linux seit | 1993 (0.99) | 2001 (2.4.15) | 2008 (2.6.28) |
| Journal | Nein | Ja | Ja, mit Fast Commits seit Linux 5.10 |
| Wie die Blöcke einer Datei verzeichnet sind | Blocklisten | Blocklisten | Extents |
| Größte Datei | 2 TiB | 2 TiB | 16 TiB |
| Größtes Dateisystem | 16 TiB | 16 TiB | in der Praxis 1 EiB (64 Bit) |
| Zeitstempel | Sekunden, bis 2038 (128-Byte-Inodes) | Sekunden, bis 2038 (128-Byte-Inodes) | Nanosekunden, bis 2446 |
| Indizierte große Ordner | Nein | Ja (dir_index) | Ja, drei Ebenen mit large_dir |
| Metadaten-Prüfsummen | Nein | Nein | Ja (metadata_csum) |
In der Praxis: ext4 für alles Neue. ext3 hat auf einem frischen Datenträger keinen Grund mehr, und ext2 überlebt dort, wo niemand ein Journal will – auf einer kleinen Boot-Partition oder auf Flash-Speicher, der möglichst wenig beschrieben werden soll. Ein ext3-Datenträger lässt sich an Ort und Stelle in ext4 umwandeln, aber Dateien, die schon darauf lagen, behalten ihre Blocklisten, bis sie neu geschrieben werden.
Features auf echten Datenträgern
Statt Versionsnummern trägt ein ext-Datenträger Feature-Flags in seinem Superblock, und jedes Flag gehört zu einer von drei Arten. Ein kompatibles Feature darf Software ignorieren, die es nicht kennt. Nur lesend kompatibel heißt: Solche Software darf den Datenträger lesen, aber nicht beschreiben. Inkompatibel heißt: Sie darf ihn gar nicht anfassen. Wegen dieser Regel lehnt ein älteres Werkzeug einen neueren Datenträger ab, statt ihn zu beschädigen.
| Feature | Was es tut | In Linux seit |
|---|---|---|
extent | Dateien über Extents statt Blocklisten verzeichnet. | 2.6.28 |
64bit | Blocknummern breiter als 32 Bit, für Dateisysteme über 16 TiB. | 2.6.28 |
flex_bg | Metadaten mehrerer Blockgruppen beieinander. | 2.6.28 |
metadata_csum | Eine CRC32C-Prüfsumme für alle Metadaten, damit Schäden erkannt werden. | 3.18 |
metadata_csum_seed | Der Prüfsummen-Startwert im Superblock, damit sich die UUID ändern lässt. | 4.4 |
inline_data | Winzige Dateien im Inode gespeichert. | 3.8 |
encrypt | Verschlüsselung von Inhalten und Namen pro Ordner. | 4.1 |
casefold | Ordner, die bei Namen nicht zwischen Groß- und Kleinschreibung unterscheiden. | 5.2 |
verity | Schreibgeschützte Dateien, deren Inhalt gegen einen Hash-Baum geprüft wird. | 5.4 |
fast_commit | Kleine Journal-Einträge zwischen vollständigen Commits. | 5.10 |
orphan_file | Schnellere Buchführung über Dateien, die gelöscht wurden, während sie noch offen waren. | 5.15 |
Wo sie auftauchen: das aktuelle mke2fs schaltet metadata_csum und 64bit standardmäßig ein, und e2fsprogs 1.47 hat orphan_file und metadata_csum_seed hinzugefügt, die manche Distributionen wieder abschalten, damit ältere Bootloader den Datenträger noch lesen können. Das Raspberry-Pi-OS-Image entsteht ohne 64bit. Ein Steam Deck formatiert seine microSD-Karten mit casefold, und Android nutzt encrypt.
Welche Features ein Datenträger nutzt, liest du unter Linux mit sudo dumpe2fs -h /dev/sdX1 aus seinem Superblock, in der Zeile „Filesystem features“.
Grenzen
| Blockgröße | Blockgruppe | Größte Datei | Größtes Dateisystem (32 Bit) | Größtes Dateisystem (64 Bit) |
|---|---|---|---|---|
| 1 KiB | 8 MiB | 4 TiB | 4 TiB | 16 ZiB |
| 2 KiB | 32 MiB | 8 TiB | 8 TiB | 32 ZiB |
| 4 KiB (üblich) | 128 MiB | 16 TiB | 16 TiB | 64 ZiB |
| 64 KiB | 32 GiB | 256 TiB | 256 TiB | 1 YiB |
Die 64-Bit-Werte zeigen, was das Format adressieren kann; das Extent-Format und die Werkzeuge begrenzen echte Dateisysteme auf etwa 1 EiB. Andere Grenzen, die öfter eine Rolle spielen:
- Ein Datei- oder Ordnername: 255 Byte – weniger Zeichen bei Schriften, die mehr als ein Byte pro Zeichen brauchen.
- Harte Links auf eine Datei: 65.000, also höchstens 64.998 Unterordner in einem Ordner.
- Zeitstempel: auf die Nanosekunde genau, gültig bis Mai 2446 mit 256-Byte-Inodes; 128-Byte-Inodes enden im Januar 2038.
- Inodes: beim Formatieren festgelegt, einer pro Datei oder Ordner, höchstens rund vier Milliarden.
Ein ext4-Laufwerk prüfen und reparieren
Prüfen und Reparieren von ext-Dateisystemen ist die Aufgabe von e2fsck aus den e2fsprogs unter Linux. Es arbeitet auf einem Datenträger, der nicht eingehängt ist; auf einem eingehängten Dateisystem kann es Schaden anrichten.
sudo dumpe2fs -h /dev/sdX1 # Superblock: Features, Zustand, letzte Prüfung sudo e2fsck -fn /dev/sdX1 # vollständige Prüfung, nur lesend: meldet, ändert nichts sudo e2fsck -f /dev/sdX1 # vollständige Prüfung mit Reparaturen, fragt vor jeder sudo tune2fs -l /dev/sdX1 # dieselbe Übersicht über den Superblock sudo mkfs.ext4 -L DATA /dev/sdX1 # ein neues ext4-Dateisystem (löscht die Partition)
Ersetze /dev/sdX1 durch die betreffende Partition – lsblk listet sie auf. Nach einem unsauberen Herunterfahren ist meist nichts zu tun: Das nächste Einhängen spielt das Journal ein. Eine vollständige Prüfung lohnt sich, wenn Linux einen Fehler im Superblock vermerkt hat, wenn Prüfsummen nicht stimmen oder wenn der Datenträger in einem Gerät steckte, das wiederholt abgestürzt ist.
ext4 und andere Dateisysteme
| Dateisystem | Schutz bei Abstürzen | Zu Hause auf | macOS | Windows |
|---|---|---|---|---|
| ext4 | Journal | Linux, Android | Nein | Nein |
| Btrfs | Copy-on-Write, Prüfsummen auch für Daten | Linux (Standard bei Fedora) | Nein | Nein |
| XFS | Journal | Linux-Server | Nein | Nein |
| APFS | Copy-on-Write | Macs, iPhones | Ja | Nein |
| NTFS | Journal | Windows | Nur lesen | Ja |
| exFAT | Keiner | USB-Sticks, SD-Karten, Kameras | Ja | Ja |
Für ein Laufwerk, das ohne Installation zwischen Linux, Mac und Windows wandert, ist exFAT der gemeinsame Nenner – auf Kosten von Linux-Rechten, Eigentümern, symbolischen Links und jedem Schutz, wenn das Kabel mitten im Schreiben herausfällt. ext4 behält all das und braucht auf dem Mac und unter Windows zusätzliche Software.
ext4 auf dem Mac oder unter Windows lesen
macOS liest keines der ext-Dateisysteme. Schließt du ein Linux-Laufwerk an, meldet macOS, dass es den Datenträger nicht lesen kann, und bietet Initialisieren, Ignorieren und Auswerfen an. Initialisieren löscht den Datenträger; wähle Ignorieren oder Auswerfen.
Seit macOS 15.4 erlaubt Apples FSKit, ein Dateisystem als gewöhnliche App-Erweiterung außerhalb des Kernels laufen zu lassen, so wie Apples eigene neuere Dateisysteme. Das ist der Weg ohne Kernel-Erweiterung und ohne gelockerte Sicherheitseinstellungen. Die anderen Wege sind eine Kernel-Erweiterung, eine Schicht im Benutzerbereich wie FUSE oder eine virtuelle Linux-Maschine, der man den Datenträger übergibt.
Unter Windows 11 kann WSL 2 ein Linux-Laufwerk einhängen: wsl --mount \\.\PHYSICALDRIVE2 --partition 1 --type ext4 in einem Terminal mit Administratorrechten, danach erscheinen die Dateien im Explorer unter \\wsl$\ und im Ordner /mnt/wsl der Distribution. Das klappt nur mit Laufwerken, die direkt am PC hängen, nicht mit USB-Laufwerken oder SD-Kartenlesern; die müssen zuerst per USB/IP an WSL durchgereicht werden.
Extent ist unser eigenes FSKit-Dateisystem für ext2, ext3 und ext4 unter macOS 27. Ein Linux-Laufwerk erscheint im Finder wie jedes andere; Lesen ist kostenlos, und Schreiben auf ext4 läuft über das Journal des Datenträgers, wie unter Linux. Eine Karte, die ohne Herunterfahren aus einem Pi gezogen wurde, wird mit im Speicher eingespieltem Journal gelesen.
Häufige Fragen
Ist ext4 besser als ext3?
Für einen neuen Datenträger ja. Es verzeichnet Dateien als Extents statt Blocklisten, schafft Dateien bis 16 TiB und viel größere Dateisysteme, hält Zeitstempel auf die Nanosekunde über 2038 hinaus, prüft seine Metadaten mit Prüfsummen und vergibt Platz in größeren, weniger zerstückelten Abschnitten. ext3-Datenträger liest Linux ohnehin mit dem ext4-Treiber.
Kann ein Mac ext4 lesen?
Nicht von sich aus: macOS liest kein ext-Dateisystem und bietet an, ein Linux-Laufwerk zu initialisieren – also zu löschen. Es braucht eine Dateisystem-Erweiterung; unter macOS 27 bindet Extent ext2, ext3 und ext4 über Apples FSKit im Finder ein.
Kann Windows ext4 lesen?
Der Explorer allein nicht. Unter Windows 11 hängt WSL 2 ein direkt angeschlossenes Linux-Laufwerk mit wsl --mount ein, und seine Dateien lassen sich dann im Explorer unter \\wsl$\ öffnen. USB-Laufwerke und SD-Kartenleser müssen zuerst per USB/IP an WSL durchgereicht werden.
Soll ein USB-Stick ext4 oder exFAT sein?
exFAT, wenn er an jedem Rechner ohne Zusatzsoftware funktionieren soll. ext4, wenn er vor allem mit Linux oder einem Raspberry Pi genutzt wird oder wenn Rechte, symbolische Links und ein Journal wichtig sind – das Journal hält das Dateisystem konsistent, wenn der Stick mitten im Schreiben gezogen wird.
Was passiert, wenn ich ein ext4-Laufwerk ohne Auswerfen abziehe?
Das Journal hält das Dateisystem konsistent. Änderungen, die einen Commit erreicht haben, werden beim nächsten Einhängen eingespielt; Änderungen, die gerade unterwegs waren, gehen verloren. Bis dahin meldet der Superblock, dass eine Wiederherstellung nötig ist.
Wie finde ich heraus, welche Features mein ext4-Laufwerk nutzt?
Unter Linux mit sudo dumpe2fs -h /dev/sdX1 oder sudo tune2fs -l /dev/sdX1 in der Zeile „Filesystem features“. Auf dem Mac nennt Extent die wichtigsten – Journal, Extents, 64 Bit, Prüfsummen – in den Details eines Laufwerks.
Lässt sich ext3 in ext4 umwandeln?
Ja, an Ort und Stelle mit tune2fs und einer Prüfung mit e2fsck, ohne Neuformatierung. Dateien, die schon auf dem Datenträger liegen, behalten ihre Blocklisten; nur danach geschriebene Dateien nutzen Extents. Sichere den Datenträger vorher.
Wie groß darf eine Datei auf ext4 sein?
16 TiB mit den üblichen 4-KiB-Blöcken, bis zu 256 TiB mit 64-KiB-Blöcken. Das größte Dateisystem liegt mit dem Feature 64bit bei etwa 1 EiB.
Linux-Laufwerke auf dem Mac, gelesen und beschrieben.
Extent bindet ext2, ext3 und ext4 unter macOS 27 im Finder ein. Lesen ist kostenlos, Schreiben auf ext4 ist ein einmaliger Kauf.
Quellen
Die Fakten auf dieser Seite wurden anhand dieser Dokumente geprüft (auf Englisch).