Die wenigsten Benutzer machen sich während der Installation Gedanken über das Dateisystem, sondern übernehmen die Grundeinstellung der Distribution. Dieser Artikel zeigt Ihnen, wann Sie davon abweichen sollten.
Die Auswahl des Dateisystems ist bei aktuellen Linux-Distributionen in der Regel mit wenigen Mausklicks erledigt sofern überhaupt eine Entscheidung nötig ist. Die meisten Benutzer bleiben denn auch beim voreingestellen Dateisystem und wechseln es höchstens auf Grund schlechter Erfahrungen oder mit dem Umstieg auf eine andere Distribution.
Es lohnt sich jedoch, bereits bei der Installation das Dateisystem zu tunen. Laut den Benchmarks des LinuxUser ist XFS unter Kernel 2.6 mindestens so performant, wie ReiserFS und Ext3. Auch Reiser4 will sich mit Rekordgeschwindigkeiten und neuem Design [1] ein möglichst großes Stück vom Dateisystem-Kuchen abschneiden. Hier kämpfen die Entwickler allerdings teilweise noch mit fundamentalen Problemen, sodass sich Reiser4 für den produktiven Einsatz noch nicht eignet.
Mainstream
Der überwiegende Teil der Linux-Rechner benutzt Ext3 [2] oder ReiserFS [3] als Hauptdateisystem, da dies der Standardvorschlag der jeweiligen Distribution ist. ReiserFS und Ext3 sind weder besonders schnell, noch weisen sie ein besonders großes Feature-Spektrum auf. Da die einzelnen Distributoren jedoch ihr bevorzugtes Filesystem mit zahlreichen Patches versehen, gibt es enorme Unterschiede zwischen Dateisystem und Dateisystem. Allgemeingültige Aussagen lassen sich also nur mit Vorbehalt treffen. Warum die meisten Distributionen Ext3 oder ReiserFS benutzen, lesen Sie im Kasten “Am Anfang war Ext2”.
Ext3 und ReiserFS gehören zur Familie der Journaling-Dateisysteme. Journaling bedeutet streng genommen, dass das Dateisystem alle Daten zweimal schreibt: Zunächst ins Journal, dann an den eigentlichen Platz. Eigentlich logisch, dass hier nicht mit Spitzengeschwindigkeiten zu rechnen ist.
In der Grundeinstellung benutzen Ext3 und ReiserFS deshalb einen speziellen Modus, bei dem das Dateisystem nur die Metadaten – die Informationen über die Bewegungen im Dateisystem – im Journal speichert, die eigentlichen Daten nicht. Um eine Ext3- oder ReiserFS-Partition mit diesem Modus zu mounten, benutzen Sie die Option data=ordered. Bei den meisten Distributionen ist dies bereits die Grundeinstellung. Mehr zu den einzelnen Mount-Optionen finden Sie in Tabelle 1.
Am Anfang war Ext2
Die älteren Linux-User können sich vermutlich noch an die Zeiten erinnern, als beinahe jede Linux-Distribution das Dateisystem Ext2 benutzte. Es war acht Jahre lang das Linux-Dateisystem der ersten Wahl. Die Ur-Versionen von Linux benutzten noch das Minix-Dateisystem. Einige Entwickler begannen 1992 mit der Programmierung eines eigenen Dateisystems, des Extended Filesystem ExtFS. Dies hatte jedoch viele Fehler, so dass Rémy Card im darauffolgenden Jahr mit Ext2 das Second Extended Filesystem veröffentlichte.
Ext2 entwickelte sich zu einem stabilen und erweiterbaren Dateisystem. Es hatte jedoch einen großen Nachteil: Da es kein Journaling verwendete, musste zum Beispiel bei einem Crash und regelmäßig nach einer festgelegten Zeit ein langwieriger Dateisystemcheck durchgeführt werden. Dieser dauerte je nach Kapazität der Festplatte mehrere Stunden. Auch ließ sich das Dateisystem nur mit proprietären Tools im laufenden Betrieb vergrößern oder verkleinern. Um 2000 war der Zeitpunkt gekommen, dass die Festplatten zu groß und der Dateisystemcheck mit Ext2 zu langsam wurde.
Unabhängig voneinander arbeiteten deshalb Kernel-Entwickler an zwei Projekten: Ext3 als Journaling-Erweiterung für Ext2 und ReiserFS v3 als komplett neues Dateisystem mit nativem Journaling-Support. Den Wettkampf um das erste Journaling-Dateisystem gewann ReiserFS noch 1999. Suse – Hauptsponsor des Journaling-Codes und sehr am Online-Resizing interessiert – war im Frühling 2000 der erste Distributor, der in Version 6.4 das neue Dateisystem als Standard-Filesystem verwendete (als Update war es bereits für 6.3 erhältlich). Es hatte jedoch einige Kinderkrankheiten, so funktionierte zum Beispiel die Zusammenarbeit mit dem Netzwerkdateisystem NFS sehr schlecht.
Ext3 war erstmals 2001 für Red Hat 7.2 als offizielles Dateisystem erhältlich. Die Entscheidung für Ext3 fällte Red Hat unter anderem deshalb, weil das Dateisystem schon bald in den offiziellen Kernel aufgenommen werden sollte, was mit Kernel 2.2.15 (dem letzten 2.2-er Kernel vor 2.4) auch gelang. Bei ReiserFS dauerte dieser Schritt noch bis zum Kernel 2.4.1. Seither benutzen die meisten Linux-Distributionen entweder Ext3 oder ReiserFS als Standard-Dateisystem und beide Dateisystem gelten als sehr stabil.
Ebenfalls noch 2001 schafften auch zwei nach Linux portierte Journaling-Dateisysteme von IBM und SGI den Sprung in den Linux-Kernel. XFS von SGI ist inzwischen eines der besten Dateisysteme für Dateigrößen von 1 MByte und mehr. JFS von IBM konnte sich nie richtig etablieren und wird zum Beispiel von Suse nicht mehr offiziell unterstützt.
Steht die Integrität der Daten an erster Stelle und spielt die Geschwindigkeit nur eine untergeordnete Rolle empfiehlt sich die Option data=journal für das Einhängen der jeweiligen Partition. Bei Ext3 resultiert daraus ein Schreibperformance-Verlust von bis zu 50 Prozent. Bei größeren Dateien beträgt der Unterschied um die 20 Prozent (siehe Abbildung 1). Diese Option ist denn auch nicht für das Wurzelverzeichnis gedacht, sondern für separate Datenpartitionen. Auch für das /home-Verzeichnis ist sie nur beschränkt zu empfehlen. Die Option data=writeback, bei der das Filesystem ins Journal schreiben darf, bevor alle Daten an ihrem Bestimmungsort angelangt sind, ermöglicht einen Performance-Gewinn von bis zu 10 Prozent. Sie eignet sich gut für das Root-Dateisystem, da hier in der Regel nicht viele Schreibvorgänge stattfinden und kaum Datenverlust zu befürchten ist. Ein separates /home– oder Datenverzeichnis ist dann allerdings zu empfehlen.

Abbildung 1: Schreibperformance-Vergleich mit dem Benchmark Iozone. Im Journal-Modus sind Ext3 und ReiserFS etwa gleich langsam. Writeback- und Ordered-Modus bringen bei Ext3 bis zu 40 Prozent schnelleren Datentransfer, bei ReiserFS sind es bis zu 120 Prozent. Als Vergleich die Ergebnisse von Ext2 und Reiser4.
Erstaunlich gut für sein Alter schlägt sich auch Ext2. In vielen Tests arbeitet es schneller als Ext3 oder ReiserFS. Hier zeigt es sich, dass die Journaling-Fähigkeit von Ext3 einen leichten Performance-Verlust gegenüber Ext2 mit sich bringt.
Für Partitionen ohne wichtige Daten, zum Beispiel eine separate /tmp-Partition, lohnt es sich deshalb, allenfalls Ext2 anstelle von Ext3 einzusetzen, falls die Partitionsgröße nicht über die Gigabyte-Marke steigt. Ansonsten ist Ext2 nicht zu empfehlen, da der Dateisystem-Check unter Umständen länger als das Einspielen eines Backups dauert. Weiterhin erste Wahl ist Ext2 für eine separate Boot-Partition, da zum Beispiel bei ReiserFS das Journal alleine 33 MByte belegt.
Data-Optionen von Ext3 und ReiserFS
| Option | Erklärung |
|---|---|
| data=journal | Diese Option, bei der alle Daten zunächst in den Journal-Bereich kopiert werden und erst dann an den eigentlichen Bestimmungsort, garantiert höchste Datensicherheit. Mit ihr sinkt aber sowohl bei Ext3 als auch bei ReiserFS die Datendurchsatzrate knapp um die Hälfte, da jeder Schreibvorgang doppelt so lange dauert. |
| data=ordered | Dies ist die Standard-Option. Das Dateisystem schreibt zunächst die Daten an den Bestimmungsort, und trägt dann die Informationen über den abgeschlossenen Vorgang im Journal ein. |
| data=writeback | Mit dieser Mount-Option, die bei Ext3 einen Performance-Gewinn von ca. 10 Prozent, bei ReiserFS von bis zu 30 Prozent gegenüber der Default-Option bringt, darf das Dateisystem bereits in das Journal schreiben, bevor alle Daten an ihrem Bestimmungsort angelangt sind. Bei einem Crash kann es vorkommen, dass durch den Dateisystemcheck alte Daten in Dateien auftauchen. Die Option ist für Reiser nur unter Kernel 2.6 verfügbar. |
| data=notail | Nur bei ReiserFS. ReiserFS benutzt Leerraum in Blöcken, um darin Teile von Daten zu speichern, die nicht in einen Block passen. Der Schwanz (engl. tail) der Datei wir also abgeschnitten und in einem anderen Block gespeichert. ReiserFS speichert damit 10-20 Prozent mehr Dateien auf der selben Partition als beispielsweise Ext3. Da damit ein leichter Performance-Verlust verbunden ist, lässt sich dieses Feature mit der Option data=notail abschalten. Der Performance-Gewinn durch diese Option liegt jedoch unter 5 Prozent. |
Reiser4 und XFS
Steht Performance an erster Stelle auf der Dateisystem-Wunschliste, ist Reiser4 klarer Favorit. Die Benchmarks des LinuxUser untermauern die Behauptung auf der Namesys-Homepage, Reiser4 sei doppelt so schnell wie ReiserFS. Kein einziges Dateisystem steht bei den verschiedenen Tests so oft auf Position Eins, wie Reiser4. Beim Anlegen von 50?000 Dateien ist es zum Beispiel dreimal so schnell wie das zweitschnellste Dateisystem XFS [4]. Hier machen sich die Schreib-Optimierungsarbeiten an Reiser4 deutlich bemerkbar. Auch bei den übrigen Schreib-Tests ist Reiser4 zumindest 10 bis 20 Prozent flotter als das nächstschnellste Dateisystem. Es darf sich somit zu Recht als schnellstes Linux Dateisystem bezeichnen.
Auf der Ressourcen-Seite sieht es für Reiser4 hingegen weniger gut aus. So liegt zum Beispiel die CPU-Belastung beim oben erwähnten sequenziellen Anlegen von 50000 Dateien bei Reiser4 bei 26 Prozent. Die übrigen Dateisysteme geben sich hier mit 1-4 Prozent zufrieden. Reiser4 liegt im Allgemeinen bei der Prozessorbelastung rund 10 Prozent über allen anderen Dateisystemen, manchmal sind es aber auch 50 oder mehr Prozente. Nur ReiserFS überbietet Reiser4 in einigen Test-Kategorien in dieser Hinsicht. Auf Rechnern mit einer schwachen CPU sollten Sie deshalb Ext3 oder XFS einsetzen.
Auch auf der Feature-Liste von Reiser4 fehlen zur Zeit noch grundlegenden Funktionen, wie Quota– oder ACL-Support.
XFS hat das Zeug, zum Dateisystem der ersten Wahl aufzusteigen. Im Gegensatz zu Reiser4 kann es schon jetzt auf einen aktiven Benutzerkreis zurückblicken und unterstützt Quotas, ACLs sowie erweiterte Attribute. Es ist das schnellste Dateisystem nach Reiser4 und schafft es sogar, dieses in einigen Kategorien zu übertreffen. XFS schneidet in erster Linie bei großen Datenmengen gut ab. Auch bei Testdaten mit einer Größe von 4 GByte vermag es seine Performance noch zu steigern. Möchten Sie auf Ihrem PC Videos editieren, sollten Sie XFS als Dateisystem verwenden.
Welches Dateisystem?
In der Regel liegen Sie mit der Entscheidung für Ext3 oder ReiserFS richtig. Es gibt jedoch Situationen, für die das eine oder das andere Dateisystem besser geeignet ist. ReiserFS benötigt zum Beispiel überdurchschnittlich lange, um eine Partition einzuhängen. Bei Laufwerken von 5 bis 10 GByte Kapazität ist der Unterschied zu Ext3 oder XFS noch gering. Möchten Sie auf Ihrem System aber eine 80-GByte-Partition anlegen, bringt Ext3 beim Booten einen Geschwindigkeitsvorteil von einigen Sekunden. Auch für externe Festplatten eignet sich ReiserFS aus diesem Grund weniger gut. Schließen Sie zum Beispiel eine 200-GByte-Festplatte mit ReiserFS an, braucht das System über zehn Sekunden, um die Platte einzuhängen. Bei einer mit Ext3 formatierten Festplatte dauert der gleiche Vorgang nur drei Sekunden.
Ext3 zeigt bei kleinen Dateien und beim Formatieren Schwächen. So dauert das Anlegen einer 200 GByte großen Ext3-Partition über fünf Minuten. Benutzen Sie also Partitionen, die Sie häufig neu formatieren, verwenden Sie darauf besser ReiserFS oder XFS. Hier dauert derselbe Vorgang bloß einige Sekunden. Arbeiten Sie vorwiegend mit Office-Dateien im Größenbereich von 100 KByte, sollten Sie ebenfalls ReiserFS verwenden, unabhängig davon, was Ihnen die Distribution vorschlägt. Bei diesen Dateigrößen arbeitet das Dateisystem von Namesys wesentlich schneller als Ext3 oder XFS. Für Verzeichnisse mit sehr vielen Dateien eignet sich Ext3 auch schlecht, da das Dateisystem bereit beim Formatieren die Anzahl der Inodes festlegt. Diese bestimmen aber, wieviele Dateien überhaupt angelegt werden können. ReiserFS und XFS legen die Anzahl der Inodes dynamisch fest: die Gefahr, noch freien Speicherplatz zu haben, aber keine freien Inodes mehr, ist hier gleich Null.
Für die Audio- oder Videosammlung auf dem PC eignen sich Ext3 und XFS besser, wobei XFS vor allem bei Dateien im Gigabyte-Bereich deutlich flinker arbeitet als Ext3 oder ReiserFS. Einen nicht zu unterschätzenden Faktor stellt auch der Platzverbrauch dar. Durch sein effektives Format speichert ReiserFS kleine Dateien effizienter als Ext3 oder XFS. So belegen die Kernel-Sourcen unter ReiserFS nur 250 MByte Plattenplatz, unter XFS hingegen 252 MByte. Ext3 braucht zum Speichern der gleichen Daten sogar 260 MByte. Schließlich sollten Sie auch die Harddisk ideal nutzen: Die meisten Festplatten arbeiten auf den letzten Zylindern wesentlich schneller, als am Anfang der Platte. Je nachdem sollten Sie also das Wurzelverzeichnis oder das Datenverzeichnis am Ende der Festplatte anlegen.
Kernelquellen kopieren
| Distribution | Dateisystem | Zeit |
|---|---|---|
| Ubuntu 5.10 | Ext3 | 70s |
| Ubuntu 5.10 | ReiserFS | 65s |
| Suse 10.0 | ReiserFS | 100s |
| SuSE 10.0 | Ext3 | 70s |
| Suse 10.0 | XFS | 80s |
Optimierungsfunktionen
Die gute Nachricht vorweg: Die meisten Distributionen richten Dateisysteme bereits Performance-optimiert ein. Es gibt allerdings bei ReiserFS und Ext3 einige Parameter, die das Filesystem noch ein wenig schneller machen. Linux-Dateisysteme merken sich für jede Datei die Zeit des letzten Zugriffs (Access Time). Diesen Vorgang können Sie mit der Mount-Option noatime verhindern. Sowohl Ext3, ReiserFS als auch XFS kennen diese Option. Nachteile bringt noatime auf Desktop-Systemen keine mit. Parallel zu noatime für Dateien schaltet nodiratime die Zugriffszeit für Verzeichnisse aus.
Um die Partition /dev/hda6 testweise mit diesen Optionen ins Verzeichnis /test einzuhängen, geben Sie folgenden Befehl ein:
mount -o noatime,nodiratime /dev? /hda6 /test
Um die Optionen dauerhaft anzuwenden, editieren Sie die Datei /etc/fstab. Hier ergänzen Sie die bestehenden Einträge in der vierten Spalte um noatime,nodiratime.
In unseren Test brachte die Option mit ReiserFS einen leichten Schreibperformance-Vorteil, wobei die Testresultate allerdings stark schwankten. Konkret dauerte es auf einer Suse Linux 10.0 OSS ohne die zwei Optionen rund 110 Sekunden, die Kernelquellen von Partition A auf Partition B zu kopieren. Mit noatime, nodiratime dauerte der gleiche Vorgang nur 100 Sekunden. Ext3 war hier interessanterweise deutlich schneller. Es benötigte lediglich 70 Sekunden, egal ob mit oder ohne noatime-Option. XFS kopierte die über 20?000 Dateien in 80 Sekunden von einer Partition auf die andere. Auch hier brachte noatime,nodiratime keinen messbaren Unterschied. Probeweise führten wir die gleichen Tests auf Ubuntu Linux 5.10 “Breezy Badger” durch. Hier arbeitete sowohl Ext3 als auch ReiserFS etwas schneller als unter Suse Linux 10.0.
Wie unsere Untersuchungen ergaben, bremste ReiserFS als Dateisystem des Wurzelverzeichnisses Suse Linux 10.0 aus. Nach einer Neuinstallation mit Ext3 als Dateisystem war dann das Kopieren auf die ReiserFS-Partition – wie erwartet – schneller, als der gleiche Vorgang auf Ext3 und etwa gleich schnell wie unter Ubuntu.
Anders sieht es mit der Option data=writeback aus (siehe Tabelle 1). Hier sind deutliche Unterschiede messbar, die bei Ext3 einen Gewinn von rund 10 Prozent bringen, bei ReiserFS bis zu 30 Prozent. Für Ext3 lässt sich jedoch – zumindest unter Suse – diese Option nicht ohne Weiteres auf das Wurzelverzeichnis anwenden. Sie müssen deshalb für die betroffene Partition (zum Beispiel /dev/hda7) den Befehl tune2fs /dev/hda7 -o journal_data_writeback ausführen.
Bei größeren Ext3-Partitionen sorgt auch das Feature dir_index für schnelleres Arbeiten. Es schaltet eine spezielle Hash-Technik ein, die das Nachschlagen in großen Verzeichnissen beschleunigt. Um eine bestehende Ext3-Partition so zu tunen benötigen Sie folgende zwei Befehle:
tune2fs -O dir_index /dev/hda7 fsck.ext3 -fD /dev/hda7
Beim Erstellen einer Partition fällt der Dateicheck weg. Hier geben Sie einfach folgenden Befehl ein:
mkfs.ext3 -O dir_index /dev/hda7
Eine weitere Möglichkeit, die Festplatte mit Ext3, ReiserFS oder XFS noch etwas schneller zu machen, besteht darin, das Journal auf eine zweite Festplatte auszulagern (die optimalerweise nicht am gleichen IDE-Bus hängen sollte). Für Ext3 benutzen Sie dazu beim Erstellen der Partition die Option -O journal_dev /dev/hdd1, falls /dev/hdd1 die für das Journal vorgesehene Partition ist. Unter ReiserFS lautet die analoge Option -j /dev/hdd1. Bei ReiserFS entdeckte ein Kernel-Entwickler jedoch vor kurzer Zeit einen schweren Fehler, der das System unter großer Last zum Absturz bringt. Sie sollten deshalb zunächst die neueste Version von ReiserFS herunterladen, bevor Sie vom externen Journal Gebrauch machen. Unter XFS lautet die entsprechende Option -l logdev=/dev/hdd1.
Für ReiserFS existieren noch weitere Mount-Optionen, die die Performance verbessern können. Da die meisten davon jedoch sehr experimentell sind, sollten Sie lieber gleich auf Reiser4 wechseln. Das ist teilweise auch noch experimentell, arbeitet aber garantiert schneller. Das Kopieren der Kernelquellen dauerte auf unserem Testrechner nur 30 Sekunden.
Suse Linux 10.0 bringt für Reiser4 bereits Pakete mit. Möchten Sie das neue Reiser-Dateisystem einsetzen, dann installieren Sie libaal und reiser4progs mit YaST und formatieren anschließend die gewünschte Partition mit mkfs.reiser4 Partition. Eine Anleitung für die Installation unter Ubuntu gibt es auf der Reiser4-Mailingliste [5]. Die offizielle Anleitung von Namesys finden Sie unter [6].
Langsamer, bitte!
Falls Geschwindigkeit eher eine untergeordnete Rolle spielt und Ihnen die Sicherheit der Daten wichtiger ist, können Sie das Dateisystem natürlich auch langsamer machen. Mit der Option data=journal schreiben Ext3 und ReiserFS sämtliche Daten zunächst ins Journal, erst dann an den eigentlichen Bestimmungsort. Da hier wirklich doppelte Arbeit geleistet wird, nimmt die Performance des Systems auch deutlich ab. Die Chance nach einem Crash sämtliche Dateien wieder unverändert vorzufinden, stehen aber höher als bei der Grundeinstellung. Stürzt Ihr Rechner oft ab, sollten Sie diese Mount-Option wählen. Möchten Sie trotz data=journal beste Performance erreichen, lagern Sie das Journal auf eine zweite Platte aus wie oben beschrieben.
Fazit
Filesystem-Tuning fordert sehr viel Zeit und bringt oft kaum messbare Erfolge. Es ist deshalb einfacher, bereits für die Installation das richtige Dateisystem zu wählen, als das Dateisystem nachträglich zu tunen. Unter Suse Linux 10.0 scheint hier Ext3 die bessere Wahl zu sein: Das System bootet schneller und das Einhängen zusätzlicher Partitionen geht ebenfalls flotter. Ansonsten ist der Wettkampf zwischen Ext3 und ReiserFS ziemlich ausgeglichen. Für Systeme mit Video-Editing lohnt der Einsatz von XFS. Für Geschwindigkeit-Freaks ist Reiser4 ein Muss, allerdings ist die Installation mit Reiser4 als Wurzelverzeichnis noch etwas kompliziert. Hier lohnt sich der Einsatz einer Distribution, die Reiser4 schon für die Installation unterstützt, wie zum Beispiel Underground Linux.
Glossar
-
Quota
-
Quotas legen den Speicherplatz pro Benutzer fest. Sie verhindern, dass ein Benutzer zu viel Platz auf dem Rechner belegt. Auch Mail-Server benutzen Quotas, um die Größe des Postfachs festzulegen.
-
ACL
-
Access Control Lists. Traditionelle Linux-Dateisysteme kennen nur die Dateirechte lesen, schreiben und ausführen für den Eigentümer, die Gruppe und den Rest der Welt (the others). ACLs ergänzen diese Rechte um eine feinere Abstufung. ACL-Support ist vor allem für die Zusammenarbeit mit Windows (Samba) sehr wichtig.
-
erweiterte Attribute
-
Neuerung, die für die meisten Dateisyteme mit dem Kernel 2.6 Einzug hielt. In den erweiterten Attributen lassen sich beliebige Zusatzinformationen zu einer Datei speichern, zum Beispiel Stichwörter für eine Suche.
Infos
[1] Marcel Hilzinger, “IV. Symphonie von Reiser – Neues Journaling-Dateisystem mit atomaren Transaktionen”: Linux-Magazin 09/04, S. 38.
[2] Ext3: http://www.zipworld.com.au/~akpm/linux/ext3/
[3] ReiserFS: http://www.namesys.com
[4] XFS: http://linux-xfs.sgi.com/projects/xfs/
[5] Reiser4 für Ubuntu: http://marc.theaimsgroup.com/?l=reiserfs&m=113270611302330&w=2
[6] Reiser4-Installation: http://www.namesys.com/install_v4.html





