ext

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Ein Terminal öffnen

  2. ⚓︎ mit Root-Rechten arbeiten

Inhaltsverzeichnis
  1. Historie der ext-Versionen
    1. ext2
    2. ext3
    3. ext4
  2. tune2fs
    1. alle Werte des Dateisystems anzeigen
    2. Automatische Dateisystemüberprüfung
    3. Verhalten im Fehlerfall
    4. reservierte Blöcke
    5. Identifizierung
      1. Einstellungen für das Journal ändern
    6. Setzen / Ändern ext-Optionen
    7. Weitere Optionen
  3. Upgrade von ext
    1. ext2 zu ext3
    2. ext3 zu ext4
  4. Downgrade von ext
    1. ext3 zu ext2
    2. ext4 zu ext3
  5. ext unter Windows
  6. ext unter macOS
  7. Problemlösungen
    1. Superblock
    2. Unzureichende Rechte vorhanden
  8. Links

Das ext-Dateisystem in der Version ext4 🇬🇧 ist das Dateisystem, was Ubuntu standardmäßig für die Root- und Home-Partition verwendet (sofern man bei der Installation nicht explizit ein anderes Dateisystem ausgewählt hat). "ext" ist die Kurzform für Extended_filesystem, die aktuelle Version 4 gilt seit Linux Kernel 2.6.28 (=Oktober 2008) als stabil.

Die ext-Dateisysteme verwenden eine Baumstruktur zum Speichern des Laufwerksinhaltes. Die Knoten dieser Baumstruktur bestehen aus Inodes (Kurzwort aus "index node"). Diese Inodes speichern entweder direkte Verweise auf Festplattenblöcke mit kleinen Dateien oder einen Verweis auf einen weiteren Block, in dem die Datenblöcke größerer Dateien gespeichert sind. Ein Inode hat eine Mindestgröße von 128 Byte. Informationen über das Dateisystem werden im ersten Block, im Superblock des Dateisystems, gespeichert. Hier finden sich alle Optionen des Dateisystems, die sich auch mit dem Befehl #tune2fs manipulieren lassen. Außerdem findet sich dort ein Verweis auf die Inode-Struktur des zu Grunde liegenden Dateisystems.

Die älteren Versionen ext 3 und ext2 werden auch noch vom Linux Kernel und Ubuntu unterstützt, spielen aber kaum noch eine Rolle. ext in der ersten Version, also ext 1, gilt als veraltet, u.a. weil die Datei- und Partitionsgröße auf 2 GB beschränkt ist.

Allen ext-Dateisystemen ist gemein, dass Dateinamen grundsätzlich beliebige Zeichen außer das NULL-Byte und den Slash / enthalten dürfen. ext4 kann Dateien bis zu einer Größe von 16 TB speichern, wenn die Blockgröße 4 KiB beträgt, was normalerweise der Fall ist. Die Partitionsgröße kann maximal ein Exabyte betragen und das Dateisystem kann maximal vier Milliarden Dateien enthalten. Die Länge von Dateinamen ist auf 255 Bytes begrenzt, die von Verzeichnisnamen auf 4096 Bytes - was aber eine Beschränkung des Linux-Kernels ist, nicht des ext-Dateisystems.

ext4 gilt als ausgereift und sehr robust, allerdings gibt es im Linux-Umfeld auch modernere Alternativen wie Btrfs, welches unter anderem Copy-on-Write, Subvolumes, Schnappschüsse, Komprimierung bietet sowie OpenZFS, welches ähnliche Funktionen wie BtrFS bietet. Eine weitere Alternative ist XFS, welches im Vergleich zu ext besser mit massiv parallelem I/O und größeren Dateien umgehen kann (was primär für Server von Interesse sein kann). Alle drei Dateisysteme sind ebenfalls in Ubuntu verfügbar. Für eine Desktopinstallation von Ubuntu ist ext4 aber in der Regel völlig ausreichend.

Historie der ext-Versionen

ext2

Lange Jahre war das robuste ext2 das Standarddateisystem unter Linux. Es ist prinzipiell schneller als seine Nachfolger, die mehr Verwaltungsaufwand betreiben. Allerdings gibt es ein großes Manko: bei einem Systemabsturz oder einem "harten" Ausschalten des Systems muss das Dateisystem beim Neustart ausführlich und zeitintensiv geprüft werden.

ext3

Durch die Einführung einer Journaling-Funktion entfallen die langwierigen Prüfungen des Dateisystems wie noch bei ext2, was sich insbesondere nach einem Problemfall zeitlich positiv bemerkbar macht. Bis Ubuntu 9.04 Jaunty Jackalope war ext3 das Standarddateisystem von Ubuntu.

ext4

Vorteile gegenüber den Vorgängern liegen insbesondere in der aggressiveren Nutzung des Arbeitsspeichers durch Puffer-Mechanismen (Cache) sowie sehr viel schnelleren Dateisystemchecks. Bei Ubuntu ist ext4 die Standardeinstellung.

⚓︎

tune2fs

Änderungen an den Einstellungen des Dateisystems nimmt man mittels des Kommandozeilenwerkzeugs tune2fs vor. Das Programm ist in der Standardinstallation von Ubuntu enthalten, kann ansonsten über das Paket

Befehl zum Installieren der Pakete:

sudo apt-get install e2fsprogs 

Oder mit apturl installieren, Link: apt://e2fsprogs

installiert werden.

mit tune2fs vorgenommenen Einstellungen bleiben wirksam, solange nicht andere Optionen in der fstab gesetzt werden. tune2fs muss mit Root-Rechten[2] aufgerufen werden.

Hinweis:

Im Folgenden muss das X in /dev/sdaX jeweils durch die korrekte Zahl der Partition ersetzt werden. Weitere Informationen liefert der Artikel Datenträger.

Das Zeichen | bezeichnet (nicht ganz korrekt) eine Entweder-Oder-Auswahl.

alle Werte des Dateisystems anzeigen

Der Aufruf von

sudo tune2fs -l dev/sdaX 

liefert eine längere Liste der für die Partition /dev/sdaX gesetzten Wert. Alle gezeigten Werte lassen sich über tune2fs auch ändern.

Automatische Dateisystemüberprüfung

Die automatische Prüfung von ext-Dateisystemen ist im Wikiartikel Dateisystemcheck beschrieben.

Verhalten im Fehlerfall

Falls e2fsck ein fehlerhaftes Dateisystem feststellt, kann sich das System auf verschiedene Arten verhalten. Dies ist auch mit tune2fs einstellbar. Bei fehlerhaftem "superblock" siehe Problemlösung Superblock.

⚓︎ -e: Das System kann entweder mit continue fortfahren, mit remount-ro die Partition schreibgeschützt erneut mounten oder mit panic einen Kernel Panic auslösen.

sudo tune2fs -e <continue|remount-ro|panic> /dev/sdaX 

⚓︎ -f: Manchmal treten beim Ausführen von tune2fs-Funktionen Fehler auf. Mit Hilfe der Zusatzfunktion force, kann man versuchen, diese Fehler zu ignorieren und tune2fs dennoch zum Ausführen der Funktionen zu bewegen. Ein Beispiel hierzu: Ist das Dateisystem korrupt, lassen sich vielleicht auf normalem Wege die tune2fs-Funktionen nicht mehr ausführen. Die Option force kann zudem nützlich sein, falls man von einem Journaling Filesystem (ext3 und ext4) das Journal entfernen möchte.

sudo tune2fs -f BEFEHLE /dev/sdaX 

Achtung!

Bei der Anwendung der force-Option sollte man genau wissen, was man tut. Das Entfernen eines Journals kann zu Datenverlust und einem nicht funktionierenden Dateisystem führen!

reservierte Blöcke

Ein gewisser Anteil an Speicherplatz wird von ext-Dateisystemen reserviert, um im Fall eines Volllaufens der Festplatten dem Systemadministrator root noch die Anmeldung und das Korrigieren des Zustands zu ermöglichen.

⚓︎ -r: Der Parameter -r beeinflusst die Anzahl der reservierten Blocks. -r erwartet die Angabe einer absoluten Anzahl von Blocks.

sudo tune2fs -r ANZAHL_RESERVIERTER_BLOCKS /dev/sdaX 

⚓︎ -m: Der Parameter -m beeinflusst, wie viel Prozent des Dateisystems reserviert bleiben. Hierbei muss nur die Zahl angegeben werden, nicht das %-Zeichen.

sudo tune2fs -m WERT /dev/sdaX 

Hinweis:

Häufig liest man den Tipp, die Anzahl der reservierten Blocks auf 0 zu setzen. Das ist nicht empfehlenswert, da in diesem Bereich unter anderem beim Schreiben Platz vorgesehen wird, um die Fragmentierung des Dateisystems zu vermeiden. Allerdings kann man außerhalb der /-Partition problemlos einen Wert von unter 5% einstellen. Tipp: Auch Kommastellen wie 0.2 (Punkt statt Komma) sind möglich.

⚓︎ -g: Mit dem Parameter -g kann der reservierte Speicher einer anderen Benutzergruppe zur Verfügung gestellt werden.

sudo tune2fs -g <GruppenId bzw. Gruppenname> /dev/sdaX 

⚓︎ -u: Mit dem Parameter -u kann der reservierte Speicher anderen Benutzern zur Verfügung gestellt werden.

sudo tune2fs -u <BenutzerId bzw. Benutzername> /dev/sdaX 

Identifizierung

⚓︎ -U: Der Parameter -U manipuliert die UUID des Dateisystems. Hierbei ist es möglich, die UUID mit clear zu löschen, eine neue mit random erstellen zu lassen, eine zeitabhängige Pseudozufallszahl mit time zu setzen oder eine benutzerdefinierte UUID (zum Beispiel per uuidgen in der Konsole erstellt) zu verwenden.

sudo tune2fs -U <UUID|clear|random|time> /dev/sdaX 

⚓︎ -L: Mit -L kann man dem Dateisystem zusätzlich zur UUID einen Namen geben, der auch in Mount-Vorgängen verwendet werden kann.

sudo tune2fs -L NAME /dev/sdaX 

Einstellungen für das Journal ändern

ext4 und ext3 schreiben standardmäßig ein Journal, welches die Wiederherstellung von Daten nach einem unerwartetem Absturz des Systems (z.B. durch einen Stromausfall) erleichtert. Falls nicht aktiviert kann das Journal auch nachträglich hinzugefügt (Option -j) oder die Optionen für das Journal geändert werden (Option -J). Außerdem kann das Journal auch deaktiviert werden, was für "wichtige" Partitionen wie Root, Home oder Boot nicht empfehlenswert ist.

⚓︎ -j: Der Parameter -j fügt dem Dateisystem ein Journal hinzu. Wird kein Parameter mit -J gesetzt, werden die Standardvorgaben benutzt.

sudo tune2fs -j /dev/sdaX 

⚓︎ -J: Der Parameter -J manipuliert das zu erstellende Journal eines ext4 oder ext3-Dateisystems. Hierbei kann man mit size= die Größe des Journals in Blocks angeben. Mindestgröße sind 1024 Blocks, der maximale Wert beträgt 102.400 Blocks. Alternativ kann das Journal mit device auf einer anderen Partition gespeichert werden. Das externe Journal muss aber bereits mit

sudo mke2fs -O journal_dev external-journal 

erstellt worden sein. external-journal darf ein Devicenode, ein Label oder eine UUID sein.

sudo tune2fs -J <size=<Anzahl>|device=external-journal> /dev/sdaX 

Das Dateisystem kann auch ohne Journal genutzt werden. Das standardmäßig aktivierte Journal kann über den Befehl

tune2fs -O ^has_journal /dev/sdaX 

deaktiviert werden. Danach empfiehlt es sich, einen Dateisystemcheck zu machen.

Setzen / Ändern ext-Optionen

Option für das Dateisystem werden mit den Optionen -o und -O gesetzt:

⚓︎ -o: Mount-Optionen werden mit ^ entfernt und mit + hinzugefügt. Mehrere Optionen werden durch Kommata separiert aufgezählt. Nach dem Komma darf kein Leerzeichen stehen!

sudo tune2fs -o <^|+><Option>[,<^|+><Option2>,...] /dev/sdaX 

⚓︎ -O: Dateisystem-Optionen werden mit ^ entfernt und mit + hinzugefügt. Mehrere Optionen werden durch Kommata separiert aufgezählt. Nach dem Komma darf kein Leerzeichen folgen!

sudo tune2fs -O <^|+><Option>[,<^|+><Option2>,...] /dev/sdaX 

Weitere Optionen

⚓︎ -M: Mit -M manipuliert man die gespeicherte Angabe des letzten Mountpunktes einer Partition.

sudo tune2fs -M <Mountpunkt> /dev/sdaX 

Upgrade von ext

ext2 zu ext3

Das Upgrade von ext2 zu ext3 geschieht durch Hinzufügen eines Journals.

ext3 zu ext4

Das Upgrade von ext3 auf ext4 beschreibt der Artikel Upgrade auf ext4.

Downgrade von ext

ext3 zu ext2

Ein Downgrade von ext3 zu ext2 ist möglich, indem man das Journal löscht.

ext4 zu ext3

Ein Downgrade von ext4 auf ext3 ist im Normalfall ohne Neuformatierung nicht möglich. In diesem Fall ist eine Datensicherung und ein Neuanlegen des Dateisystems fällig. Sobald Features wie Extents 🇬🇧 benutzt werden, was normalerweise automatisch beim nächsten schreibenden Zugriff passiert, ist die Umstellung auf Ext4 unumkehrbar.

ext unter Windows

Wie man ext-Partitionen unter Windows einbindet, behandelt der Artikel: Linux-Partitionen unter Windows.

ext unter macOS

Für Mac OS gibt es ein kostenpflichtiges Programm von Paragon-Software, welches den Zugriff auf das ext-Dateisystem ermöglicht: Link 🇬🇧

Problemlösungen

Superblock

Für den Fall, dass beim Mounten einer Partition - hier beispielhaft für /dev/sda5 - der Fehler

"Bad superblock on /dev/sda5 error"

erscheint, so kann man das aufgrund der Struktur von ext in den meisten Fällen reparieren - zumindest kann man meistens die Daten retten. Es gibt jedoch keine Garantie dafür, da ein solcher Fehler auch durch einen Defekt des Datenträgers auftreten können.

Die nicht eingebundene Partition wird mit der Eingabe in ein Terminal [1]

sudo mke2fs -n /dev/sda5 

nach den Sicherungen der Superblöcke abgefragt. Damit wird eine Liste generiert, die beispielhaft am Ende so aussehen kann:

Superblock-Sicherungskopien gespeichert in den Blöcken:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Dieses sind die Adressen der Sicherungen des Superblocks, diese können nun anstelle des fehlerhaften Superblocks im Terminal[1] eingesetzt werden mit:

sudo e2fsck -y -b ADRESSE /dev/sda5 

(die Option -y unterbindet eine Interaktion) und setzt damit die neue Adresse von einem (nun hoffentlich noch lesbaren) Superblock. Danach sollte das Mounten dieser Partition wieder funktionieren.

Unzureichende Rechte vorhanden

Nach dem Neuanlegen eines zusätzlichen Datenträgers zur Datenspeicherung, der zunächst keine ausreichenden Zugriffsrechte hat, sollte man die Rechte des Ordners des Datenträgers (Besitzer und Gruppe) auf den eigenen Benutzer bzw. plugdev setzen:

sudo chown $USER:plugdev /media/BENUTZER/GERÄT 

/media/BENUTZER/GERÄT muss für das gewünschte Gerät eingesetzt werden.