AUFS für Diskless Clients benutzen

AUFS (Another Union FS) erlaubt - in gleicher Weise wie UnionFS (UnionfsBenutzen) - es verschiedene Dateisysteme oder Verzeichnisse auf dem selben Pfad zu stapeln, ohne sich wie sonst üblich zu überdecken. Benutzer und Kernel schauen von oben auf diese Schichtung drauf und alles sieht erstmal so aus wie gewohnt. Dateien von darunterliegenden Dateisystemen scheinen durch, wenn sie nicht ein weiteres Mal mit dem identischen Namen in einer höheren Ebene "näher am Betrachter" vorhanden sind. Die Besonderheit besteht im Schreibverhalten auf den einzelnen Schichten, das bei AUFS beliebig auf nur lesbaren oder auch schreibbaren Zugriff festgelegt werden kann. So wird aus einer nur lesbaren Live-CD durch darüberlegen z.B. des beschreibbaren TempFS einer Ramdisk ein insgesamt beschreibbares Root-Dateisystem. Dateien auf dem nur lesbaren Medium, an denen Änderungen vorgenommen wurden, werden dann als Kopie in die Ramdisk verschoben und dort verändert.

AUFS für ein Schreibbares Root-FS

Da manche Bereiche der Linux-Dateibaumstruktur für Programme schreibbar sein müssen, damit diese Fehlerfrei funktionieren kann AUFS benutzt werden um eine schreibbare Schicht über das Root-FS zu legen. Dazu muss das AUFS Modul und die zugehörigen Tools (mount.aufs umount.aufs auplink aulchown) in Stage 2 vorhanden sein (also i.A. im Vorlagesystem). Wird dann die Option aufs in der Kernel-Command-Line angegeben oder in der machine-setup-Konfigurationsdatei auf "true" gesetzt, wird das Modul in Stage 3 nach Mounten des Stage 2 Images geladen und eine Ramdisk als schreibbare Schicht über den RO-Netzwerkmountpoint gelegt.

Während in einem klassischen Diskless Client die Ramdisk viel mehr Dateien aufnehmen muss – viele Bereiche von /etc oder auch /var, bleibt der Platzbedarf unter Verwendung von AUFS sehr klein. In diesem Szenario landen nur wirklich veränderte Dateien im RW-Bereich. Der Unterschied macht schnell mehr als 20MByte aus.

Stapeln verschiedener FS-Quellen auf dem FS Root

Steht AUFS zur Verfügung, gibt es die Möglichkeit das Rootfilesystem, zusätzlich zur Schreibbarkeitsschicht, durch Überlagerung zusätzlicher Netzwerkquellen weiter anzureichern. Sinn dessen könnte es z.B. sein, ein Basissystem mit verschiedenen Softwareerweiterungen auszustatten, die sich gegenseitig ausschließen (Verschiedene Versionen des gleichen Programms), oder wegen Lizenzbedingungen nur Beschränkt zur Verfügung stehen dürfen. Auch möglich wäre es diverse Einstellungen Clientabhängig einzubinden.
Momentan wird nur das Einbinden von NFS-Shares unterstützt. Dazu reicht es diese für den Client zugänglich zu exportieren und die Option aufs in der Kernel-Commandline oder in der Datei machine.setup auf die einzubindenden URLS zu setzen.
Der Wert der Variable folgt dem Schema protokoll://hostname/path/to/targetdir also z.B. aufs=nfs://123.45.67.89/openslx/srv/export/my_union. Mehrere URLs können mit Kommata getrennt angegeben werden. Hierbei dürfen entweder keine Leerzeichen enthalten sein, oder die Liste muss in doppelten Hochkommas stehen (also z.B. aufs="nfs://server/path, nfs://server2/path2").

Die Dateistruktur unter den angegebenen Branches werden dann der Reihe nach über das Root-Filesystem gestapelt, so dass z.B. Dateien unter nfs://123.45.67.89/openslx/srv/export/my_union/etc im Client in Stage 4 unter /etc wiederzufinden sind.