Einleitung
Virtuelle Maschinen stellen definierte Systemumgebungen zur Verfügung. Aus Templates mit einer bestimmten Version eines Betriebssystems und einem gewünschten Patch-Level werden virtuelle Maschinen generiert. Snapshots speichern Zustände einer virtuellen Maschine. Bei einer ungewollten Änderung kann der alte Zustand wiederhergestellt werden. Virtualisierung und Emulation ermöglichen die Unabhängigkeit von der Hardware. So lassen sich zum Beispiel alte Versionen einer Anwendung auf neuer Hardware betreiben oder auch Software für nicht vorhandene Hardware entwickeln. Dies sind die Stärken von QEMU. QEMU ist kostenlos und läuft auf vielen Systemen (Linux, BSD, Mac OS X, Microsoft Windows, eComstation und DOS).
Virtualisierung bringt eine Reihe von Vorteilen, die je nach Art unterschiedlich gewichtet sind. Da mehrere Gast-Systeme parallel auf einem Rechner laufen können, ist eine bessere Hardware-Auslastung möglich. Früher wurden für wichtige Anwendungen jeweils ein physikalischer Computer verwendet. Das Resultat ist ein größerer Rechnerpark mit entsprechend hohem Aufwand (Anschaffung, Wartung, Stromversorgung, Klimaanlage). Betreibt man dagegen einzelne Anwendungen jeweils in einer virtuellen Maschine, sind die Anwendungen voneinander entkoppelt und die Hardware wird besser ausgenutzt. Neben der Sicherheit wird die Verfügbarkeit erhöht, denn virtuelle Maschinen können bei Hardware-Problemen auf eine andere Hardware übertragen werden. Diese Optimierung der Data Center durch Virtualisierungslösungen nennt man Server-Konsolidierung. Die Kernel-based Virtual Machine (KVM) und Xen sind geeignete Virtualisierungslösungen. Sowohl KVM als auch Xen sind Open Source.
Die Verwaltung von virtuellen Maschinen erfolgt unter verschiedenen Virtualisierungslösungen sehr unterschiedlich. In einem heterogenen Data Center ist es oft nicht möglich mit einem Tool mehrere Virtualisierungslösungen zu steuern. Zur Lösung dieses Problems wird die C-Bibliothek libvirt entwickelt. Sie stellt einheitliche Schnittstellen zum Managen von unterschiedlichen Virtualisierungslösungen zur Verfügung.
Die Print-Ausgabe
QEMU, die Kernel-based Virtual Machine (KVM), Xen und die C-Bibliothek libvirt werden im Wiki http://qemu-buch.de ausführlich beschrieben. Der Inhalt steht unter der GNU Free Documentation License. Die Texte dieses Wikis wurden für dieses Buch angepasst. Dieses Buch ist zugleich ein Arbeitsbuch und ein Nachschlagewerk. Es richtet sich an (Linux-)System-Administratoren, Software-Entwickler, Software-Tester, Studenten und technisch Interessierte. Durch die vielen Anwendungsbeispiele und die verwendete Lizenz eignet es sich besonders als Schulungsmaterial.
Es werden die folgenden Schreibweisen verwendet.
Courierschrift
Für Konsolen-Befehle und Quellcode.
~# Befehl
Für Unix-Konsolen-Befehle als Systemadministrator (root).
~$ Befehl
Für Unix-Konsolen-Befehle als normaler Benutzer.
Host ~# Befehl
Für Unix-Konsolen-Befehle als Systemadministrator (root) auf dem Host-Rechner.
Host ~$ Befehl
Für Unix-Konsolen-Befehle als normaler Benutzer auf dem Host-Rechner.
Host C:\> Befehl
Für DOS/Windows-Konsolen-Befehle auf dem Host-Rechner. Da die Optionen unabhängig vom Betriebssystem sind, wird hier meist die Schreibweise für die Unix-Konsole verwendet.
Dom0 ~# Befehl
Für Unix-Konsolen-Befehle in der privilegierten virtuellen Maschine Dom0 (Xen).
Gast ~# Befehl
Für Unix-Konsolen-Befehle als Systemadministrator (root) auf dem Gast-System.
Gast ~$ Befehl
Für Unix-Konsolen-Befehle als normaler Benutzer auf dem Gast-System.
Gast C:\> Befehl
Für DOS/Windows-Konsolen-Befehle auf dem Gast-Rechner.
(qemu) Befehl
Für Befehle des QEMU-Monitors.
virsh # Befehl
Für Befehle des Programms virsh (Bibliothek libvirt).
Host ~$ Ein langer Befehl, \
der nicht in einer Zeile aufgelistet werden kann.
Wenn ein Befehl nicht in einer Zeile dargestellt werden kann, wird der Zeilenumbruch durch einen Backslash dargestellt. Der Befehl ist aber in einer Zeile einzugeben.
Unter Nützliche Tools werden einige nützliche Tools erläutert. Dieser Überblick dient auch dazu, um sich bei weniger bekannten Gast-Systemen zurechtzufinden. Die meisten der dort beschriebenen Tools sind als Kommandozeilen-Befehle zu bedienen und kommen aus dem Unix-Umfeld. Sie sind aber auch auf anderen Plattformen, wie Microsoft Windows, verfügbar.
