Dateisystem ext3

Das ext3-Dateisystem ist quasi der Nachfolger des ext2-Systems. ext3 ist gegenüber ext2 vor allem um die Journaling-Funktion erweitert worden. Was insbesondere bedeutet, dass nach einem Systemabsturz nicht die ganze Platte durchgecheckt werden muss (was sehr lange dauern kann), sondern nur die allerletzten, unvollständigen Änderungen (Transaktionen) am Dateisystem rückgängig gemacht werden. Einen Erfahrungsbericht gibt es auf der Seite FileSystemExt3.

Unterstützt werden die Modi writeback, journal und ordered, wobei letztgenannter der Standardmodus ist. In diesem Modus werden nur die MetaDaten im Logbuch (=Journal) gespeichert. Dadurch, dass jedoch Datenblöcke einer Datei geschrieben werden, bevor die zugehörigen Metadaten geschrieben bzw. upgedatet werden, erscheinen wenn der Rechner ausgeschaltet und wieder gestartet wird die Datenblöcke als unbelegt. Und werden dadurch natürlich auch bei nächster Gelegenheit überschrieben. Obwohl das nicht besonders sicher anmutet ist es doch das, woran die meisten Leute interessiert sind. Wer schon einmal versucht hat, ein PDF zu lesen, bei dem das Ende fehlt (da nicht mitkopiert) weiß was ich meine.

ext3 hat gegenüber allen anderen JournalingFilesystemen unter Linux den Vorteil, dass es abwärtskompatibel zu ext2 ist - d.h., wenn man den Computer in einem Notfall von einer Rettungsdisk oder Rettungs-CD startet, kann man vorhandene ext3-DateiSysteme auch mit ext2 mounten.

Homepage: http://www.zipworld.com.au/~akpm/linux/ext3/

FAQ: http://batleth.sapienti-sat.org/projects/FAQs/ext3-faq.html

Mehr Infos: http://www.redhat.com/support/wpapers/redhat/ext3/index.html

Grundlegendes Konzeptpapier von Stephen Tweedie: http://olstrans.sourceforge.net/release/OLS2000-ext3/OLS2000-ext3.html

Sehr interessantes Interview mit S. Tweedie: http://www.linux-magazin.de/Artikel/ausgabe/2002/03/news/news.html

Engl. Artikel mit etwas Hintergrundinfos zu den drei versch. Modi: http://www.linuxplanet.com/linuxplanet/reports/4136/

Zum Erstellen von Ext3 Dateisystemen gibt es keinen gesonderten Befehl, sondern Optionen zu bestehenden Befehlen: mke2fs -j

Ehemaliger Nachteil von Ext3: Es gab keine Möglichkeit, die Größe eines ext3-Dateisystems online zu verändern (offline geht's mit resize2fs oder ext2resize oder GnuParted.

/!\ LinuxKernel 2.4.20 enthält einen Fehler, der zuschlägt, wenn man data=journal benutzt (default ist derzeit data=ordered, so dass es bei den meisten keine Probleme geben dürfte).

Online vergrößern kann man ein Ext3-Filesystem mit ext2online [-C fd] [-d] [-q] [-v] [-V] {device|mountpoint} [size[b|K|M|G|T]]

Für mehr Informationen siehe http://sourceforge.org/projects/ext2resize/.

Ext3 beschleunigen

Journal-Modus data=writeback

Wie oben bereits erwähnt, gibt es 3 Journalling-Modi. Metadaten werden immer journalt.

Um den Modus data=writeback zu aktivieren, muss der /etc/fstab für die gewünschte Partition die Option data=writeback hinzugefügt werden, wie hier z.B.:

/dev/sda1  /  ext3  relatime,errors=remount-ro,data=writeback   0   1

Nun muss das Dateisystem noch darauf eingerichtet werden, das Device /dev/... ist anzupassen:

tune2fs -o journal_data_writeback /dev/sda1

Kontrollieren der Einstellungen mit:

tune2fs -l /dev/sda1

Nach einem Neustart sollte es aktiv sein, zu erkennen an der Ausgabe von mount:

root@lin-joern:~# mount
/dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro,data=writeback)
...

ext3 mit dir_index / htree

Mit einem Kernel, der htree / dir_index unterstützt (Kernel 2.4 mit Patch oder Kernel 2.6), kann man Zugriffe auf Verzeichnisse mit vielen Dateien deutlich beschleunigen.

Man kann diese Option auch auf bestehenden DateiSystemen nachträglich einschalten:

tune2fs -O dir_index /dev/hdXX

Optional kann man die Benutzung von btrees in bereits existierenden Verzeichnisse aktivieren:

e2fsck -fD /dev/hdXX

Ansonsten werden nur Verzeichnisse optimiert, die nach dem Aktivieren auf mehr als einen Block erweitert wurden.

ext3 mit ext. Journal

Man kann etwas Geschwindigkeit rausholen, wenn man das Journal für ein Filesystem (hier /dev/sdc1, Blocksize==4096) auf ein extra Device legt (hier /dev/md1). Die vorhandenen Nutzdaten auf /dev/sdc1 bleiben hierbei erhalten.

# umounten, sicher ist sicher ;)
umount /dev/sdc1

# bestehendes Journal entfernen
tune2fs -O ^has_journal /dev/sdc1

# externes Journal anlegen auf /dev/md1 mit gleicher Blockgroesse!
mke2fs -b 4096 -O journal_dev /dev/md1

# Journal wieder hinzufuegen, aber eben extern
tune2fs -J device=/dev/md1 /dev/sdc1

ext2/3 erweiterte Attribute

ext2/3 besitzen 10 erweiterte Attribute, die mit 'lsattr' angezeigt und mit 'chattr' gesetzt werden können. Attribute auf einem Verzeichnis werden auf neu erzeugte Dateien in diesem Verzeichnis vererbt.

Nützlich ist das Attribut 'A', welches das Schreiben von atime unterbindet. Schön wäre auch 'c' (komprimieren), wenn es im Kernel unterstützt würde.


Zugriff auf ext2, ext3 und ext4 Partitionen von Microsoft Windows aus

Verfügbare Software für Lese- und Schreibzugriff auf die dateisysteme ext2, ext3 und ext4 (ext3 und ext4 ohne Journal):

ext3 (zuletzt geändert am 2013-08-21 09:16:52 durch HSI-KBW-37-209-1-176)