[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] Das ext-Dateisystem in der Version [https://www.kernel.org/doc/Documentation/filesystems/ext4.txt ext4] {en} 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 [wikipedia: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 [wikipedia:Inode: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 [wikipedia:Nullzeichen: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 [wikipedia:Btrfs:], welches unter anderem Copy-on-Write, Subvolumes, Schnappschüsse, Komprimierung bietet sowie [github:openzfs/zfs: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 [wikipedia:Ext2: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 [wikipedia:Ext3: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 [:Dateisystemcheck:Dateisystemchecks]. Bei Ubuntu ist [wikipedia:Ext4:ext4] die Standardeinstellung. ##den folgenden Anker bitte zwecks Rückwärtskompatibilität von Links NICHT entfernen! [[Anker(tuneables)]] = 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 {{{#!vorlage Paketinstallation 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. {{{#!vorlage Hinweis Im Folgenden muss das X in /dev/sda'''X''' 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 {{{#!vorlage Befehl 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 [#Problemloesung-Superblock Problemlösung Superblock]. [[Anker(e)]] `-e`: Das System kann entweder mit `continue` fortfahren, mit `remount-ro` die Partition schreibgeschützt erneut mounten oder mit `panic` einen [wikipedia:Kernel Panic:] auslösen. {{{#!vorlage Befehl sudo tune2fs -e /dev/sdaX }}} [[Anker(f)]] `-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. {{{#!vorlage Befehl sudo tune2fs -f BEFEHLE /dev/sdaX }}} {{{#!vorlage Warnung 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. [[Anker(r)]] `-r`: Der Parameter `-r` beeinflusst die Anzahl der reservierten Blocks. `-r` erwartet die Angabe einer absoluten Anzahl von Blocks. {{{#!vorlage Befehl sudo tune2fs -r ANZAHL_RESERVIERTER_BLOCKS /dev/sdaX }}} [[Anker(m)]] `-m`: Der Parameter `-m` beeinflusst, wie viel Prozent des Dateisystems reserviert bleiben. Hierbei muss nur die Zahl angegeben werden, nicht das %-Zeichen. {{{#!vorlage Befehl sudo tune2fs -m WERT /dev/sdaX }}} {{{#!vorlage 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 [wikipedia:Fragmentierung_(Dateisystem):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. }}} [[Anker(g)]] `-g`: Mit dem Parameter `-g` kann der reservierte Speicher einer anderen Benutzergruppe zur Verfügung gestellt werden. {{{#!vorlage Befehl sudo tune2fs -g /dev/sdaX }}} [[Anker(u)]] `-u`: Mit dem Parameter `-u` kann der reservierte Speicher anderen Benutzern zur Verfügung gestellt werden. {{{#!vorlage Befehl sudo tune2fs -u /dev/sdaX }}} == Identifizierung == [[Anker(U)]] `-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. {{{#!vorlage Befehl sudo tune2fs -U /dev/sdaX }}} [[Anker(L)]] `-L`: Mit `-L` kann man dem Dateisystem zusätzlich zur UUID einen Namen geben, der auch in Mount-Vorgängen verwendet werden kann. {{{#!vorlage Befehl 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. [[Anker(j)]] `-j`: Der Parameter `-j` fügt dem Dateisystem ein Journal hinzu. Wird kein Parameter mit `-J` gesetzt, werden die Standardvorgaben benutzt. {{{#!vorlage Befehl sudo tune2fs -j /dev/sdaX }}} [[Anker(J)]] `-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 {{{#!vorlage Befehl sudo mke2fs -O journal_dev external-journal }}} erstellt worden sein. `external-journal` darf ein Devicenode, ein Label oder eine UUID sein. {{{#!vorlage Befehl sudo tune2fs -J |device=external-journal> /dev/sdaX }}} Das Dateisystem kann auch ohne Journal genutzt werden. Das standardmäßig aktivierte Journal kann über den Befehl {{{#!vorlage 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: [[Anker(o)]] `-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! {{{#!vorlage Befehl sudo tune2fs -o <^|+>