Linux Deutsch

Dateisystem ext4: Eigenschaften, Grenzen und Einsatz unter Linux

ext4 verständlich erklärt: Journaling, Extents, Leistung, Größenlimits, Wartung, Kompatibilität zu ext2 und ext3 sowie wichtige Linux-Befehle.

ext4 steht für Fourth Extended File System und ist ein weit verbreitetes Linux-Dateisystem. Es gehört zur Extended-Dateisystemfamilie und wurde als Weiterentwicklung und Nachfolger von ext3 entwickelt. Typische Einsatzbereiche sind System-, Daten- und Home-Partitionen.

Diese Lektion erklärt die wichtigsten Eigenschaften, Grenzen und Wartungsaufgaben von ext4. Grundkenntnisse zu Partitionen, Blockgeräten, Mountpoints, Dateirechten und der Shell sind hilfreich. Ergänzend sind die Lektionen zu ext2, ext3, dem Mounten von Dateisystemen und /etc/fstab nützlich.

ext4 in der Extended-Dateisystemfamilie

Die Bezeichnungen ext2, ext3 und ext4 beschreiben aufeinander aufbauende Linux-Dateisysteme:

  • ext2: ein älteres Extended-Dateisystem ohne Journal.
  • ext3: eine Weiterentwicklung von ext2 mit Journaling.
  • ext4: der moderne Nachfolger von ext3 mit Verbesserungen für große Dateien, große Verzeichnisse, Dateisystemprüfung und Schreiballokation.

Die Nähe innerhalb der Familie erleichtert bestimmte Upgrades und Migrationen. Sie bedeutet aber nicht, dass jedes ext4-Dateisystem mit jedem alten ext2- oder ext3-Treiber vollständig nutzbar ist. Sobald ext4-spezifische Merkmale aktiviert sind, können ältere Werkzeuge oder Treiber den Zugriff verweigern oder nur eingeschränkt unterstützen.

Ein Upgrade verändert ein vorhandenes Dateisystem, während eine Neuformatierung ein neues Dateisystem anlegt. Beim Formatieren mit mkfs.ext4 werden die vorhandenen Daten auf dem ausgewählten Dateisystem zerstört.

Journaling und Datensicherheit

Journaling bedeutet, dass Änderungen am Dateisystem in einem speziellen Bereich, dem Journal, protokolliert werden. Dazu gehören vor allem Änderungen an Metadaten wie Verzeichnisstrukturen, Inodes, Dateigrößen und Blockverweisen. Ein Inode ist eine Datenstruktur mit Verwaltungsinformationen zu einer Datei; Dateiname und Dateiinhalt gehören nicht direkt zum Inode.

Nach einem Absturz oder Stromausfall kann das System anhand des Journals unvollständig übernommene Änderungen erkennen und das Dateisystem schneller wieder in einen konsistenten Zustand bringen. Dadurch ist häufig keine vollständige Prüfung aller Datenblöcke erforderlich.

Journaling ist jedoch kein Ersatz für Datensicherungen. Es schützt nicht zuverlässig vor versehentlich gelöschten Dateien, Malware, Hardwaredefekten, falschen Befehlen oder einer beschädigten Sicherung. Außerdem kann ein Journal nicht jede Beschädigung reparieren, etwa Fehler außerhalb der protokollierten Änderungen.

Journal-Modi

Bei ext4 werden standardmäßig hauptsächlich Metadaten journalisiert. Die Option data=journal kann auch Nutzdaten in das Journal einbeziehen, verursacht aber zusätzlichen Schreibaufwand. Die Varianten data=ordered und data=writeback unterscheiden sich darin, wann Nutzdaten und Metadaten geschrieben werden. Die Wahl des Modus ist eine Abwägung zwischen Sicherheit, Leistung und Anwendungsanforderungen.

Wichtige Eigenschaften von ext4

EigenschaftBedeutungPraktischer Nutzen
JournalingProtokolliert wichtige Dateisystemänderungen.Schnellere Wiederherstellung nach Abstürzen.
ExtentsBeschreiben zusammenhängende Bereiche von Blöcken.Effizientere Verwaltung großer Dateien.
Delayed AllocationVerzögert die physische Blockzuordnung.Bessere Planung von Schreibvorgängen und weniger Fragmentierung.
Multiblock AllocationWeist mehrere Blöcke in einem Schritt zu.Effizientere Allokation bei größeren Schreibvorgängen.
Nanosekunden-ZeitstempelSpeichert Zeitangaben mit hoher Auflösung.Präzisere Builds, Werkzeuge und Protokollierung.
PreallocationReserviert Dateiblöcke im Voraus.Planbares Wachstum von Datenbank- oder Aufzeichnungsdateien.
Quota-JournalingBezieht Quota-Daten in die Journalverwaltung ein.Weniger aufwendige Quota-Wiederherstellung nach Ausfällen.
Schnellere PrüfungVerwaltet freie Blöcke und Inodes effizienter.Kürzere Dateisystemprüfungen bei großen Dateisystemen.

Leistung bei großen Datenmengen

Extents

Ein Extent ist ein zusammenhängender Bereich von Datenblöcken, der eine Datei oder einen Teil einer Datei beschreibt. Statt jeden einzelnen Block separat zu verwalten, kann ext4 mit einem Extent viele aufeinanderfolgende Blöcke darstellen. Das reduziert Verwaltungsaufwand und verbessert die Skalierung bei großen Dateien.

Delayed Allocation und Multiblock Allocation

Delayed Allocation bedeutet, dass ext4 die endgültige physische Blockzuordnung möglichst lange hinauszögert. Während Daten noch im Schreibpuffer liegen, kann das Dateisystem besser erkennen, welche Blöcke zusammengehören. Dadurch lassen sich Schreibvorgänge effizienter planen.

Bei der Multiblock Allocation werden mehrere Blöcke in einem Vorgang reserviert. Zusammen mit Extents kann das insbesondere bei großen, fortlaufenden Schreibvorgängen die Fragmentierung und den Verwaltungsaufwand verringern.

Auch große Verzeichnisstrukturen werden durch geeignete interne Datenstrukturen besser unterstützt. Die tatsächliche Leistung hängt trotzdem von Hardware, Kernel, Blockgröße, Dateimustern und aktivierten ext4-Features ab.

Schnellere Dateisystemprüfung

ext4 verwaltet freie Blöcke und Inodes effizienter als ältere Varianten. Prüfwerkzeuge können dadurch bestimmte Bereiche schneller beurteilen, insbesondere bei großen Dateisystemen. Eine Prüfung bleibt dennoch abhängig von der Dateisystemgröße, dem Zustand des Datenträgers und der verwendeten Konfiguration.

Preallocation: Speicher vorab reservieren

Preallocation ist die Vorabreservierung von Dateiblöcken. Eine Anwendung kann damit Platz für eine Datei anfordern, bevor die Nutzdaten vollständig geschrieben wurden. Das ist beispielsweise für Datenbanken, virtuelle Laufwerke, Videoaufzeichnungen oder Logdateien mit vorhersehbarem Wachstum nützlich.

Reservierter Platz ist nicht automatisch mit sinnvollen Nutzdaten gefüllt. Die logische Dateigröße und die tatsächlich belegten Blöcke können sich unterscheiden. Mit fallocate lässt sich beispielsweise Platz reservieren:

fallocate -l 10G grosse-datei.img
ls -lh grosse-datei.img
du -h grosse-datei.img

ls zeigt vor allem die logische Größe, während du den belegten Speicher betrachtet. Das ist besonders wichtig beim Unterschied zwischen einer vorallokierten Datei und einer Sparse-Datei.

Zeitstempel und hohe Zeitauflösung

ext4 unterstützt Zeitstempel bis in den Nanosekundenbereich. Übliche Dateizeitstempel sind:

  • Änderungszeit (mtime): Zeitpunkt der letzten Änderung am Dateiinhalt.
  • Zugriffszeit (atime): Zeitpunkt des letzten Zugriffs, abhängig von Mount-Optionen möglicherweise verzögert oder eingeschränkt.
  • Metadatenänderungszeit (ctime): Zeitpunkt der letzten Änderung an Metadaten, etwa Eigentümer, Rechten oder Verweisen.

Die höhere Auflösung hilft Werkzeugen, eng aufeinanderfolgende Änderungen zu unterscheiden. Das ist beispielsweise bei Build-Systemen, Synchronisationsprogrammen und der Auswertung von Protokollen nützlich. Sie macht Dateisystemzeiten aber nicht automatisch zu einer verlässlichen Zeitquelle für forensische oder verteilte Systeme.

Verzeichnisse, Dateinamen und Skalierung

ext4 kann sehr große Verzeichnisstrukturen verwalten. Ein einzelner Dateiname darf grundsätzlich bis zu 255 Bytes lang sein. Bytes sind dabei nicht dasselbe wie Zeichen: In UTF-8 benötigen viele ASCII-Zeichen ein Byte, andere Zeichen jedoch mehrere Bytes. 255 sichtbare Zeichen können die Grenze daher überschreiten.

Die praktische Skalierung hängt zusätzlich von Kernel, Distribution, verwendeten Werkzeugen, Blockgröße, Architektur und aktivierten ext4-Features ab. Theoretische Grenzwerte sind deshalb nicht automatisch auf jedem System erreichbar.

Quotas und Quota-Journaling

Eine Quota begrenzt oder erfasst den Verbrauch von Speicherplatz und Inodes pro Benutzer oder Gruppe. So kann ein Mehrbenutzersystem verhindern, dass ein einzelnes Konto den gesamten verfügbaren Platz belegt.

ext4 kann Quota-Daten journalisieren. Nach einem ungeplanten Ausfall müssen Quota-Informationen dadurch häufig nicht erst durch eine langwierige separate Prüfung rekonstruiert werden. Die genaue Aktivierung und Verwaltung hängt zusätzlich von Kernel, Distribution und den eingesetzten Quota-Werkzeugen ab.

Größenlimits und wichtige Einschränkungen

AngabeRichtwertAbhängigkeiten bzw. Hinweis
Maximale DateigrößeBis zu 16 TBAbhängig unter anderem von Blockgröße, Architektur, Kernel und Konfiguration.
Maximale DateisystemgrößeBis zu 1 EBTheoretischer Richtwert; praktische Werkzeuge und Systemumgebung können früher begrenzen.
Maximale Dateinamenslänge255 BytesUTF-8-Zeichen können unterschiedlich viele Bytes belegen.
Praktische EinschränkungenSystemabhängigBlockgröße, Kernel, Distribution, Architektur und aktivierte Features sind entscheidend.

Kompatibilität und Migration von ext2 und ext3

ext4 ist eng mit ext2 und ext3 verwandt. Bestimmte vorhandene ext2- oder ext3-Dateisysteme können auf ext4-Funktionen umgestellt werden, ohne alle Dateien neu zu kopieren. Vor einer solchen Änderung sind jedoch Sicherungen, unterstützte Kernel und die verwendeten Rettungswerkzeuge zu prüfen.

Ein ext4-Dateisystem mit aktivierten Merkmalen wie Extents kann von älteren ext2- oder ext3-Treibern möglicherweise nicht vollständig verstanden werden. Ein altes Rettungssystem kann dann den Zugriff verweigern oder die Struktur falsch beurteilen. Deshalb sollte eine Migration immer mit einer passenden Systemumgebung geplant werden.

ext4 prüfen und Informationen auslesen

Die folgenden Befehle helfen bei der Bestandsaufnahme:

lsblk -f
findmnt -T /pfad/zur/datei
sudo blkid /dev/sdXN
sudo tune2fs -l /dev/sdXN
  • lsblk -f zeigt Blockgeräte, Dateisystemtypen, Labels und UUIDs.
  • findmnt -T zeigt, welches Dateisystem einen bestimmten Pfad bereitstellt.
  • blkid liest unter anderem UUID und Dateisystemtyp aus.
  • tune2fs -l zeigt Superblockinformationen und aktivierte ext4-Features.

Eine UUID ist eine eindeutige Kennung eines Dateisystems. Sie ist für dauerhafte Mounts meist stabiler als ein Gerätename wie /dev/sdb1, da sich Gerätenamen abhängig von Erkennungsreihenfolge und Hardware ändern können.

Neues ext4-Dateisystem erstellen

Das Formatieren eines Blockgeräts löscht die dort vorhandenen Dateisystemstrukturen und damit normalerweise die gespeicherten Daten. Das Zielgerät muss vor dem Befehl eindeutig geprüft werden:

lsblk -f
sudo mkfs.ext4 /dev/sdXN
sudo mkfs.ext4 -L DATEN /dev/sdXN

Dauerhaftes Einhängen per UUID

Ein beispielhafter Eintrag in /etc/fstab lautet:

UUID=<uuid> /mnt/daten ext4 defaults 0 2

Vor einem Neustart sollte der Eintrag mit mount -a getestet werden. Außerdem muss der Mountpoint existieren. Bei nicht zwingend benötigten Datenträgern kann nofail sinnvoll sein, sollte aber bewusst eingesetzt werden, weil dadurch bestimmte Mount-Fehler beim Systemstart weniger auffällig werden.

Dateisystemprüfung mit e2fsck

e2fsck ist das Prüf- und Reparaturwerkzeug für ext2-, ext3- und ext4-Dateisysteme. Es untersucht unter anderem Inodes, Verzeichnisstrukturen, Blockverweise und Konsistenzinformationen.

Eine Prüfung ist typischerweise nach Dateisystemfehlern, bei Auffälligkeiten oder nach definierten Prüfintervallen sinnvoll. Für eine vollständige Prüfung und Reparatur sollte das Dateisystem in der Regel nicht eingehängt sein:

sudo e2fsck -f /dev/sdXN

Ist die Systempartition betroffen, wird dafür meist ein Rettungs- oder Wartungssystem verwendet. Eine reparierende Prüfung auf einem normal eingehängten und beschreibbaren Dateisystem kann zusätzliche Schäden verursachen.

Vergleich: ext2, ext3 und ext4

Merkmalext2ext3ext4
JournalingNeinJaJa; Metadaten standardmäßig, Daten optional je nach Modus
ExtentsNeinTypischerweise nicht als ext4-KernfunktionJa
Eignung für große DateienEher eingeschränktBesser, aber ältere VerwaltungsverfahrenSehr gut innerhalb der Systemgrenzen
ZeitstempelauflösungGeringerGeringer als bei ext4Bis in den Nanosekundenbereich
KompatibilitätsbeziehungAusgangspunkt der älteren FamilieWeiterentwicklung von ext2Weiterentwicklung und Nachfolger von ext3
Typischer EinsatzSpezialfälle oder ältere InstallationenÄltere Linux-SystemeAllgemeine System-, Daten- und Home-Partitionen

ext4 im Vergleich zu anderen Dateisystemen

Gegenüber ext3 bietet ext4 modernere Skalierung, Extents, bessere Allokationsverfahren und zeitgemäßere Zeitstempel. Gegenüber ext2 liefert ext4 zusätzlich Journaling und umfangreiche Verbesserungen für größere Datenmengen.

ReiserFS ist ein weiteres Linux-Dateisystem und kann als Vergleichsthema dienen, ist aber keine allgemeine Standardempfehlung für neue Installationen. Je nach Anforderungen kommen auch XFS, Btrfs oder ZFS infrage. Diese Dateisysteme verfolgen teilweise andere Ziele, etwa besondere Skalierung, Prüfsummen, Snapshots oder Verwaltungsfunktionen.

Für eine gewöhnliche Linux-Installation ist ext4 oft eine ausgewogene Wahl: Es ist etabliert, leistungsfähig, gut dokumentiert und mit vielen Linux-Werkzeugen integriert.

Typische Fehler und ihre Lösung

Das System startet wegen eines fehlerhaften fstab-Eintrags nicht

  • UUID mit blkid oder lsblk -f prüfen.
  • Kontrollieren, ob der Mountpoint existiert.
  • Dateisystemtyp und Mount-Optionen vergleichen.
  • Den Eintrag vor dem Neustart mit mount -a testen.
  • Bei optionalen Datenträgern nofail nur nach bewusster Abwägung verwenden.

e2fsck meldet ein eingehängtes Dateisystem

Das Dateisystem wird noch aktiv verwendet. Es muss sauber ausgehängt werden. Bei einer Systempartition ist ein Rettungs- oder Wartungssystem erforderlich. Eine Prüfung sollte nicht auf einem beschreibbar eingehängten Dateisystem erzwungen werden.

Die falsche Partition wurde formatiert

Ursachen sind meist ähnliche Gerätenamen oder eine unzureichende Prüfung von Größe, Label und Mountstatus. Vor mkfs immer lsblk -f und bei Bedarf findmnt verwenden. Für wichtige Daten sind aktuelle Sicherungen unverzichtbar.

Eine vorallokierte Datei belegt scheinbar nicht den erwarteten Platz

Vergleiche die logische Größe mit dem belegten Speicher:

ls -lh grosse-datei.img
du -h grosse-datei.img

Eine Sparse-Datei enthält möglicherweise nur wenige tatsächlich belegte Blöcke. Für eine echte Vorabreservierung ist fallocate geeignet, sofern Anwendung und Dateisystem dies unterstützen.

Nach einem Absturz ist trotz Journal eine Prüfung erforderlich

Das Journal hilft bei der Wiederherstellung, schützt aber nicht vor jeder Beschädigung. Hardware-, Treiber- oder Speicherfehler sowie Schäden außerhalb der Journalinformationen können eine Prüfung erforderlich machen. Bei wiederkehrenden Fehlern sollten zusätzlich Datenträgerzustand und Systemprotokolle untersucht werden.

Prüfungsrelevante Zusammenfassung

  • ext4 bedeutet Fourth Extended File System und ist der Nachfolger von ext3.
  • ext2 besitzt kein Journal; ext3 und ext4 unterstützen Journaling.
  • Journaling erleichtert die Wiederherstellung nach Abstürzen, ersetzt aber keine Backups.
  • Extents, Delayed Allocation und Multiblock Allocation verbessern die Verwaltung großer Dateien und Schreibvorgänge.
  • Preallocation reserviert Platz, füllt ihn aber nicht automatisch mit Nutzdaten.
  • Die maximale Dateinamenslänge beträgt 255 Bytes, nicht zwingend 255 Zeichen.
  • Richtwerte sind Dateien bis 16 TB, Dateisysteme bis 1 EB und Dateinamen bis 255 Bytes; reale Grenzen hängen von der Systemumgebung ab.
  • e2fsck sollte für eine vollständige Prüfung auf einem ausgehängten Dateisystem ausgeführt werden.
  • UUIDs in /etc/fstab sind meist robuster als wechselnde Gerätenamen.