Dieser Beitrag gehört zu der Artikelserie LPIC-2
Dieser Beitrag wurde vor über 3 Monaten veröffentlicht. Die darin beschriebenen Informationen sind mit Vorsicht zu geniessen, da sie bereits veraltet oder nicht mehr gültig sein könnten. Solltest du von Neuerungen oder Verbesserungen wissen, so freue ich mich über einen klärenden Kommentar.Ein Urgestein unter Linux und wahrscheinlich so ziemlich jedem bekannt, ist das Filesystem ext2. Auch das ist, inklusive seinem Nachfolger ext3 Bestandteil von LPIC 201, also wollen wir das hier mal etwas genauer anschauen!
Allgemein
Ext2 steht für Extended Filesystem 2 und läuft relativ stabil schon seit Jahren unter Linux. Leider aber hat es auch ein paar Macken. Punkte wie Einzeladressierung oder die Tatsache, dass nach einem Crash immer die vollständige Platte auf deren Konsistenz überprüft werden muss, haben zu einer Weiterentwicklung geführt!
Der erste Schritt war die Einführung eines Journals. Damit versuchte man die lange Wartezeit, welche infolge einer Konsistenzprüfung anfallen konnten, zu verkürzen.
Das Problem war, dass das beim Niederschreiben von Daten ins Filesystem nicht nur die eigentlichen Daten, sondern auch noch zusätzliche Blöcke wie Inodes, Verzeichniseinträge oder Superblock geschrieben werden müssen. Geht man nun im schlimmsten Fall davon aus, dass das Filesystem während dem Niederschreiben abstürzt, so wäre ein Teil der Blöcke geschrieben, andere nicht. Kurz gesagt das Filesystem wäre total durcheinander. Und damit genau das nicht passiert, folgt auf einen solchen Absturz immer eine Prüfung der Konsistenz um solche fehlerhaften oder nicht geschriebenen Blöcke zu eliminieren.
Da eine solche pingelige Prüfung bei einer grösseren Platte aber relativ sehr lange dauern kann, kommt nun das Journal. Dieses überwacht jeden Schreibvorgang. Bevor auch nur ein Block an Daten geschrieben werden kann, speichert das Journal ab, wie und wo das Filesystem gleich einen Schreibvorgang starten wird. Stürzt das Filesystem nun während dem Schreiben ab, so weiss das System anhand des Journals jederzeit welche Blöcke abgearbeitet wurden und welche noch unvollständig sind. Eine Prüfung beschränkt sich somit von der gesamten Festplatte auf nur noch einen Sektor, wodurch die Wartezeit drastisch gesenkt werden kann.
Erzeugen
Um ein ext2- / ext3-Dateisystem zu erzeugen gibt es die Befehle mke2fs oder aber mkfs.ext2 und mkfs.ext3.
Für ext2 nimmt man die folgenden Befehle:
mke2fs /dev/sda1 mkfs.ext2 /dev/sda1
Für ein ext3 reicht es einen Parameter mehr zu setzen:
mke2fs -j /dev/sda1 mkfs.ext3 /dev/sda1
Will man nicht nur auf die Standardwerte zurückgreifen, so könnte man zum Beispiel mit der Option -b noch die Blockgrösse oder mit -i der Platz für Inodes festgelegt werden.
Migration
Auch nachträglich kann ein ext2 Filesystem noch mit Journaling ausgestattet werden. Dazu gibt es das Programm tune2fs:
tune2fs -j /dev/sda1
Wird die Platte das nächste Mal eingehängt, so wird diese als ext3 erkannt. Wichtig aber, in der Datei /etc/fstab muss der Typ von sda1 von ext2 auf ext3 angepasst werden:
root@master:/etc# cat fstab # /etc/fstab: static file system information. # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda1 / ext3 errors=remount-ro 0 1 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Und schliesslich ist auch ein Downgrade noch möglich, sprich das Journal kann nachträglich wieder gelöscht werden:
tune2fs -O ^has_journal /dev/sda1
Journal
Sollte das Journal nun extrem schnell, sehr gross werden, so gibt es noch die Möglichkeit, dieses auf eine eigene Partition oder Festplatte auszulagern:
mke2fs -O journal_dev -b 4096 /dev/sdb1 tune2fs -J device=/dev/sdb1 /dev/sda1
Oder noch unzählige Optionen zur Grösse und vielem mehr. Dazu aber mehr in den Manpages von tune2fs.
Überprüfung
Trotz Journal sollte man sein Dateisystem immer mal wieder komplett prüfen lassen, denn fehlerhafte Blöcke und sonstige kuriose Schreibfehler kann das Journal nicht abfangen. Das ext-Dateisystem hat dazu einen Lifecycle als Standard, dass immer nach 180 Tagen eine komplette Prüfung durchgeführt wird. Jedoch kann auch dieser Wert beliebig geändert werden, zum Beispiel auf alle 4 Monate:
tune2fs -i 4m -c 0 /dev/sda1
Label
Auch kann es ganz nützlich sein, ein Label zu setzen:
tune2fs -L home /dev/sda2
Dies hat den Vorteil, dass ich die mir keinen Dateipfad merken muss und zum Beispiel über das Label mounten kann:
mount -t ext2 LABEL=home /home
Oder aber ich kann eine Platte anhand des Labels anstatt der UUID in die fstab eintragen. Somit muss ich diese bei einer neuen Platte oder Partition nicht altern, sondern einfach das Label neu setzen.
Grösse
Ganz cool ist auch die Tatsache, ein ext-Filesystem jederzeit vergrössern oder verkleinern zu können. Dazu haben wir reseize2fs zur Verfügung:
resize2fs /dev/sda1 60G
Superblock
Will man nun wissen, wie es auf der eigenen Platte zur Zeit aussieht, so muss man den Superblock einsehen. Dazu kann ebenfalls auf tune2fs zurückgegriffen werden:
tune2fs -l /dev/sda1
Oder will man noch Informationen über einzelne Blöcke so verwendet man dumpe2fs:
dumpe2fs /dev/sda1
Und wer es ganz genau mag, der nimmt sogar debugfs, worauf ich hier aber auf Grund der Komplexität nicht eingehen möchte oder muss.

Ext2 / ext3 http://blog.encodingit.ch/2011/03/ext2-e… @compr00t
zum thema “resize2fs” und “JEDERZEIT vergrössern oder verkleinern” aus der manpage:
“It can be used to enlarge or shrink an UNMOUNTED file system”
also braucht man dafür ne downtime. das hat mit “jederzeit” leider gottes gar nichts mehr zu tun. sondern eher was mit nem wartungsfenster am sonntag früh zwischen 3 und 5 uhr -.-
Die meisten der hier aufgeführten Befehlen würde ich nur auf ausgehängten Platten machen…
Aber trotzdem:
Jederzeit ist ein Versprechen unter optimalen Bedingungen. Ausserdem beziehe ich mich auf den technischen Aspekt und nicht den wirtschaftlichen: Rein aus technischer Sicht ist es also JEDERZEIT Möglich die Platte zu vergrössern.