Als Solaris 10 Ende 2004 auf der Bildfläche erschien, viel eine unter den mehr als 600 Neuerungen vielen Kunden besonders auf: Die integrierte Virtualisierung auf Grundlage der so genannten Zonen. Was vielleicht nicht jedermann bekannt ist: Linux beherrscht längst etwas ganz Ähnliches. Das Linux-Vserver-Projekt [1] partitioniert das Betriebssystem auf der Grundlage virtueller Server: Unterschiedliche Dienste und Applikationen lassen sich auf einem physischen Host konzentrieren.
Die Verantwortungsbereiche der Administratoren sind bei Bedarf leicht teilbar. Die Nachteile einer Parallelinstallation aller Dienste vermeiden die virtuellen Server dagegen. So gehören zum Beispiel Konflikte durch belegte Netzwerkports der Vergangenheit an, weil gleiche Services nun auf verschiedenen virtuellen Instanzen laufen.
In Schulungsumgebungen ist es vorteilhaft, dass die Teilnehmer ihren Server ohne weiteres mit Root-Rechten administrieren können, ohne andere zu gefährden. Verkonfiguriert ein angehender Admin einmal ein System oder übersieht eine Sicherheitslücke, sodass sein System kompromittiert wird, dann bleibt das Problem auf die enge virtuelle Welt dieser Serverinstanz beschränkt und stellt für andere keine Gefahr dar. Auch ist der Ausgangszustand auf Knopfdruck wiederherstellbar.
Die Applikationen merken von all dem nichts und bedürfen daher auch keiner Anpassung. Die Partitionierung bringt nicht einmal merkliche Leistungseinbußen mit sich und hat damit auch Vorteile gegenüber einer vollständigen Virtualisierung, beispielsweise durch VMware [9] oder Virtual PC beziehungsweise Virtual Server [10].
Im Extremfall lässt sich ohne Probleme für jeden Dienst oder jede Applikation ein eigener virtueller Server aufsetzen. Benutzt der Administrator dann auch noch die richtigen Werkzeuge für die Verwaltung, lässt ihn auch eine große Anzahl virtueller Server kalt. Dieser Beitrag zeigt, wie\'s funktioniert.
Virtuelle Diener
Leider sind alle diese Vorteile derzeit unter Linux noch nicht mit einem Vanilla-Kernel zu haben. Denn der enthält zwar bereits einige Zutaten für eine Partitionierung, doch den Rest bringen erst die Patches aus dem Projekt Linux Vserver mit. OpenVZ [2], die freie Variante der kommerziellen Virtualisierungslösung Virtuozzo [3] ist eine Alternative.
Für die meisten Distributionen gibt es spezielle Packages für den Kernel, die alle Patches enthalten, sodass der Admin den Kernel nicht mehr selbst patchen muss. Wer auch auf das Kompilieren des neuen Kernels verzichten möchte, findet sowohl für Linux Vserver [1] als auch für OpenVZ [2] bereits fertige Kerne auf den Projektseiten.
Gentoo als Wirt
Als Beispiel verwenden die Autoren dieses Beitrags als Wirtssystem Gentoo. Für diese Distribution enthält das Paket »vserver-sources« die gepatchten Kernelquellen und »util-vserver« die Sammlung der Userlevel-Werkzeuge. Aber Achtung: Es gibt ein weiteres Paket mit ähnlichem Namen: »vserver-utils« [5]. Dieses Paket befindet sich gegenwärtig aber noch sehr stark in der Entwicklung und funktioniert nur mit den Entwicklerversionen von Linux Vserver.
Diese Entwicklerversionen sind allerdings noch aus zwei anderen Gründen interessant: Nur sie enthalten die Bind-Mount-Extensions (BME) und das Copy-on-Write-Link-Breaking (COWLB, siehe unten). Die Installation der genannten Packages ist unter Gentoo einfach zu bewerkstelligen:
emerge vserver-sources util-vserver
rc-update add vservers default
Das letzte Kommando startet beim nächsten Booten auch die virtuellen Server. Anschließend baut Root den neuen Vserver-Kernel des Wirts, zum Beispiel mit Hilfe von »genkernel«, passt die Bootloader-Konfiguration an und bootet ihn. Zuvor ist ihm aber noch durch den Eintrag
echo 'kernel.vshelper=/usr/lib/util-vserver/vshelper' >> /etc/sysctl.conf
das Vserver-Helper-Skript bekannt zu machen. Dieses Skript wird für »halt« und »reboot« im virtuellen Server benutzt. In diesem Fall soll ja nur die eigene Instanz gestoppt beziehungsweise neu gestartet werden. Das Wirtssystem muss hingegen weiterlaufen.