Ext4
ext4 Eigenschaften
Was ist das?
Ext4 ist ein weit verbreitetes Dateisystem für Linux-Betriebssysteme. Es wurde als Nachfolger des älteren Ext3-Dateisystems entwickelt und bietet zahlreiche Verbesserungen und zusätzliche Funktionen. Hier sind die wichtigsten Eigenschaften von Ext4:
Größere Dateisysteme
- Ext4 verwaltet sehr große Dateisysteme: bis zu 1 Exbibyte (EiB) pro Dateisystem und bis zu 16 Tebibyte (TiB) pro Datei.
- Die 16 TiB je Datei gelten bei der üblichen Blockgröße von 4 KiB. Bei kleineren Blöcken sinkt der Wert entsprechend.
Verbesserte Leistung
- Ext4 arbeitet schneller als Ext3, besonders bei großen Dateisystemen und bei vielen Dateioperationen wie dem Anlegen und Löschen.
- Erreicht wird das vor allem durch Extents (zusammenhängende Blockbereiche statt einzelner Block-für-Block-Verweise), Multiblock-Allokation (mehrere Blöcke werden in einem Schritt reserviert) und Delayed Allocation (die Zuordnung auf der Platte wird bis zum Schreiben aufgeschoben, was Fragmentierung verringert).
Dateisystemjournaling
- Ext4 führt ein Journal, das nach einem Absturz die Konsistenz sicherstellt und langwierige komplette Prüfungen erspart.
- Es gibt drei Modi: journal (Metadaten und Daten werden ins Journal geschrieben, am sichersten, aber am langsamsten), ordered (nur Metadaten ins Journal, Daten werden vorher geschrieben – der voreingestellte Kompromiss) und writeback (nur Metadaten, ohne Reihenfolgegarantie – am schnellsten, aber nach einem Absturz können alte Daten in neuen Dateien stehen).
Online-Defragmentierung
- Fragmentierte Dateien lassen sich im laufenden Betrieb neu ordnen, ohne das Dateisystem auszuhängen. Das Werkzeug dazu ist
e4defrag.
Erweiterte Attribute
- Ext4 speichert erweiterte Attribute (xattr) – zusätzliche Metadaten an Dateien und Verzeichnissen. Darauf setzen unter anderem SELinux-Kontexte, POSIX-ACLs und Capabilities auf.
Verschlüsselung
- Ext4 kann einzelne Verzeichnisse auf Dateiebene verschlüsseln (fscrypt). Das Feature muss beim Anlegen aktiviert sein (
-O encrypt). - Das ist etwas anderes als LUKS/dm-crypt: LUKS verschlüsselt das gesamte Blockgerät unter dem Dateisystem, fscrypt einzelne Verzeichnisse im Dateisystem.
Rückwärtskompatibilität
- Ext4 ist mit Ext3 und Ext2 kompatibel. Ein bestehendes Ext3- oder Ext2-Dateisystem lässt sich zu Ext4 aufrüsten, indem die neuen Features nachträglich eingeschaltet werden.
Zusammenfassend
- Diese Eigenschaften machen Ext4 zu einem robusten und leistungsfähigen Dateisystem für Linux.
- Es ist in vielen Distributionen die Voreinstellung und eignet sich wegen seiner Stabilität und Skalierbarkeit für Desktop wie Server.
ext4 erstellen eines Dateisystem
Allgemein
mkfs.ext4 legt ein ext4-Dateisystem auf einer Partition oder einem Gerät an. Der Aufruf ohne Optionen genügt für den Normalfall – Blockgröße, Anzahl der Inodes und die übrigen Kennwerte werden aus der Gerätegröße abgeleitet.
Achtung: mkfs.ext4 fragt nicht nach und überschreibt ein vorhandenes Dateisystem sofort. Das Ziel muss die gewünschte Partition sein (z. B. /dev/sdg1), nicht die ganze Platte, außer man will das Dateisystem wirklich ohne Partitionstabelle direkt aufs Gerät legen.
Ein ext4-Dateisystem anlegen
- mkfs.ext4 /dev/sdg1
mke2fs 1.47.0 (5-Feb-2023) Creating filesystem with 2621440 4k blocks and 655360 inodes Filesystem UUID: 1b40fc1f-21dd-497e-9266-454f206f67b2 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
Aus der Ausgabe lässt sich schon einiges ablesen: die Blockgröße (4k), die Zahl der Blöcke und Inodes, die UUID und die Blöcke, auf denen die Superblock-Kopien liegen – genau die aus dem Artikel zum Dateisystem-Aufbau.
Wichtige Optionen
| Option | Erklärung |
|---|---|
-b BLOCKSIZE |
Blockgröße in Byte: 1024, 2048 oder 4096 |
-L LABEL |
Volume-Label setzen |
-U UUID |
UUID setzen (random für einen Zufallswert)
|
-N ANZAHL |
feste Anzahl der Inodes |
-i BYTES |
ein Inode je so viele Byte – je größer der Wert, desto weniger Inodes |
-m PROZENT |
für root reservierter Anteil (Vorgabe 5 %) |
-T TYP |
Verwendungszweck: small, floppy, news u. a. – steuert die Inode-Dichte
|
-E OPTION |
erweiterte Optionen, z. B. -E lazy_itable_init=0
|
-O FEATURE |
Feature ein- oder ausschalten, z. B. -O encrypt oder -O ^has_journal
|
-n |
nichts anlegen, nur anzeigen, was geschähe (u. a. die Lage der Superblock-Kopien) |
-N und -i steuern beide die Zahl der Inodes, aber auf verschiedene Weise: -N gibt die Zahl direkt vor, -i gibt an, für wie viele Byte Nutzdaten ein Inode angelegt wird. Beides zusammen anzugeben ergibt keinen Sinn.
Beispiele
Mit festgelegter Blockgröße
Erlaubt sind 1024, 2048 oder 4096 Byte pro Block.
- mkfs.ext4 -b 2048 /dev/sdg1
Mit fester Anzahl der Inodes
- mkfs.ext4 -N 3072 /dev/sdg1
Mit Byte pro Inode
Je größer die Zahl, desto weniger Inodes werden angelegt.
- mkfs.ext4 -i 1024 /dev/sdg1
Mit Volume-Label
- mkfs.ext4 -L daten-platte /dev/sdg1
Mit vorgegebener UUID
- mkfs.ext4 -U 3c52166d-7803-42f4-952a-88bf43e11268 /dev/sdg1
Mit geändertem Reservat für root
Standard sind 5 %. Auf reinen Datenplatten ohne Systemdateien kann man den Wert senken.
- mkfs.ext4 -m 1 /dev/sdg1
Nur anzeigen, nichts schreiben
Zeigt die geplanten Kennwerte und die Lage der Superblock-Kopien, ohne die Platte zu verändern.
- mkfs.ext4 -n /dev/sdg1
Kontrolle nach dem Anlegen
Die Kennwerte des fertigen Dateisystems zeigt dumpe2fs im Kopfbereich.
- dumpe2fs -h /dev/sdg1
ext4 tuning eines Dateisystem
tune2fs ändert die Parameter eines bestehenden ext2/ext3/ext4-Dateisystems, ohne es neu anzulegen. Angewendet wird es auf die Partition, nicht auf ein gemountetes Verzeichnis. Die meisten Änderungen sind auch im eingehängten Zustand möglich; Ausnahmen nennt tune2fs selbst.
Anzeigen von Informationen
Zeigt den Superblock-Inhalt: UUID, Label, Block- und Inode-Zahl, Features, Zähler und Prüfintervalle.
- tune2fs -l /dev/sdg1
Maximale Mount-Zahl bis zur Zwangsprüfung
Nach so vielen Mount-Vorgängen erzwingt das System beim nächsten Start eine Prüfung mit fsck. Hier: alle 30 Mounts.
- tune2fs -c 30 /dev/sdg1
Auf den meisten aktuellen Distributionen ist diese Zwangsprüfung abgeschaltet (Wert 0), weil ein fsck-Lauf beim Booten unerwünscht ist. Abschalten:
- tune2fs -c 0 /dev/sdg1
Zeitintervall bis zur Zwangsprüfung
Prüfung nach einer festen Zeitspanne statt nach Mount-Zahl. Hier: alle zwei Monate (d Tage, w Wochen, m Monate).
- tune2fs -i 2m /dev/sdg1
Auch dieses Intervall ist meist auf 0 gesetzt. Abschalten:
- tune2fs -i 0 /dev/sdg1
Größe des Journals festlegen
Legt die Größe des Journals fest, hier 32 MiB. Das ist die Größe des Journals selbst, kein Cache.
- tune2fs -J size=32m /dev/sdg1
Journaling ein- oder ausschalten
Journaling einschalten (macht aus ext2 praktisch ext3):
- tune2fs -O has_journal /dev/sdg1
Journaling ausschalten – das vorangestellte ^ entfernt ein Feature:
- tune2fs -O ^has_journal /dev/sdg1
Dateisystem-Label ändern
Setzt das Label, über das die Partition auch in /etc/fstab als LABEL= angesprochen werden kann.
- tune2fs -L daten-platte /dev/sdg1
Für root reservierten Anteil ändern
-m setzt den Prozentsatz der Blöcke, die dem Superuser vorbehalten bleiben (Vorgabe 5 %). Das ist nicht die Zahl der erlaubten Mounts – die regelt -c. Auf reinen Datenplatten kann man den Wert senken:
- tune2fs -m 1 /dev/sdg1
Denselben Anteil als feste Blockzahl statt in Prozent setzt -r.
UUID ändern
Setzt eine neue UUID; random würfelt eine. Nötig etwa, nachdem eine Platte geklont wurde und zwei Dateisysteme dieselbe UUID tragen.
- tune2fs -U random /dev/sdg1
Kontrolle
Nach jeder Änderung lässt sich das Ergebnis wieder mit -l nachsehen.
- tune2fs -l /dev/sdg1
ext4 Reparatur
Allgemein
fsck.ext4 (auch als e2fsck) prüft ein ext2/ext3/ext4-Dateisystem auf Fehler und repariert sie. Aufgerufen wird es auf der Partition, nicht auf einem Verzeichnis.
Achtung – nur im ausgehängten Zustand: Eine gemountete Partition darf man nicht reparieren. fsck arbeitet direkt auf den Strukturen der Platte; laufen gleichzeitig Schreibzugriffe des Kernels, zerstört das das Dateisystem. Vor der Prüfung also aushängen:
Partition aushängen
- umount /dev/sdg1
Nur-Lesen-Prüfungen (-n) sind auch im gemounteten Zustand gefahrlos, weil sie nichts schreiben – die Ergebnisse können dann aber ungenau sein, weil sich das Dateisystem unter der Prüfung ändert.
Optionen
| Option | Beschreibung |
|---|---|
-p |
Automatische Reparatur (preen). Behebt alle eindeutigen Fehler ohne Rückfrage und ist der empfohlene Weg für Skripte und den Boot-Vorgang. Bei mehrdeutigen Schäden bricht fsck ab und verlangt einen manuellen Lauf. |
-a |
Wie -p, aber die ältere Form. Nur aus Kompatibilität vorhanden; man nimmt -p.
|
-y |
Beantwortet alle Rückfragen mit „Ja". Für den manuellen Lauf an einem beschädigten Dateisystem, wenn man alle Korrekturen zulassen will. |
-n |
Öffnet das Dateisystem nur lesend und beantwortet alle Fragen mit „Nein". Prüft, ohne etwas zu ändern. |
-f |
Erzwingt eine vollständige Prüfung, auch wenn das Dateisystem als sauber markiert ist. |
-c |
Sucht zusätzlich mit badblocks nach defekten Blöcken und trägt sie aus.
|
-v |
Ausführliche Ausgabe. |
-y und -n schließen sich aus, ebenso -p und -y. Man wählt eine Betriebsart.
Beispiele
Vollständige Prüfung ohne Änderung
Der sichere Einstieg: zeigt gefundene Fehler an, schreibt aber nichts. Auch im gemounteten Zustand unbedenklich.
- fsck.ext4 -n /dev/sdg1
Erzwungene Prüfung
Prüft auch dann durch, wenn das Dateisystem als sauber markiert ist – etwa wenn man trotz „clean"-Status Zweifel hat.
- fsck.ext4 -f /dev/sdg1
Automatische Reparatur
Behebt alle eindeutigen Fehler ohne Rückfrage. Der übliche Weg für einen unbeaufsichtigten Lauf.
- fsck.ext4 -p /dev/sdg1
Manuelle Reparatur, alles bestätigen
Beantwortet jede Rückfrage mit „Ja". Für den Fall, dass -p abgebrochen hat und man die Reparatur von Hand zulässt.
- fsck.ext4 -y /dev/sdg1
Vollständige Prüfung mit Suche nach defekten Blöcken
- fsck.ext4 -cf /dev/sdg1
Wenn der Superblock beschädigt ist
Ist der primäre Superblock zerstört, findet fsck das Dateisystem nicht mehr. Dann greift man auf eine der Kopien zurück, deren Lage mkfs beim Anlegen ausgegeben hat (und die dumpe2fs oder mkfs -n anzeigen). Die erste Kopie liegt meist auf Block 32768:
- fsck.ext4 -b 32768 /dev/sdg1
Aufgaben ext4
- Erstellen Sie ein ext4-Dateisystem auf der 1. Partition von /dev/sdb.
- Erstellen Sie ein ext4-Dateisystem auf der 2. Partition von /dev/sdb mit einer Blockgröße von 2048.
- Erstellen Sie ein ext4-Dateisystem auf der 3.Partition von /dev/sdb mit einer festgelegten Anzahl von Inodes.
- Ändern Sie das Label des ext4-Dateisystems auf der 1. Partition von /dev/sdb zu "daten-platte".
- Stellen Sie das maximale Mount-Count auf 30 für das ext4-Dateisystem auf der 2. Partition von /dev/sdb ein.
- Stellen Sie das Zeitintervall zwischen den Überprüfungen auf 2 Monate für das ext4-Dateisystem auf der 3. Partition von /dev/sdb ein.
- Führen Sie eine Überprüfung des ext4-Dateisystems auf der 1. Partition von /dev/sdb durch.
- Führen Sie eine erzwungene Überprüfung des ext4-Dateisystems auf der 2. Partition von /dev/sdb durch.
- Führen Sie eine Überprüfung des ext4-Dateisystems auf der 3. Partition von /dev/sdb durch, ohne Änderungen vorzunehmen.