Die Puppe in der Puppe
Virtualisierung und Emulation
Paravirtualisierung
Ein Emulator läuft zunächst als ganz normales Programm beispielsweise unter Linux oder Windows. Theoretisch ist es aber auch denkbar, das Wirtsbetriebssystem gleich ganz zu streichen. Dazu benötigt man eine spezielle Software, die direkt auf der Hardware aufsetzt. Solch ein Programm heißt Hypervisor oder Virtual Machine Monitor. Es kontrolliert unabhängig vom Betriebssystem alle auf dem Computer installierten Gastsysteme und sorgt für den reibungslosen Parallelbetrieb (Abbildung 5).
In dieser Umgebung arbeiten die Gastsysteme nicht mehr direkt mit der Hardware zusammen, sondern melden ihre Wünsche dem Hypervisor. Möchte beispielsweise eines der gleichzeitig laufenden Linux-Systeme auf die Festplatte zugreifen, teilt es dies dem Hypervisor mit. Der führt nun den eigentlichen Zugriff aus und liefert das Ergebnis an das anfragende System zurück. Damit alle Guests mit dem Hypervisor kommunizieren können, bietet der eine einheitliche Schnittstelle zur realen Hardware, die auch andere Programme und Betriebssysteme nutzen können. Mit dieser als Paravirtualisierung bezeichneten Technik erreicht man gegenüber den bisher genannten Lösungen eine erstaunlich hohe Ausführungsgeschwindigkeit. Die Hersteller solcher Virtualisierungen sprechen von Bremswirkungen gegenüber "echter" Hardware in der Größenordnung von lediglich 0,5 bis 3 Prozent. Zu den bekanntesten Paravirtualisierungslösungen zählen das kostenlose Xen [8] und der kommerzielle ESX-Server von VMware [7].
Für Schwierigkeiten sorgt bei der Paravirtualisierung die Anforderung, dass jedes Gastsystem den Hypervisor kennen und nutzen muss: Dafür kommt man um eine entsprechende Modifikation des Betriebssystems nicht herum. Spätestens beim gut geschützten Windows steht man damit aber vor einem großen Problem. Dazu kommt, dass der Hypervisor nun selbst einige Betriebssystemaufgaben übernimmt. Beispielsweise muss er wissen, welche Grafikkarte im System steckt und wie man sie ansteuert.
Damit die Hypervisor-Entwickler angesichts dieser Aufgaben nicht im Anpassen von Treibern versinken, wählen sie in der Regel einen der beiden folgenden Auswege:
- Der Hypervisor des Xen-Projekts erklärt einfach eins der parallel laufenden Betriebssysteme zu seinem Lieblingsgast. Als Gegenleistung für diese Gunst nutzt er dessen Treiber. Greift also ein anderes Betriebssystem zum Beispiel auf ein Gerät an der USB-Schnittstelle zu, leitet der Hypervisor diesen Zugriff an das privilegierte Gast-Betriebsystem weiter (Abbildung 5).
- Der zweite Ansatz baut einen vorhandenen Linux-Kernel zum Hypervisor um – Linux bringt schon fast alles mit, was der Hypervisor benötigt, und ist zudem zugänglich für solche Umbauarbeiten. Dieses Verfahren verwendet beispielsweise das KVM-Projekt [9]: Es stellt ein Kernelmodul bereit, das den Linux-Kernel in einen Hypervisor verwandelt. Dieser startet dann mit Hilfe eines modifizierten Qemu-Emulators weitere Gastbetriebssysteme. In diesem Fall spricht man von einer kernelbasierten Virtualisierung.
Betriebssystem virtualisieren
Wer lediglich ein gerade laufendes Linux vervielfachen möchte, greift zur so genannten Betriebssystemvirtualisierung. Anders als in den anderen Virtualisierungsmöglichkeiten existiert auf dem realen PC nur noch ein einziges Betriebssystem. Dieses wird anhand von Vorlagen einfach geklont. Diese Vorlagen legen genau fest, wie die Konfiguration des neuen Klons auszusehen hat; so könnte der Administrator beispielsweise den Zugriff auf einen bestimmten Bereich der Festplatte einschränken.
Beim anschließenden Klon-Vorgang dupliziert die Virtualisierung in der Praxis meist nur die Systemumgebung. Unter der Haube gibt es damit weiterhin nur einen einzigen Linux-Kern, den alle gestarteten Programme nutzen – egal unter welchem Klon sie laufen (siehe Abbildung 6). Die Betriebssystemvirtualisierung sperrt lediglich die Anwendung in eine eigene Systemumgebung. Damit erhält man zwar ein sicher und schnell arbeitendes System; Programme aus anderen Betriebssystemen laufen auf diese Weise jedoch nicht.
Kostenlose Betriebssystemvirtualisierer sind beispielsweise der Linux-VServer [10] und OpenVZ [11], ein Open-Source-Ableger des kommerziellen Virtuozzo. Beide Varianten setzen einen modifizierten Linux-Kernel ein.



