
Abbildung 1: Sowohl Btrfs als auch Ext 4 traten an, um viele kleine Dateien, eine Menge von Verzeichnissen und eine große Datei zu schreiben. Dabei schneidet Btrfs überraschend gut ab.
Viele aktuelle Distributionen verwenden die Ext-Reihe als Standarddateisystem. Das noch in der Entwicklung befindliche Btrfs wartet aber schon heute mit einigen Trümpfen auf. Den Vergleich mit Ext 4 muss der mit B-Trees arbeitende Hoffnungsträger nicht fürchten, belegt er doch weniger Platz und ist oft schneller .
Vielfalt hat Tradition, wenn es um Dateisysteme unter Linux geht. Unter einigen Dutzend haben Anwender die Qual der Wahl. Realistisch betrachtet setzen die meisten jedoch für lokal angeschlossene Festplatten auf die Stammlinie der Ext-Familie, zuletzt in der Ausprägung Ext 4 aus der Feder von Kernelhacker Ted Ts’o, ergänzt um Vorlieben-spezifische Einsätze von XFS, JFS oder vielleicht noch auf Reiser-FS in der Version 3. All diese Systeme erfahren kaum noch technologische Weiterentwicklung.
Die scheint sich im oft gelobten, aber ebenso notorisch zurückgehaltenen Btrfs zu manifestieren, wenn man Kernelentwicklern wie Jonathan Corbet glauben schenkt. Das B-Tree-Filesystem, das die meisten aufgrund von Vokalmangel “Batter-äff-äss” aussprechen, hat der Entwickler Chris Mason erdacht, der in Diensten von Oracle steht. Er und sein Team planen in Btrfs alles Gute zu vereinen, was die gegenwärtige pragmatische Dateisystemforschung hergibt [1]. Gleichzeitig werden die Entwickler jedoch nicht müde, auf den experimentellen Charakter der Implementation hinzuweisen, die keinesfalls für den Produktivbetrieb geeignet sei.
Für Wagemutige
Offenbar sehen das einige Hersteller und Projekte nicht ganz so konservativ. So begründete Intel-Entwickler Arjen van de Ven die Wahl von Btrfs für die mobile Linux-Plattform Meego mit Datenintegrität durch Prüfsummen, eingebauten Raid-Funktionen, schreibbaren Snapshots und der automatischen Defragmentierung [2].
Auch Ubuntu scheint Lunte gerochen zu haben und will ab Version 10.10 ebenfalls das auf dem Konzept der B-Bäume aufsetzende System als Option anbieten [3]. Zur Vorsicht rät jedoch der nun in Diensten von Red Hat stehende ehemalige Reiser-4-Entwickler Edward Shishkin: Er bemängelt insbesondere das Verhältnis von Meta- zu Nutzdaten in vergleichsweise kleinen Dateisystemen [4].
Neben Vorteilen wie den eingebauten Snapshots und der Konsistenz wahrenden Copy-on-Wirte-Technik gilt insbesondere das Baumprinzip als effizientes Verfahren für viele kleine Dateien. Wer also beispielsweise auf einem eingebetteten Gerät viele kleine Dateien sammelt, von denen einzelne im schlimmsten Fall noch verloren gehen dürfen, mag sich Btrfs einmal ansehen. Denkbar wäre etwa eine autonome Mini-Appliance, die per Videokamera Fotos ablegt.
Leistungen vergleichen
Das Linux-Magazin hat ausprobiert, wie sich Btrfs heute im Verhältnis zu Ext 4 schlägt. Dazu legten die Tester unter einem Ubuntu 10.04, das bereits Kernelmodule für beide Systeme mitbringt, zwei jeweils gut 32 GByte große Partitionen auf derselben Festplatte an, die ansonsten im Rechner keine Nutzung erfährt. Beide Partitionen arbeiten mit den gleichen Blockgrößen.

Abbildung 1: Sowohl Btrfs als auch Ext 4 traten an, um viele kleine Dateien, eine Menge von Verzeichnissen und eine große Datei zu schreiben. Dabei schneidet Btrfs überraschend gut ab.
Beide Systeme hatten eine Reihe von Aufgaben auf einem frisch mit Standardparametern angelegten Dateisystem zu absolvieren: Zunächst galt es, 99 999 kleine Dateien von wenigen Bytes mit zufälligen Inhalten anzulegen. Obwohl die reinen Nutzdaten in Summe deutlich weniger als 1 MByte benötigen, fallen besonders die Metadaten wie Verzeichniseinträge und Zeitstempel bei diesem Test stark ins Gewicht. Allerdings belegte Btrfs mit 53 MByte nicht einmal ein Zehntel des Platzes der 621 MByte, die Ext 4 für die vielen kleinen Dateien benötigte.
Verzeichnisse belegen Platz
Das Btrfs-Kernelmodul werkelte rund 30 CPU-Sekunden an der Aufgabe im Kernel, wogegen das Ext-4-Modul 9 Minuten länger benötigte, also rund 19-mal so lange. Die Zeit im Userspace fiel bei keinem der Tests ins Gewicht. Manche Anwendungen legen pro Vorgang ein Verzeichnis an, um dort mehrere Dateien zu gruppieren. Diesen Anwendungsfall simulierte der zweite Test. Hier galt es, 99 999 Unterverzeichnisse anzulegen, die jeweils eine Handvoll zufälliger, kleiner Dateien enthalten. Beide Verfahren brauchten dazu etwa gleich lange, Ext 4 hatte im Schnitt mehrerer Testläufe um einige Sekunden die Nase vorn.
Große Unterschiede ergaben sich jedoch im Speicherverbrauch: Während Btrfs für Verzeichnisse und Dateien insgesamt 176 MByte belegte, verbrauchte Ext 4 für die gleiche Aufgabe 1,8 GByte. Wer so viele Verzeichnisse und Dateien anlegt, fordert von den Kernelmodulen einiges an Organisationstalent, etwa um die durch nicht mehr gebrauchte Verzeichniseinträge verbauchten Fragmente wieder freizugeben.
Nachdem sie Überbleibsel der vorangegangenen Tests mittels »rm« gelöscht hatten, wollten die Tester daher wissen, auf welche maximale Größe eine Datei auf dem Mountpoint anwachsen kann. Mittels »dd« kopierten sie echte Nullbytes in eine einzige Datei, bis das Kommando aufgrund einer vollen Platte abbrach. Nachdem Btrfs mit zügigen 44,5 MByte/s insgesamt 30 GByte geschrieben hatte, war Schluss. Ext 4 hingegen schrieb überraschenderweise nur 35,6 MByte/s, konnte aber mit seiner effizienten Extent-Technik annähernd 34 GByte füllen.
Stark bei kleinen Dateien
Wenn es darum geht, viele kleine Dateien und Verzeichnisse zu verwalten, lag Btrfs bei der Partitionsgröße im Test in fast allen Disziplinen vorne, war effizienter bei der Speichernutzung und meist auch ein wenig schneller. Bei ganz großen Dateien wie ISO-Images punktet hingegen noch Ext 4 mit seinen Extends, die große Datenmengen effizient zusammenfasen.
Wie verlässlich der Newcomer tatsächlich ist, bleibt noch abzuwarten. Im Zuge der zweitägigen Testläufe sind jedoch keine Schreib- oder Lesefehler aufgetreten. Insofern scheint die Entscheidung des Meego-Projekts plausibel, für seine mobilen Geräte, die auf schnelle Reaktion angewiesen sind und eher kleinere Dateien schreiben, dem Nachwuchs bereits jetzt eine Chance zu geben.
|
Infos |
|---|
|
[1] Chris Masons Btrfs:[http://btrfs.wiki.kernel.org] [2] Meego entscheidet sich für Btrfs: [http://lists.meego.com/pipermail/meego-dev/2010-May/002133.html] [3] Remnand stellt Btrfs-Support für Ubuntu 10.10 in Aussicht:[http://www.netsplit.com/2010/05/14/] [4] Shishkin kritisiert interne Fragmentierung: [https://www.linux-magazin.de/NEWS/Kaputt-oder-jung-Diskussion-um-Btrfs] |




