Können die Neueinsteiger Btrfs und Ext4 den traditionellen Linux-Dateisystemen den Rang ablaufen? Wir messen nach.
Ein knappes Jahr lang waren sich alle großen Distributionen in einer zentralen Frage einig: Ext3 ist das Linux-Dateisystem der ersten Wahl. Von diesem Gedanken muss man sich nun verabschieden, da mit Ext4 ein ebenso stabiler, aber noch schnellerer Nachfolger existiert. Obendrein hält ab Kernel 2.6.29 mit Btrfs ein neues Dateisystem in den Kernel Einzug, das Ext4 an Performance kaum nachsteht, aber deutlich mehr Features mitbringt.
Dieser Artikel testet die Performance der Dateisysteme Btrfs, Ext2, Ext3, Ext4, Reiserfs, Reiser4 und XFS mit drei einfachen Tests (siehe Kasten “So haben wir getestet”). Mit Ausnahme von Ext2 arbeiten sämtliche Dateisysteme mit Journaling, was bei der Administration des Filesystems einen leichten Mehraufwand bedeutet, dafür aber langwierige Dateisystemchecks erspart.
So haben wir getestet
Für die Tests benutzten wir ein System mit Phenom-II-CPU, 786 MByte RAM, OpenSuse in der 64-Bit-Version und Kernel 2.6.29rc4 beziehungsweise 2.6.28 für die Reiser4-Tests. Die in den Grafiken dargestellten Werte ermittelte der synthetische Benchmark Bonnie++ in Version 1.03e [1]. Zwei Skripts simulierten zudem den Einsatz von sehr kleinen und großen Dateien. Für den Test mit kleinen Dateien kopierten wir die kompilierten Kernelquellen des Kernels 2.6.29rc4 hin und her und maßen dabei die Zeit. Beim ISO-Test mussten die Dateisysteme eine 2 GByte große ISO-Datei kopieren. Von sämtlichen Benchmarks fanden mindestens sechs Durchläufe mit jeweils drei Ergebnissen statt. Das beste und das schlechteste Resultat strichen wir, aus den übrigen wurde der Durchschnittswert ermittelt. Sämtliche Tests führten wir im Runlevel 1 durch, um möglichst keine durch Hintergrundprozesse verfälschten Werte zu erhalten. Dem mount-Befehl übergaben wir außer dem Dateisystemtyp keine weiteren Optionen.
Während sich das Betriebssystem auf einer alten P-ATA-Platte befand, nutzten wir für die Benchmarks eine brandneue 80-GByte-SSD von Intel und eine ältere Barracuda von Seagate (ebenfalls 80 GByte). Die Solid State Disk liest laut hdparm -tT 147 MByte/s, die Seagate-Platte liefert laut Hdparm Leseraten von 75 MByte/s. Abgesehen von den deutlich besseren Transferraten der SSD gegenüber der konventionellen Platte gab es bei den Benchmarks jedoch keinen SSD-Favoriten: Die relativen Werte verhielten sich auf beiden Platten in etwa identisch, allerdings stieg durch die höhere Transferrate die CPU-Belastung bei den SSD-Benchmarks deutlich an. Die im Artikel erwähnten Werte und die Grafiken beziehen sich jeweils auf die traditionelle Seagate-Platte, nicht auf die SSD.
Der Klassiker
Bonnie++ gehört zu den Klassikern unter den Dateisystemtests. Der synthetische Benchmark misst neben den Transferraten für das blockweise und sequentielle Schreiben/Lesen auch die CPU-Belastung und die Transferraten beim Überschreiben. Für diesen Artikel riefen wir Bonnie++ mit folgendem Befehl auf:
§ bonnie++ -d $DIR -s 2000 -u root -q
Das Testfeld zeigt sich beim Bonnie-Benchmark relativ ausgeglichen (Abbildung 1 und 2) und generiert auf der Seagate-Platte Leseraten um 70 MByte/s sowie Schreibwerte von gut 30 MByte/s. Einzig Btrfs fällt beim sequenziellen Lesen aus dem Rahmen. Als jüngstes Dateisystem im Test hat Btrfs allerdings noch viel Verbesserungspotenzial, das Dateisystem gilt noch als experimentell. Einen detaillierten Artikel zu Btrfs lesen Sie in dieser Ausgabe [2].

hdparm gemessenen 75 MByte/s heran.” width=”300″ height=”128″ />
Abbildung 1: Mit Ausnahme von Btrfs, das beim sequentiellen Lesen komplett einbricht und auch beim blockweisen Lesen etwas zurückliegt, kommen sämtliche Dateisysteme ziemlich nahe an die vonhdparm gemessenen 75 MByte/s heran.
Abbildung 2: Beim Schreiben holen sich Btrfs, Ext4 und Reiser4 die ersten drei Plätze, Ext2 landet leicht abgeschlagen auf dem letzten Platz.
Bei der Auswahl des passenden Dateisystems sollte man allerdings nicht alleine auf die Performance setzten, wie die CPU-Werte von Bonnie++ deutlich zeigen (Abbildung 3). Während Ext2 und Reiser4 den Prozessor beim Schreiben mit lediglich 15 Prozent belasten, benötigt die Konkurrenz etwa das Doppelte an CPU-Leistung für den Schreibvorgang. Das neue Btrfs kommt sogar auf über 40 Prozent CPU-Last. Bei Ext2 bleibt die Prozessorbelastung relativ niedrig, weil das Dateisystem kein Protokoll schreibt. Reiser4 profitiert von der B*-Baumstruktur, wodurch die Daten im Prinzip ebenfalls nur einmal geschrieben werden müssen.
Beim Lesen scheint Btrfs dieses Manko wieder zu beheben, bleibt es doch deutlich unter den Werten der Konkurrenz. Ein Blick auf Abbildung 1 zeigt jedoch, dass Btrfs auch deutlich langsamer liest, was die geringe Belastung erklärt. Die CPU-Last nimmt unabhängig vom Dateisystem mit der Performance zu: So maß Bonnie++ auf einer Solid State Disk von Intel beim Lesen (150 MByte/s) CPU-Lasten zwischen 40 und 60 Prozent, beim Schreiben (80 MByte/s) verursachten sämtliche Dateisysteme über 90 Prozent Last.
Reale Daten
Bonnie++ misst mit synthetischen Daten. Da die Werte in den meisten Fällen bei echten Dateien etwas niedriger ausfallen, und um einen direkten Vergleich zu haben, kopierten wir per Skript eine 2 GByte große ISO-Datei von einem Unterverzeichnis in ein anderes. Den relevanten Teil des ISO-Benchmarks zeigt Listing 1. Auch diesen Test ließen wir mehrere Male durchlaufen, wobei das Skript die Platte stets neu formatierte. Die in Abbildung 4 zu sehenden Werte ermittelten wir aus den Resultaten von Kopieren1 und Kopieren2, das schlechteste und das beste Ergebnis fiel jeweils aus der Wertung.

Abbildung 4: Generationenwechsel bei den Dateisystemen: Die Neuen (Btrfs, Ext4 und Reiser4) arbeiten bei großen Dateien klar schneller als die traditionellen Dateisysteme.
mkdir $DIR/bench1 mkdir $DIR/bench2 cp bigfile.iso $DIR/bench1 echo "Kopieren1" time cp -r $DIR/bench1/* $DIR/bench2/ echo "Löschen1" rm -fr $DIR/bench1/* echo "Kopieren2" time cp -r $DIR/bench2/* $DIR/bench1/ echo "Löschen2" rm -fr $DIR/*
Im Unterschied zu den Ergebnissen von Bonnie++ zeigt sich hier eine klare Zweiklassengesellschaft mit den relativ jungen Dateisystemen Btrfs, Ext4 und Reiser4 in der ersten Liga. Die älteren Semester Ext2, Ext3, Reiserfs und XFS liegen rund 15 Prozent zurück.
Der direkte Vergleich unseres ISO-Benchmarks mit den Bonnie++-Werten zeigt, dass Ext3, Reiserfs und XFS nicht an die theoretischen Werte herankommen (Abbildung 5). Die absoluten Unterschiede von rund 10 MByte/s ergeben sich dadurch, dass es sich bei Bonnie++ um die Schreibwerte handelt, unser Test ermittelt einen Durchschnitt aus Lese- und Schreibwerten.

Abbildung 5: Bei Btrfs, Ext2, Ext4 und Reiser4 beträgt der Unterschied zwischen den synthetischen Daten und dem ISO-Benchmark nur rund 10 MByte/s, bei Ext3, Reiserfs und XFS dagegen bis zu 15 MByte/s.
Der Kernel-Benchmark
Die große Kunst bei der Dateisystementwicklung besteht darin, Dateien möglichst kompakt abzulegen. Während das bei großen Dateien relativ leicht fällt, führt das Speichern vieler kleiner Dateien zur Zerstückelung des Dateisystems. Wie sich das auf die Performance auswirken kann, zeigt Abbildung 6. Unser Kernel-Benchmark misst, wie lange es dauert, um rund 400 MByte an Klein- und Kleinstdateien (teilweise unter 10 KByte) zu entpacken und von einem Verzeichnis in ein anderes zu kopieren. Reiser4 ist in dieser Kategorie der Konkurrenz um Längen voraus.

Abbildung 6: Beim Kopieren von kleinen Dateien können die übrigen Dateisysteme Reiser4 nicht das Wasser reichen.
Wir maßen dabei die Zeiten für das Kopieren (Schreib- und Lese-Performance) und das Entpacken des mit Bzip2 komprimierten Tarballs. Letzteres ist deshalb wichtig, weil beim Entpacken eines solchen Archivs eine andere (leistungsfähigere) Dateisystemstruktur entsteht, als wenn man die Dateien von einem anderen Dateisystem einfach herüberkopiert.
Mit gut 28 MByte/s beziehungsweise 31 MByte/s erledigten Ext4 und Reiser4 die Auspackarbeit am schnellsten, gefolgt von Btrfs und Ext2 mit rund 24 MByte/s. Wie sich das Journaling negativ auf die Performance auswirkt, zeigt das Ergebnisse von Ext3, bei dem es sich im Grund nur um eine Journaling-fähige Erweiterung von Ext2 handelt: Das aktuelle Linux-Standarddateisystem kommt (wie Reiserfs) nur auf 18 MByte/s. Weit abgeschlagen von der Konkurrenz steht das auf große Dateien optimierte XFS: Es erreicht lediglich 3 MByte/s.
Bei kombinierten Schreib- und Lesevorgängen fällt die Differenz zwischen Reiser4 und den übrigen Dateisystemen noch deutlich auf (Abbildung 6, rechts). Reiser4 arbeitet hier fast doppelt so schnell wie das zweitschnellste Journaling-Dateisystem Ext4. Hier zeigt sich auch wieder die schlechte Leseperformance von Btrfs, dass mit Ext3 und Reiserfs auf einen Drittel der Reiser4-Performance kommt, XFS wird auch hier klar abgeschlagen.
Dass Reiser4 mit den bereits so schon sehr guten Werten noch nicht an seine Grenzen stößt, zeigt Abbildung 7. Das Dateisystem bringt das Komprimierungsplugin lzo1 mit, über das sich die Werte je nach Dateityp nochmals verbessern. In unserem Kernel-Benchmark erreichte Reiser4 so nochmals rund zehn Prozent bessere Werte, beim ISO-Benchmark brachte das Plugin hingegen keine Unterschiede. Neben lzo1 gibt es auch ein gzip1-Plugin. Um die Komprimierungsfunktion zu nutzen, formatiert man die Reiser4-Partition mit folgendem Befehl:
# mkfs.reiser4 -o compress=lzo1 &wrap;Gerätedatei

lzo1 arbeitet Reiser4 nochmals bis zu 10 Prozent schneller.” width=”300″ height=”176″ />
Abbildung 7: Mit dem Komprimierungspluginlzo1 arbeitet Reiser4 nochmals bis zu 10 Prozent schneller.Abbildung 8 stellt die Resultate des ISO-Benchmarks und des Kernel-Benchmarks einander gegenüber. Ext2, Ext4 und Reiser4 eignen sich somit am besten für kleine und große Dateien, Btrfs und XFS fallen bei den kleinen Dateien durch.

Abbildung 8: Addiert man die Ergebnisse der Tests für große und kleinen Dateien, dann geht Reiser4 als klarer Sieger aus dem Rennen hervor.
Fazit
Dieser Artikel konnte nur ein kleines Spektrum der tatsächlichen Features aufzeigen. In der Praxis spielen zum Beispiel der Support für erweiterte Dateiattribute (Quota, ACL), das Vergrößern und Verkleinern von Partitionen im laufenden Betrieb und die Stabilität des Dateisystems eine mindestens so wichtige Rolle wie die Performance.
Über alle Tests hinweg machen Ext4, Reiser4 und Btrfs den besten Eindruck. Da Reiser4 mangels einer größeren Entwickler-Community schlechte Chancen hat, im Mainstream akzeptiert zu werden, und Btrfs noch in den Startlöchern steckt, lässt sich hier eine klare Empfehlung für Ext4 als Dateisystem der ersten Wahl aussprechen.
Wer Lust zum Experimentieren hat und mit sehr vielen kleinen Dateien arbeitet, sollte einen Blick auf Reiser4 werfen, da es in diesem Bereich – selbst ohne Compression-Plugin – unschlagbar ist. Btrfs kommt in vielen Bereichen an die Performance von Ext4 heran und bringt sehr viele interessante Features mit. Auf dem heimischen Rechner sollte man das Dateisystem allerdings noch meiden, da das Format sich noch ändern kann.
Ubuntu will in Version 9.04 “Jaunty Jackalope” Ext4 zur Auswahl anbieten, Ext3 soll aber Standard bleiben. Weiter geht hier das Fedora-Projekt: Fedora 11 wird Ext4 dagegen als Standard-Dateisystem einsetzen. Dieser Schritt von Fedora erscheint konsequent, da Ext4 deutlich flinker als sein Vorgänger arbeitet und zu den schnellsten Linux-Dateisystemen überhaupt zählt.
[1] Bonnie++: http://www.coker.com.au/bonnie++/
[2] Btrfs: Marcel Hilzinger “Clever schachteln”, LinuxUser04/2009, S. 37, https://www.linux-community.de/artikel/18004







aber den letzten Test von Dateisystemen hatte ich, wenn ich mich recht entsinne, in dem Linux-Magazin gelesen.
Warum geht so etwas eigentlich nun in Richtung LinuxUser?
Aber schön finde ich, dass er Online zu lesen ist, Danke
Gruss