Open Source im professionellen Einsatz

Überlagerte Dateisysteme in der Praxis

Hochstapler

,

Spätestens seit Knoppix 3.8 das Union-FS verwendet, um Dateien virtuell auf der CD zu verändern, rücken stapelbare (transluzente) Dateisysteme ins Blickfeld vieler Administratoren. Welche Technik wo Stärken und Schwächen besitzt und wie gut sie mit NFS kooperiert, klärt dieser Artikel.

Sie lösen viele tägliche Probleme des Linux-Betriebs: stapelbare Dateisysteme, die sich oft hinter englischen Bezeichnungen wie Union, Overlay, Copy-on-Write, Translucency oder Multi-Layer verstecken. Allen gemein ist, dass der Admin mindestens zwei Dateisysteme (oder Verzeichnisse) übereinander legt und Dateien aus dem verdeckten System nach oben durchscheinen. Der Anwender sieht einen gesteuerten Mix aus allen beteiligten Filesystemen.

Nicht zuletzt durch den Einsatz in Knoppix [9] ist Union-FS [1] derzeit recht beliebt. Dieser Artikel betrachtet auch die miteinander verwandten Mini_fo und Mula-FS; Letzteres hat einer der Autoren dieses Artikels entwickelt. Eher von historischem Interesse, weil nicht auf Kernel 2.6 portiert, ist das Translucency-Filesystem. Als Alternative zu den Dateisystemen kommt auch Cowloop in Betracht, das eine ähnliche Funktionalität auf Blockdevice-Ebene bereitstellt.

Stapelbare Dateisysteme lohnen sich besonders, wenn Änderungen in Read-only-Dateisystemen nötig sind. So bootet etwa Knoppix von CD, muss danach aber Log- und Lock-Dateien anlegen, Device-Files anpassen und temporäre Daten ablegen. Ältere Versionen verwenden eine aufwändige Kopier- und Symlink-Aktion: Beim Start legen sie eine RAM-Disk an, in der sie die Verzeichnishierarchie nachbilden, veränderbare Dateien von der CD in die RAM-Disk kopieren und - aus Platzgründen - für unveränderliche Files einen Symlink einrichten.

Schichtarbeit

Dank Union-FS gehört dieser fehlerträchtige Vorgang der Vergangenheit an. Die RAM-Disk mit ihrem Tmp-FS bleibt, Knoppix mountet sie aber über das nur lesbare ISO-Filesystem der CD. Die dortigen Daten scheinen durch, neue Dateien landen in der RAM-Disk. Bei Änderungen kopiert Union-FS das Original in die RAM-Disk und modifiziert dort ihren Inhalt. Diese so genannte Copy-on-Write-Technik verwendet auch die virtuelle Speicherverwaltung des Linux-Kernels.

Erste Schritte mit Union-FS

Union-FS wurde am File Systems and Storage Lab der Stony Brook Universität in New York entwickelt. Es ist Teil des FIST-Projekts (File System Translator), das Schnittstellen zur vereinfachten Entwicklung stapelbarer Dateisysteme bereitstellt. Union-FS gehört noch nicht zum Standardumfang des Kernels, steht aber für einige Distributionen bereits als Sourcepaket zur Verfügung. Zum Übersetzen der Quellen sind die Kernelheader oder die kompletten Sourcen des installierten Kernels nötig.

Die für den Artikel getesteten Union-FS-Versionen 1.0.12a und 1.0.13 lassen sich mit »make && make install« (Letzteres als Root) übersetzen und installieren. Suse-9.3-Anwender brauchen noch das Paket »e2fspgrogs-devel«, da sonst die Userspace-Programme nicht kompilieren. Gentoo-User installieren Union-FS mit »ACCEPT_KEYWORDS="~x86" emerge unionfs«. In beiden Fällen empfiehlt sich danach ein Test, ob sich das Modul mit »modprobe unionfs« erfolgreich in den Kernel einbindet. Den Erfolg sieht der Admin im Logfile seiner Maschine oder mit einem »dmesg«-Aufruf:

Registering unionfs 1.0.13

Union-FS lässt sich nun wie jedes andere Dateisystem mit dem »mount«-Befehl in die Verzeichnishierarchie einhängen.

Die einfachste Anwendung für Union-FS ist es, den Inhalt zweier Verzeichnisse zu kombinieren. Das folgende Beispiel verwendet zwei Directories mit je einer Datei sowie ein drittes Verzeichnis, das als Mountpunkt den vereinten Inhalt aufnimmt:

mkdir base1 base2 merged
touch base1/file1 base2/file2

Zur Sicherheit kombiniert der erste Mountaufruf die Verzeichnisse mit nur lesenden Zugriffsrechten (»ro«, read-only). Mit der Option »-t unionfs« erfährt Mount, dass es Union-FS verwenden soll. Die Option »-o« teilt dem stapelbaren Dateisystem mit, wie die Schichtung aussieht und welche Verzeichnisse an der Aktion teilnehmen. Ein Doppelpunkt trennt die Verzeichnisse und die Art ihres Zugriffs. Der Union-FS-Mountaufruf ist aus Sicherheitsgründen dem Administrator vorbehalten:

mount -t unionfs -o dirs=base1=ro:base2=roU
  none merged

Ein anschließendes »ls« zeigt die vereinigten Inhalte an, in »merged« erscheinen beide Dateien »file1« und »file2«. Interessanter wird dieses Szenario, wenn eines der Verzeichnisse Schreibzugriff erhält:

mount -t unionfs -o dirs=base1=rw:base2=roU
  none merged

Wenn nun ein Benutzer neue Dateien unter »merged« erzeugt, speichert Union-FS diese Files in Wirklichkeit unter »base1«. Das nur lesbare Verzeichnis »base2« bleibt unangetastet.

Der Dateisystemstapel verhilft beispielsweise zum schmerzfreien Ausprobieren neuer Software, die sich in das Dateisystem einer Linux-Maschine installiert. So wollte einer der Autoren das neue X.Org mit 3D-Unterstützung für einen speziellen Grafikchip testen, ohne die ganze Installation zu gefährden. X.Org installiert sich mit seinen Programmen und Bibliotheken unterhalb »/usr«, die Konfigurationsdateien liegen in »/etc«. Wer auch hier Experimente vornimmt, sollte dieses Verzeichnis ebenfalls einem Union-Mount unterwerfen.

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