Das Erstellen mehrerer Jails ist dagegen langwierig. Es wird durch Tools wie EZJail erheblich erleichtert. Aber es gibt dank ZFS eine elegantere Methode, mehrere Jails zu generieren. Man bedient sich dabei der ZFS-Snapshots und ZFS-Clones, wie die folgende Vorgehensweise anknüpfend an das vorherige Beispiel zeigt.
Zunächst legt man ein Dataset an, in dem der Code für die Jail abgelegt wird. Die Kompression sollte man abschalten, da es sich hauptsächlich um Binärdaten handelt:
zfs create -o compression=off -p fbsd/jail/vorlage
Es folgt ein je nach Rechenleistung recht langwieriger Schritt:
cd /usr/src make world DESTDIR=/jail/vorlage make distribution DESTDIR=/jail/vorlage
Ein weiteres Dataset nimmt die Konfigurationsdaten auf, die als Basis für alle weiteren Jails dienen sollen. Dazu werden die Informationen aus der Jail-Vorlage in das Dataset mit den Konfigurationsdaten umkopiert. Anschließend startet man noch das Programm »mergemaster
«
, das alles an die neuen Gegebenheiten anpasst (Listing 3).
Listing 3
Jails erzeugen
Um innerhalb der Jails Programme über die Ports zu installieren, müssen in der Datei »make.conf
«
im Verzeichnis »/jail/basiskonf/etc/
«
einige Einträge modifiziert beziehungsweise ergänzt werden:
cd /jail/basiskonf echo WRKDIRPREFIX=/data/ports >> etc/make.conf echo DISTDIR=/data/ports/distfiles >> etc/make.conf echo PACKAGES=/data/ports/packages >> etc/make.conf
Innerhalb der Vorlage für die weiteren Jails sind einige Pfade so anzupassen, dass sie später innerhalb jeder Jail auf die korrekten Daten zeigen (Listing 4).
Listing 4
Jails verlinken
Im nächsten Schritt kommt wieder ZFS ins Spiel. Zunächst legen die folgenden Befehle von der Jail-Vorlage und von der Datenvorlage jeweils einen Snapshot an:
zfs snapshot fbsd/jail/vorlage@master zfs snapshot fbsd/jail/basiskonf@master
Die im nächsten Schritt erzeugten Clones sind im Gegensatz zum Snapshot beschreibbar:
zfs clone fbsd/jail/vorlage@master fbsd/jail/jail_1 zfs clone fbsd/jail/basiskonf@master fbsd/jail/jail_1/data
Abschließend wird die Systemkonfiguration »/etc/rc.conf
«
des Hostsystems um die Einträge für die Jails ergänzt.
Wie erwähnt verwenden viele Administratoren für die Anbindung großer Datenpools die iSCSI-Technologie, die nahezu jedes Betriebssystem unterstützt. Auch für das heimische Netzwerk-Storage NAS ist iSCSI durchaus interessant, da Windows- und Apple-Systeme dieses Protokoll unterstützen. FreeBSD bringt diese Unterstützung auch mit, allerdings nur wenn man aus den Ports heraus die entsprechende Software installiert.