Aus Linux-Magazin 07/2001

SGI XFS auf SuSE 7.1

Seit dem 1. Mai steht auf der SGI-Website das journaled Filesystem XFS in der Version 1.0 zum Download zur Verfügung — unter anderem auch als Patch gegen den Kernel 2.4.2. Es liegt also nahe, es einmal in den Kernel von SuSE Linux 7.1 einzubauen.

Lange genug waren es Unix-Anwender gewohnt, ihre Systeme nicht einfach ausschalten zu können. Seit einigen Jahren gibt es allerdings absturzsichere Dateisysteme, die ähnlich wie eine Datenbank mit einem Log arbeiten, um Änderungen ständig mitzuschreiben. Mit SuSE 6.2 hielt das Reiser-Filesystem Einzug in die Linux-Welt, nachdem bereits seit Ende 1999 Stephen Tweedies Ext3-Dateisystem in höchst experimenteller und durchaus unstabiler Form vorlag.

SGI hatte bereits vor Monaten angekündigt, sein aus der Irix-Umgebung bekanntes XFS auf Linux zu portieren. Seit wenigen Wochen kann es nun jedermann im Sourcecode haben. Interessant wird XFS durch eine Reihe von Eigenschaften, die so bisher nicht oder nicht in der Zusammenstellung vorlagen:

  • volle 64-Bit-Unterstützung
  • Quotas
  • extended Attributes, ACLs
  • Dateigröße maximal 16 TByte mit 4-KByte-Seiten und 64 TByte mit 16-KByte-Seiten. Ist der Block-Device-Layer auf 64 Bit umgestellt, sind 9 Exabyte (9 ¥ 1018 Byte) große Dateien adressierbar.
  • xfsdump und xfsrestore für die Dateisystemsicherung. Praktischerweise lassen sich Dumps, die unter Irix erstellt wurden, unter Linux einspielen und umgekehrt — trotz verschiedener Endianness.
  • Ein Data Management API (DMAPI/XDSM) erlaubt die Implementation von hierarchischen Speichermanagement-Systemen ohne weitere Kernel-Änderung.
  • Mit Hilfe von xfs_growfs können Dateisysteme im gemounteten Zustand wachsen (sie müssen dazu sogar gemountet sein). Die Anzahl der Inodes lässt sich im laufenden Betrieb ändern.
  • Das Log kann auch auf einer separaten Partition oder einem anderen Logical Volume liegen. Für den Durchsatz ist das dann vorteilhaft, wenn das Log auf einer anderen physischen Platte liegt.

Patch den Kernel

Um XFS auf seinen Rechner zu bringen, muss der Nutzer zunächst die beiden Patches linux-2.4-xfs-1.0 .patch.gz und linux-2.4.2-core-xfs-1.0 .patch.gz wie gewohnt in den Kernel einbauen. Die SGI-Website [1] empfiehlt dazu, einen Standardkernel von ftp.kernel.org zu benutzen. Für Red Hat stehen RPMs und ein Installer zur Verfügung.

Spannend ist aber gerade der Vergleich mit Reiser FS, dem bislang einzigen logbasierten unter den verbreiteten Dateisystemen — und dazu bietet es sich an, das mit dem SuSE-Kernel 2.4.2 zu testen. Hinderlich kann sein, dass darin bereits eine ganze Reihe verschiedenster Patches enthalten ist, die weitere Veränderungen unmöglich machen oder zumindest erschweren.

Aber weit gefehlt — bis auf einen Reject bei einem Makefile läuft das Core-Patch anstandslos durch. Den Reject kann man getrost ignorieren; das zugehörige Patch ist in 2.4.2-SuSE bereits enthalten.

In der Kernel-Konfiguration sind die Optionen für den Page Buffer und das XFS zu aktivieren sowie eventuell DMAPI. Alle anderen XFS-Optionen dienen in erster Linie der Fehlersuche und sind hier nicht nötig. Es zeigte sich aber, dass das Core-Patch doch einen Stolperstein einbaut: Im obersten Makefile fand sich plötzlich die Zeile:

CC = $(CROSS_COMPILE)gcc 
     -V egcs-2.91.66

Dieser Aufruf geht schief, wenn man nicht zufällig die genannte Egcs-Version installiert hat. SuSE 7.1 kommt normalerweise mit Release 2.95.2, also gehört diese Zeile am besten auskommentiert. Hier zeigt sich die Anlehnung an Red Hat noch am deutlichsten.

Listing

Kernelmeldungen beim Mount

page_buf cache Copyright (c) 2000 Silicon Graphics, Inc.
XFS filesystem Copyright (c) 2000 Silicon Graphics, Inc.
Start mounting filesystem: lvm(58,14)
Starting XFS recovery on filesystem: lvm(58,14) (dev: 58/14)
Ending XFS recovery on filesystem: lvm(58,14) (dev: 58/14)

Platzbedarf für das Log

seneca:/mnt #  df /dev/vg01/xfstest 
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/vg01/xfstest       650560     13752    636808   3% /mnt
seneca:/mnt # du -s -k .
13368   .

Frisch angelegtes 64-MByte-Dateisystem

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/vg00/testlv         65528     32840     32688  51% /mnt
/dev/vg01/xfstest        60736        80     60656   1% /mnt

Riesiges XFS-Modul

Anschließend ist der Kernel ganz normal mit

make dep bzimage modules modules_install

zu übersetzen. make modules_install legt ein neues Verzeichnis /lib/modules/2.4.2-XFS für die Module an. Dort befinden sich dann auch die drei neuen Module pagebuf.o, xfs_support.o und xfs.o.

Nach Aktualisierung der /etc/lilo .conf sowie dem Aufruf von lilo und einem Reboot lassen sich die Module laden:

xfs        403600   0  (unused)
xfs_support   8400   0  [xfs]
pagebuf      23040   0  [xfs]

Das XFS-Modul selbst ist ziemlich umfangreich, wie man an der Anzahl der belegten Seiten sieht.

Um tatsächlich ein Dateisystem anlegen und benutzen zu können, ist es notwendig, die Tools in dem Paket xfsprogs zu übersetzen und in /usr/local zu installieren. Für den configure-Lauf muss e2fsprogs-devel installiert sein. Außerdem muss man in include/liblvm.h noch zwei Zeilen auskommentieren:

/*
#include "lvm_log.h"
#include "lvm_config.h"
*/

Wer mag, kann sich auch ein RPM-Paket aus den xfsprogs bauen [2].

Manpage-Salat

Bei Aufruf der Manpage zu XFS ist eine etwas lästige Namensgleichheit festzustellen: Es erscheint nämlich die zum X-Fontserver. Die für XFS heißt korrekt man 5 xfs.

Was das Dateisystem leistet, lässt sich am einfachsten mit dem bewährten Festplatten-Benchmark Bonnie feststellen. Dieser Benchmark testet die I/O-Zugriffsgeschwindigkeit mit einer großen Datei. Er schreibt zunächst zeichenorientiert, dann dasselbe noch einmal (rewrite) und schließlich blockorientiert. Gelesen wird zunächst zeichenweise, dann blockweise und zum Abschluss macht der Benchmark zufällige Suchvorgänge. Bonnie dürften die meisten Distributionen mitliefern, so dass ihn jeder benutzen kann.

Die Ergebnisse (siehe Kasten “Bonnie-Ergebnisse”) entstanden mit folgender Testumgebung: AMD K6-II/350 auf Tyan S1590S-Board, VIA Apollo Chipsatz mit VT82C586B IDE-Controller. Der SCSI-Controller war ein Symbios Logic 53C875 mit SYM53C8XX-Treiber. Festplatten: IBM DJNA-352030 (EIDE, UDMA-33), IBM DNES-309170W (Fast-20 Wide SCSI). Bonnie lief jeweils mit einer Testdatei von 512 MByte Größe, also etwa dem Doppelten des Hauptspeichers, um mögliche Cache-Effekte auszuschließen. Die drei ersten Zeilen beziehen sich auf die EIDE-Platte, die letzten drei auf die SCSI-Disk.

Bonnie-Ergebnisse

-------Sequential Output-------- ---Sequential Input-- --Random--
             -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks--
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU

XFS-IDE   512  2933 99.5 16210 28.7  5463 15.1  2755 89.1 15384 19.7 222.7  3.7
Reiser-I  512  2832 99.4 18695 65.1  5279 16.0  2783 88.9 16348 23.4 218.0  4.1
EXT2-IDE  512  2919 98.6 14652 26.7  4045 12.7  2643 83.3 10546 11.5 159.9  2.3

XFS-SCSI  512  2932 99.5 15241 28.7  5529 14.2  2795 90.8 15380 20.0 215.8  3.6
Reiser-S  512  2838 99.5 18533 61.2  5360 15.1  2733 87.6 15412 21.8 209.4  3.5
EXT2-SCS  512  2967 99.4 22915 38.8  5251 12.6  2670 84.2 15018 16.5 213.0  2.6
Beim Löschen eines ganzen Dateibaums ist XFS gegenüber Ext2 und Reiser FS merklich langsamer, allein große Dateien wird es im Vergleich viel schneller los.

Beim Löschen eines ganzen Dateibaums ist XFS gegenüber Ext2 und Reiser FS merklich langsamer, allein große Dateien wird es im Vergleich viel schneller los.

Offenbar hat Reiser FS vor allem beim Schreiben großer Blöcke einen Geschwindigkeitsvorteil, allerdings erheblich auf Kosten der CPU-Last. Wenn eine reale Anwendung CPU-lastig ist und große Blöcke schreiben möchte, kann es durchaus sein, dass ein System mit XFS einen höheren Durchsatz bietet. XFS scheint auf der anderen Seite einen leichten Vorteil bei den Random Seeks zu haben, was vor allem beim Betrieb als OLTP-Datenbank günstig ist. Alle anderen Messwerte unterscheiden sich kaum — die Abweichungen liegen im Rahmen der Messtoleranz.

Schlaftablette auf IDE: Ext2

Wichtig auch der Vergleich mit dem altehrwürdigen Ext2 auf denselben Testpartitionen: Während es auf der IDE-Platte doch deutlich hinterherhinkt, spielt Ext2 auf der SCSI-Platte den einen oder anderen Trumpf aus und ist beim Blocklesen erheblich schneller, nicht aber beim Schreiben, wie man vielleicht vermuten möchte. Warum Ext2 auf der IDE-Platte so langsam ist, war nicht festzustellen, wurde aber durch eine Kontrollmessung bestätigt.

Als kleinen Härtetest musste das XFS acht Stunden wüstes Herumkopieren vieler kleiner Dateien ertragen — das tat es ohne irgendwelche Störungen. Ein weiterer interessanter Vergleich: Wie lange dauert es, erstens viele kleine Dateien zu löschen und zweitens eine ganz große (aus /dev/zero gefüllt). Bei der Aktion geht es vor allem darum, wie schnell das Dateisystem die indirekten und mehrfach indirekten Blöcke löscht. Reiser FS mit seiner Baumstruktur nimmt hier für sich in Anspruch, viel schneller zu sein als das Bitmap-orientierte Ext2. Das Ergebnis ist in der Grafik auf der nächsten Seite dargestellt.

Schließlich noch die Frage, wie absturzfest das XFS ist. Als einfacher Test diente ein find|cpio, der den Kernelsource-Baum in das XFS-Dateisystem kopiert. Mittendrin ein kurzer Druck auf Reset — und beim anschließenden Mount zeigt sich, dass das Dateisystem weniger als eine Sekunde für die Reparatur benötigt (siehe Listing, Abschnitt “Kernelmeldungen beim Mount”).

Platzsparend: XFS

XFS braucht im Vergleich zum Reiser FS erheblich weniger Platz für sein Log. Legt man das Dateisystem mit den Defaultwerten an, dann liegt das Log mit auf dem Block-Device. Trotzdem braucht es viel weniger Platz (Listing, Abschnitt “Platzbedarf für das Log”). Bei Reiser FS sind selbst bei einem frisch angelegten Dateisystem bereits etwa 32 MByte fest belegt. Das Logical Volume darunter ist genau 64 MByte groß (siehe Listing, dritter Abschnitt).

Ein weiterer Gimmick: mkfs.xfs bemerkt, wenn in einem Logical Volume bereits ein formatiertes Dateisystem enthalten ist (und zwar nicht nur XFS, es erkennt auch Ext2), und verlangt die Option -f, um trotzdem zu formatieren.

Ob das XFS alltagstauglich ist, müssen weitere Härtetests zeigen — nach dem ersten Anschein sieht es so aus, als halte XFS, was SGI versprochen hat. Ob SuSE übrigens an einem offiziellen Patch für SuSE 7.1 bastelt, war bis Redaktionsschluss nicht zu erfahren — eine entsprechende Anfrage verlief im Sand. Möglicherweise passiert ja auch erst Mitte des Jahres mit Version 7.2 etwas in dieser Richtung.

Infos

[1] XFS-Homepage: http://linux-xfs.sgi.com/projects/xfs/

[2] Marcel Ritter: Verpackungskünstler; RPMs selber bauen; Linux-Magazin 4/01, S. 141

[3] Weiterer Vergleichstest: http://slashdot.org/developers /01/05/10/1747213.shtml

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben