Re: Jail und Plattenplatz

From: Oliver Fromme <olli(at)secnetix.de>
Date: Sat, 10 May 2003 16:53:18 +0200 (CEST)

Sebastian Böck <SebastianBoeck(at)freenet.de> wrote:
> bis jetzt hab ich Jails immer auf dem Standardweg (jail(8))
> eingerichtet. Funktioniert auch wunderbar, solange man genügend Platz
> dafür hat. Leider ist in dem entsprechenden Computer nur eine 2GB
> Festplatte, was irgendwann doch ziemlich eng wird.
> Eigentlich klingt mount_union ganz vielversprechend, bis auf die
> Warnungen. Testweise habe ich mal /bin /sbin und /usr readonly in die
> entsprechenden Jailverzeichnisse gemountet, /usr/local usw. wird dann
> pro Jail "darüber" gelegt. Das funktioniert auf einem Testrechner auch
> soweit, allerdings bin ich mir nicht ganz sicher, ob man das wirklich so
> machen sollte/kann.
> Kritik oder andere Vorschläge Plattenplatz einzusparen sind herzlich
> wilkommen.

UNIONFS (d.h. mount_union) würde ich nicht empfehlen. So-
bald das ein wenig gestreßt wird, bricht Dir das weg. Zu-
mindest in -stable ... In -current sind da einige Fixes
gemacht worden, aber ob das jetzt so stabil ist, daß man
das im Produktionsbetrieb unter Last setzen kann, wage ich
nicht zu beurteilen.

Eine andere ALternative sind Union-Mounts (das ist was an-
deres als UNIONFS!), d.h. die Option »-o union« bei einem
normalen Mount. Sehr verbreitet ist es zum Beispiel, die
nicht veränderlichen Daten per NFS an localhost zu exportie-
ren, und diese dann in jedes jail read-only hineinzumounten,
etwa so:

# cat /etc/exports
/export -ro 127.0.0.1
# mount -t nfs -o union,ro,intr 127.0.0.1:/export /jail/foo
# mount -t nfs -o union,ro,intr 127.0.0.1:/export /jail/bar
.. usw.

Man muß natürlich ein bißchen mit Symlinks spielen, damit
Sachen, die sich von Jail zu Jail unterscheiden und/oder
veränderbar sein müssen, im Filesystem von /jail landen und
nicht in dem read-only-gemounteten NFS-Filesystem. Beach-
te, daß union-Mounts nur die Einträge im Wurzelverzeichnis
des Mountpoints zusammenführen, nicht aber in Unterver-
zeichnissen. Beispiel: In /export/etc kommen alle Dateien
rein, die fest sind, und alle anderen Dateien sind Sym-
links, z.B.: /export/etc/group -> ../etc.local/group
Und in jedem Jail hast Du dann ein Verzeichnis, wo die
Ziele der Symlinks drin sind: /jail/foo/etc.local/group
und so weiter. Kannst Du natürlich nennen, wie Du willst.
Für /export/var gilt das gleiche.

Eine Alternative zu NFS-Loopback-Mounts sind Hardlinks.
Beide Verfahren haben Vor- und Nachteile.

Früher habe ich auch mal (als dritte Möglichkeit) vnodes
verwendet (siehe vnconfig(8)). Damit kann man auch das-
selbe Filesystem-Image mehrfach read-only mounten. Ich
hatte mir gedacht, daß es performanter sein müßte, da der
NFS-Overhead wegfällt, aber da hatte ich mich wohl geirrt
(der Overhead bei Loopback-NFS ist erstaunlich gering),
und so bin ich eher zur NFS-Methode übergegangen, weil das
einfacher zu pflegen und übersichtlicher ist.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
One Unix to rule them all, One Resolver to find them,
One IP to bring them all and in the zone to bind them.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 10 May 2003 - 16:53:22 CEST

search this site