Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Im Gegensatz zu den unter Windows verwendeten Dateisystemen FAT32 und NTFS, die auf einer Tabellenstruktur basieren, verwenden ext-Dateisysteme 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.
Alle ext-Dateisystemen werden in bestimmten Abständen automatisch überprüft. Dies geschieht im Regelfall bei dem Starten des Systems. Falls sich also der Start plötzlich deutlich verlängert, ist das der automatischen Überprüfung geschuldet und kein Anlass zur Panik.
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.
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. Auf älteren Systemen mit wenig Hauptspeicher immer noch sinnvoll.
Vorteile gegenüber den Vorgängern liegen insbesondere in der aggressiveren Nutzung des Arbeitsspeichers durch Puffer-Mechanismen (Cache). Seit Ubuntu 9.04 Jaunty Jackalope ist es möglich, ext4 als Dateisystem zu benutzen. Ab Ubuntu 9.10 Karmic Koala ist ext4 die Standardeinstellung bei Neuinstallationen.
Änderungen an den Einstellungen des Dateisystems nimmt man mittels des Konsolentools tune2fs
vor. Diese Einstellungen bleiben wirksam, solange nicht andere Optionen in der fstab gesetzt werden. Mit <Partition>
ist immer der Devicenode (z.B. /dev/sda1
) gemeint, nicht der Mountpunkt. Das Zeichen |
bezeichnet (nicht ganz korrekt) eine Entweder-Oder-Auswahl.
ext-Partitionen werden nach einer gewissen Anzahl von mount-Vorgängen durch e2fsck
auf ihre Konsistenz hin überprüft. Diese Anzahl lässt sich mit tune2fs
bequem verändern bzw. einstellen.
-c
: Der Parameter -c
beeinflusst, nach wievielen mounts die entsprechende Partition beim Systemstart auf Fehler überprüft wird. 0 heißt hierbei, dass keine Überprüfung stattfinden soll (Standardeinstellung ist 30 mounts).
sudo tune2fs -c <Anzahl> <Partition>
-i
: Neben der Möglichkeit das Dateisystem nach einer gewissen Anzahl von mount-Vorgängen per e2fsck
überprüfen zu lassen, gibt es auch bzw. zusätzlich die Möglichkeit die maximale Anzahl zwischen zwei Überprüfungen festzulegen - in Tagen, Wochen oder Monaten. Natürlich lassen sich diese Parameter auch mit tune2fs
anpassen.
sudo tune2fs -i <Anzahl><d(Tage)|m(Monate)|w(Wochen)> <Partition>
Möchte man z.B. das maximale Intervall für die Partition /dev/sda2 auf 28 Tage festlegen, muss man Folgendes eingeben:
sudo tune2fs -i 28d /dev/sda2
Ähnlich zur Anzahl der mount-Vorgänge lässt sich auch das Intervall komplett ausschalten. Hier setzt man die Anzahl einfach auf 0 (hier im Beispiel für Partition /dev/hda2):
sudo tune2fs -i 0d /dev/sda2
Die Überprüfung des Dateisystems auf Konsistenz ist eine sehr wichtige Angelegenheit. Es sollte also wenigstens immer eine Überprüfungsvariante (nach Intervall oder nach Anzahl der mount-Vorgänge) eingeschaltet bleiben. Daher wird nicht empfohlen, die komplette Überprüfung einer Partition auszuschalten.
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> <Partition>
-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> <Partition>
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!
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> <Partition>
-m
: Der Parameter -m
beeinflusst, wieviel Prozent des Dateisystems reserviert bleiben. Hierbei muss nur die Zahl angegeben werden, nicht das %-Zeichen.
sudo tune2fs -m <Wert> <Partition>
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> <Partition>
-u
: Mit dem Parameter -u
kann der reservierte Speicher anderen Benutzern zur Verfügung gestellt werden.
sudo tune2fs -u <BenutzerId bzw. Benutzername> <Partition>
-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> <Partition>
-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> <Partition>
-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>,...] <Partition>
-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>,...] <Partition>
-j
: Der Parameter -j
fügt dem Dateisystem ein Journal hinzu. Wird kein Parameter mit -J
gesetzt, werden die Standardvorgaben benutzt.
sudo tune2fs -j <Partition>
-J
: Der Parameter -J
manipuliert das zu erstellende Journal eines ext3 oder ext4-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> <Partition>
-C
: Der Parameter -C
beeinflusst direkt die gespeicherte Anzahl der Mount-Vorgänge einer Partition. Setzt man den Zähler (Count) auf eine Zahl größer als den mit -c
eingestellten Wert, wird ein Dateisystemcheck beim nächsten Start erzwungen.
sudo tune2fs -C <Anzahl> <Partition>
-T
: Der Parameter -T
beeinflusst den gespeicherten Zeitpunkt des letzten Mount-Vorgangs. Das Datum wird im internationalen Datumsformat JJJJMMTT
erwartet. Die Angabe der Uhrzeit ist optional, now
ist ebenfalls erlaubt. Setzt man die Zeit auf einen Wert, der länger als das mit -i
definierte Intervall vom Zeitpunkt des letzten Überprüfungsvorgangs entfernt ist, wird beim nächsten Start eine Überprüfung des Dateisystems erzwungen.
sudo tune2fs -T <Datum|now> <Partition>
-M
: Mit -M
manipuliert man die gespeicherte Angabe des letzten Mountpunktes einer Partition.
sudo tune2fs -M <Mountpunkt> <Partition>
-l
: Ausgabe der ext-Optionen. Hierbei werden alle Optionen angezeigt, die mittels tune2fs
manipulierbar sind.
sudo tune2fs -l <Partition>
Wie man ext-Partitionen unter Windows einbindet, behandelt der Artikel: Linux-Partitionen unter Windows.
Das Upgrade von ext2 zu ext3 geschieht durch Hinzufügen eines Journals. Im Artikel Switching from an ext2 to an ext3 filesystem wird es in Einzelschritten beschrieben.
Das Upgrade von ext3 auf ext4 beschreibt der Artikel Upgrade auf ext4.
Ein Downgrade von ext3 zu ext2 ist möglich, indem man das Journal löscht.
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 Extends benutzt werden, was normalerweise automatisch beim nächsten schreibenden Zugriff passiert, ist die Umstellung auf Ext4 unumkehrbar.
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 damit die Daten retten.
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.
UNIX Dateisysteme - Grundlagen von Kris Köhntopp. Ursprünglich in der c't 2/1994 erschienen.
Ext4 - Einführung in die Features von ext4
Switching from an ext2 to an ext3 filesystem - Upgrade von ext2 zu ext3 (02/2002)