Open Source im professionellen Einsatz

Neues Journaling-Dateisystem mit atomaren Transaktionen

IV. Symphonie von Reiser

Das neu entwickelte Reiser 4 steht kurz vor seiner Premiere im Kernel 2.6. Es verspricht atomare Transaktionen, schreibt und liest flotter als sein Vorgänger ReiserFS, nutzt die Platte besser und ist durch Plugins erweiterbar. Dancing Trees dirigieren dieses File-Orchester.

Nach über vier Jahren Entwicklung scheint das Reiser-Dateisystem dieses Jahr den Schritt zur Version 4 zu schaffen. Das Entwicklerteam um Hans Reiser programmierte Reiser 4 von Grund auf neu. Derzeit testet das Team die Performance und Stabilität des Nachfolgers von ReiserFS und bereinigt kleinere Fehler. Das neue Journaling-Dateisystem beherrscht unter anderem atomare Transaktionen und lässt sich durch Plugins erweitern. Auf der Namesys-Homepage[1] steht eine Testversion zum Download bereit (siehe Kasten "Installationsanleitung").

Installationsanleitung

Diese Anleitung bezieht sich auf Kernel 2.6.5 und die offiziellen Reiser-4-Snapshots vom 26. März 2004[2]. Bei Patches zu neueren Kernelversionen[3] ist Vorsicht geboten. Sie arbeiten nicht immer fehlerfrei.

  • Laden Sie die Kernelquellen vom offiziellen Server[4] und
    entpacken sie im Verzeichnis »/usr/src/«.
  • Kopieren Sie das Patch »all.diff.gz« von der
    Namesys-Homepage in das Verzeichnis des neuen Kernels
    »/usr/src/linux-2.6.5/«.
  • Wechseln Sie ins Kernelverzeichnis und wenden das Patch mit dem
    Befehl »zcat all.diff.gz | patch -p1« an.
  • In der Datei »fs/reiser4/as_ops.c« fehlt in Zeile
    570 der Code »->host«. Die korrekte Zeile
    lautet:
  • Ersetzen Sie in der Datei
    »fs/reiser4/plugin/tail.c« die Zeile 477
    »mapping->dirtied _when = jiffies|1;« durch den
    korrigierten Eintrag:
  • Starten Sie als Root ein Kernel-Konfigurationsprogramm, etwa
    »make xconfig«. (QT-3-Entwicklerpakete sind
    erforderlich.)
  • Unter »File systems« sollte »Reiser4«
    bereits ausgewählt sein. Es funktioniert wahlweise statisch
    oder als dynamisch ladbares Modul, siehe Abbildung 1.
  • Nach dem Speichern der Konfiguration kompilieren Sie wie
    gewohnt den Kernel mit »make bzImage modules
    modules_install« und kopieren dann den fertigen Kernel in das
    Zielverzeichnis, zum Beispiel »cp arch/i386/boot/bzImage
    /boot/vmlinuz-reiser4«. Überschreiben Sie nach
    Möglichkeit keinen alten Kernel.
  • Benutzen Sie zum Booten die Initial RAM-Disk (wie bei Suse),
    müssen Sie diese mit dem Befehl »mkinitrd« neu
    anlegen.
  • Um den Kernel einfacher zu booten, ist ein Eintrag in der
    Grub-Konfigurationsdatei »/boot/grub/menu.lst« zu
    empfehlen.
  • Die Datei »/etc/fstab« sollte keine
    distributionsspezifischen Optionen enthalten, mit denen der
    Standardkernel nicht zurechtkommt. Unter Suse 9.1 bereiten zum
    Beispiel die Optionen »acl« und »user
    _xattr« Probleme. Im Zweifelsfall genügt der Eintrag
    »rw,exec«.
  • Nun können Sie den neuen Kernel booten. Danach müssen
    Sie noch »libaal-0.5.0.tar.gz« und
    »reiser4progs-0.5.3.tar.gz« installieren. Das geht wie
    gewohnt mit »./configure && make && make
    install«. Sollte Reiser4progs die installierten
    Libaal-Bibliotheken nicht finden, hilft der Aufruf von
    »ldconfig«.
  • Reiser-4-Partitionen können Sie anschließend mit
    »/usr/local/sbin/mkfs.reiser4 Partition« anlegen
    und dann mit »mount« einhängen.

Abbildung 1: Im gepatchten Kernel ist Reiser 4 unter »File systems« zu finden. Das Häkchen bedeutet, dass das System fest in den Kernel integriert wird. Durch einen Doppelklick mutiert das Häkchen zum Punkt. Reiser 4 lässt sich dann als Kernelmodul nachladen.

Abbildung 1: Im gepatchten Kernel ist Reiser 4 unter »File systems« zu finden. Das Häkchen bedeutet, dass das System fest in den Kernel integriert wird. Durch einen Doppelklick mutiert das Häkchen zum Punkt. Reiser 4 lässt sich dann als Kernelmodul nachladen.

Grundlegender Aufbau

Vereinfacht besteht das Reiser-4-Dateisystem aus zwei Schichten: der Speicherschicht (Storage Layer) und der semantischen Schicht (Semantic Layer). Auf beiden befinden sich Objekte. Reiser 4 unterscheidet nicht zwischen Dateien und Verzeichnissen, sondern behandelt beide gleichermaßen als Objekte. Jedes Objekt auf dem Dateisystem verfügt über eine Objekt-ID und einen Schlüssel (Key), der teilweise aus der Objekt-ID generiert wird.

Wie der Name vermuten lässt, sind Keys die Schlüssel zum Dateisystem. Reiser 4 findet jedes Objekt über seinen Schlüssel. Es ist sogar möglich, über den Schlüssel einen bestimmten Abschnitt einer Datei zu finden. In der Grundeinstellung nutzt Reiser 4 neuerdings lange Schlüssel (zum Beispiel »10001:1:746f6d20776169:0:10278:0«), die aus folgenden Elementen bestehen:

  • Major Locality
  • Minor Locality
  • Anordnung (Ordering)
  • Unbenutzt (immer 0)
  • Objekt-ID
  • Offset

Während die Speicherschicht für die eigentliche Lagerung und das Anordnen der Daten in den Baumstrukturen zuständig ist, übernimmt die semantische Schicht das Auflösen von Dateinamen zu Schlüsseln. Mit Hilfe des Schlüssels findet das Filesystem dann in der Speicherschicht die gesuchten Bytes. Der Offset gibt die Byte-Position innerhalb eines Objekts an.

Plugins für das Filesystem

Reiser 4 verwirklicht Dateioperationen mit Hilfe von Plugins. Die grundlegenden Unix-Dateiverwaltungsarbeiten erledigt das Dateisystem-interne File- und Directory-Plugin. Jede Datei und jedes Verzeichnis besitzt zudem eine Plugin-ID, die eine Sammlung externer Methoden bezeichnet. Über diese Methoden lassen sich Dateisystem-externe Operationen mit dem File ausführen.

Dateisystem-externe Operationen sind Möglichkeiten zur Dateiverwaltung, die nicht im Filesystem integriert sind. Sie erlauben es externen Programmen, in die Interna des Dateisystems einzugreifen, ohne dazu einen neuen Kernel kompilieren zu müssen. Reiser 4 besitzt zurzeit über 30 interne Plugins, die der Befehl »fsck.Reiser 4 -l« listet. Externe Plugins sind noch nicht bekannt. Wünschenswert wäre unter anderem ein Quota-Plugin - diese Funktion unterstützt Reiser 4 noch nicht.

Das Anordnen der Objekte wird vom File- und vom Hash-Plugin übernommen. Im Gegensatz zu den meisten Linux-Dateisystemen ordnet Reiser 4 Dateien nicht nach dem Erstellungsdatum, sondern alphabetisch. Bei Dateien, deren Name länger als 15 Buchstaben ist, entscheiden zunächst die ersten acht Buchstaben, dann der Hashwert des gesamten Dateinamens.

Zum Anordnen der Verzeichnisse benutzt Reiser 4 das Hash-Plugin. Es benutzt derzeit Cookies, die aus dem Hashwert und einem Erstellungszähler bestehen. Statt dieser noch vom ReiserFS übernommenen Notlösung soll in Zukunft das File-Plugin auch das alphabetische Ordnen von Verzeichnissen mit übernehmen.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook