ext2 / ext3

closeDieser Beitrag gehört zu der Artikelserie LPIC-2
closeDieser 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.

close
Immer informiert sein dank meines RSS Feeds.Oder folge mir via Twitter!
Dieser Beitrag wurde unter Hardware, LPIC abgelegt und mit , verschlagwortet am von .

Über Patrick

Ich bin ein 21 jähriger, gelernter Informatiker mit Fachrichtung Systemtechnik und ein leidenschaftlicher System Engineer und Opensource-Enthusiast. Zur Zeit vertiefe ich mein Wissen in einem Bachelor-Studium in Informatik. Neben meiner Passion für Linux und Opensource, habe ich ein besonderes Interesse an Security und Ethical Hacking und bin freier Autor für das Security-Magazin hakin9.

3 Gedanken zu „ext2 / ext3

  1. winky

    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 -.-

    Antworten
    1. Patrick Artikelautor

      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.

      Antworten

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <b> <blockquote cite=""> <cite> <del datetime=""> <em> <i> <pre lang="" line="" escaped=""> <strong>