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.
die cvs Version von ext2resize unterstützt ext3 auch online (Achtung: beta code)
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.
data=journal => Bevor die Daten in das Dateisystem geschrieben werden, müssen sie müssen sie einmal komplett in das Journal geschrieben werden .
data=ordered => Daten werden parallel in das Dateisystem und in das Journal geschrieben.
data=writeback => Nachdem die Metadaten in das Journal geschrieben wurden, können Daten in das Dateisystem geschrieben werden. Die Daten selbst werden nicht journalt, dadurch ist dies der schnellste Modus
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.
- Vorsicht: führte bei mir zu Datenverlust. Hatte die Partition ro gemountet und nachher nur mit "remount,rw" wieder rw eingehängt. Möglicherweise führte das zu Problemen. Also am besten nur von nem zweiten System (z.B. knoppix) aus machen.
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):