Jail
Jails sind eine einfache Lösung zur Virtualisierung von Computersystemen im FreeBSD Betriebssystem. Im Gegensatz zu den meisten gängigen Virtualisierungslösungen wird eine virtuelle Maschine nur sehr rudimentär implementiert. So findet keine tatsächliche Emulation eines vollständigen eigenen Systems samt entsprechender virtueller Hardware statt. Vielmehr läuft ein Jail auf der selben Kernel-Instanz wie das Hostsystem und wird darunter nach einem chroot in ein eigenes Unterverzeichnis in einer eigenen Prozessgruppe gestartet. Der Kernel kapselt dabei die Prozesstabellen ab, so dass ein Jail stets nur seine eigenen Prozesse sehen kann. Ausschließlich das Hostsystem hat Zugriff auf die vollständige Prozesstabelle.
Genaugenommen handelt es sich bei einem Jail mehr oder weniger um ein aufgebohrtes chroot. Dadurch muss der Kernel zwingend ein gleichartiges Betriebssystem im Jail starten.
Einschränkungen
Bis auf ein paar Einschränkungen ist ein Jail genauso funktional wie das native Hostsystem. Im Detail funktionieren nicht:
- Mounten und unmounten von Dateisystemen,
- Abhängig von der Policy, Dienste die Raw Sockets benötigen: Ping, Traceroute, ...
- Shared Memory
- Das Anlegen von Paketfilter-Regeln
Diese Einschränkungen sind derzeit aktuell. An einigen Stellen wird bereits aktiv gearbeitet, andere Einschränkungen sind zu mindest schon auf der ToDo-Liste der Entwickler gelandet. Man darf also gespannt bleiben.
Manche Einschränkungen können global, manche auch Jail-individuell gelockert werden. Dieser Punkt ist stetigen Änderungen unterworfen, es empfiehlt sich daher, den aktuellen Stand von jail(8) unter Sysctl MIB Entries zu studieren.
Entwicklung
- CVS
- src/etc/rc.d/jail Startscript
- src/usr.sbin/jail/ jail(8)
- src/usr.sbin/jls/ jls(8)
- src/usr.sbin/jexec/ jexec(8)
- src/sys/kern/kern_jail.c
- Jail Resource Limits
- CPU- und Speicherverbrauch in den einzelnen Jails limitieren bzw. gerecht aufteilen.
- Soll verhindern, dass ein Jail alle verfügbaren Ressourcen binden kann.
- Jail2
- Einer Überarbeitung des Jail-Konzepts wird in FreeBSD Jail2 einfließen.
- Einen Überblick über das Projekt bietet die FreeVPS Projektseite.
Siehe auch
- wiki.freebsd.org/Jails
- Jail relevante Manpages in 7.0
- top.uugrn.org/Jailkonzept zur Umsetzung bei der Vorlage:Uugrn.
- Paper zu FreeBSD Jails auf Real Virtuality:
- Vortragsfolien zu FreeBSD Jails als ODP (OASIS OpenDocument Präsentation / OpenOffice)
- Vortragsfolien zu FreeBSD Jails als PDF