ReiserFS - Ein Journaling Filesystem


Hans Reiser (daher der Name Reiser- FS) entwickelte sein Filesystem zunächst nur als private Studie, aber es wurde mehr. Es wurde das erste alltagstaugliche Journaling Filesystem für Linux. Reiser FS steht übrigens unter der General Public License, wird aber gesponsert (BigStorage, Ecila, mp3.com und SuSE GmbH).

Jetzt fragst du dich vielleicht, warum du dein stabiles ext2-Filesystem (der Linux-Standard) gegen ein neues System austauschen sollst. Nun, Reiser FS hat einige Vorteile:

  1. B*-bäume (balancierte Mehrwegbäume)
  2. Optimierung der Festplattenkopfbewegung
  3. Journaling Filesystem
Im Klartext bedeutet dies:
Balancierte Mehrwegbäume (B*-Trees) beschleunigen das Auffinden einer Datei im Verzeichnis. Bei ext2 liegen die Dateien quasi in einer Kette, ein Eintrag hinter dem anderen. Bei B-Trees Systemen liegt eine baumartige Struktur zugrunde. Dieses Feature dient eigentlich nur der Performance.

Um große Bewegungen des Festplattenkopfes zu vermeiden, werden die Daten in der Nähe ihrer Verweise und Verzeichniseinträgen angelegt. Auch dieses Feature erhöht die Performance des Filesystems.

Nun gut, diese beiden Punkte sind für den kleinen Linuxer eher unbedeutend, kommen wir zum wichtigsten Feature:
 
Journaling Filesystem.
 
Ein Journaling Filesystem notiert in einem "Journal", welche Dateien zur Zeit bearbeitet werden. Zudem behalten die alten Daten solange ihre Gültigkeit, bis der Bearbeitungsvorgang vollständig durchgeführt wurde. Im Falle eines Systemausfalls brauchen nur die betroffenen Dateien (die vor dem Ausfall geöffneten Dateien) überprüft und evtl. repariert werden.
Bei ext2 muß nach einem Ausfall jede Datei überprüft werden, und das kann bei großen Platten schon mal eine Weile dauern.
 
Bei meinen Server (den ich täglich ein- und ausschalte) dauerte ein Check von ext2 einer 12GB Partition länger als 15 min (Pentium 60), mit Reiser FS dauerte es 15 sek. Und da Linux (besser ext2) nach 20 Starts die Platte überprüft, bringt hier Reiser FS einen großen Vorteil.
 
Ich halte Journaling Filesystem für den größten Vorteil von Reiser FS und denke, dass in Zukunft alle Filesysteme ein Journal haben werden. Auch bei ext2 ging die Entwicklung weiter zu ext3, und dieses wurde auch ein Journaling File System. Desweitern haben IBM und SGI angekündigt, ihre eigenen Journaling Filesysteme (unter UNIX gibt es sowas schon länger) auf Linux zu portieren. Aber Reiser FS ist am weitesten fortgeschritten und schon einsatzbereit.
 

Installation von Reiserfs


Reiser FS wird in immer mehr Distributionen schon standardmäßig eingebunden, aber wenn du selber Hand anlegen willst, bekommst du hier eine kurze Anleitung.
Ich schreibe die Anleitung für fortgeschrittene Linuxer, die wissen, wie man ein Quellpaket installiert (ein Beispiel) und den Kernel kompiliert.
 
Ich möchte keinen ausschließen, aber Reiser FS arbeitet als Filesystem ganz unten im System, im Kernel. Damit du Reiser FS benutzen kannst, mußt du den Kernel patchen. Dies ist ein großer Eingriff in das Linuxsystem und sollte nicht von Anfängern durchgeführt werden ! (Mein erster Versuch einen Kernel zum kompilieren, endete mit einem "Kernel Panic" und einer Neuinstallation ;-))
Der Eingriff im Kernel kann nämlich dein ganzes System zerstören, denn ohne Kernel kein Linux.

Achtung:   Wenn du noch nie einen Kernel kompiliert hast, solltest du hier besser abbrechen !!!

Ok, fangen wir an, einer leeren Partition ein ReiserFS zu "verpassen" :
Benutzer von SuSE Linux sollten mal bei SuSE nachschauen.
Wer es auf die harte Tour will:
Zuerst die Quellen deines Kernels installieren. Am besten benutzt du die Quellen aus deiner Distri, da diese meistens schon einige nette Patches (vielleicht ReiserFS ?) haben. Danach lädst du dir den Reiser FS von devlinux.com herunter, dann entpackst du ihn und patscht den Kernel (Entfällt ab Kernel v2.4.1.):


root@sonne> cd /usr/src/linux 
root@sonne> gunzip linux-2.2.16-reiserfs-3.5.16-patch.gz 
root@sonne> patch -p1 < linux-2.2.16-reiserfs-3.5.16-patch

Nun konfigurierst du den Kernel. Sag `Yes' zum "Prompt for development and/or incomplete code/drivers in Code maturity level options menu". (*) Danach bindest Reiser FS (steht unter Filesystems) fest in den Kernel ein. Danach kompilierst du den Kernel, änderst deinen Bootmanager (vergiß nicht, den alten Kernel auch noch in den Bootmanager - zB. LILO - einzubinden, man weiß ja nie) und startest neu.

Im nächsten Schritt werden die Werkzeuge von ReiserFS erzeugt:


root@sonne> cd /usr/src/linux/fs/reiserfs/utils
root@sonne> mkdir bin
root@sonne> make
root@sonne> make install

Nun kannst du eine Partition mit ReiserFS formatieren (zum Beispiel hdb1) :


root@sonne> mkreiserfs /dev/hdb1

Ok geschafft, du hast dein ReiserFS, nutze es!

Du kannst ja nun den ultimativen Test machen: Alle ext2-FS entmounten, aber nicht ReiserFS und dann den Reset-Knopf drücken. Beim nächsten Start sollte dein ReiserFS in ein Paar Sekunden repariert sein ;-)

Achtung, niemals FSCK auf einer ReiserFS Partition laufen lassen ! Benutze immer reiserfsck !
 

Werkzeuge zu ReiserFS

Name Funktion Dokumentation
dumpreiserfs Dumpen von ReiserFS README
emu ?  
mkreiserfs Partition ReiserFS formatieren man-page
reiserfsck Testen und Reparieren von ReiserFS    man-page
resize_reiserfs     Größe von ReiserFS ändern ?  
unpackreiserfs ?  

Wer weiß, welche Funktion emu esize_reiserfs unpackreiserfs haben, sollte sich mal bei mir melden!
 


Weitere Journaling Filesysteme für Linux


(Stand: September 2001)

   ext3

Auch ext2 wird weiterentwickelt, ist aber noch im Betastadium. Hat einen Journal, aber (bisher) keine Binärbäume. Ist aber abwärtskompatibel zu ext2 und deshalb schnell zu installieren. Du kannst ext2 einfach in ext3 wandeln !
Weitere Infos unter ftp.uk.linux.org/pub/linux/sct/fs/jfs

   JFS

Dieses Journaling FS ist von IBM, Unix erprobt und steht unter der GPL (General Public License)
JFS bietet 64-Bit clean und Binärbäume, hat aber noch kein Quota und keine ACLs.
Weitere Infos unter http://oss.software.ibm.com/developerworks/opensource/jfs/

   XFS

Auch SGI hat schon unter UNIX ein Journaling FS gehabt. Dieses ist nun auch auf Linux portiert und unter die GPL gestellt worden.
Dieses FS ist 64-bittig und hat als Besonderheit ACLs, Quota-Unterstützung, Backup/Restore Funktionen (mit ACLs !!).
Meine ersten Erfahrung mit diesem FS waren sehr gut, habe es allerdings nicht im Einsatz. Kein anderes FS unter Linux hat soviele Features, werde dazu wohl mal einen Artikel schreiben ..
Weitere Infos unter http://oss.sgi.com/projects/xfs/




Quellen und weitere Dokus

Die Homepage von ReiserFS: http://devlinux.com/projects/reiserfs/
Im Linux-Magazin 4/2000 war ein Artikel über Journaling Filesysteme (meine Hauptquelle).


URL: http://www.tuxhausen.de/software_acl_ext.html
 

(*) Aktualisiert:   Jörg Hopfe   1.12.2001
 

Autor: Markus Ungermann