Xen schnell serviert
Artikel erschienen in Swiss IT Magazine 2008/01
Die Vor- und selbstverständlich auch die Nachteile der Virtualisierung sind hinreichend bekannt. Ebenso wie die Tatsache, dass Xen die am weitesten verbreitete Open-Source-Virtualisierungslösung und somit mittlerweile Bestandteil der meisten Linux-Distributionen ist. Doch wie kommt man zu seiner ersten virtuellen Maschine?
Xen setzt im Gegensatz zu anderer Virtualisierungssoftware auf die Technik der Paravirtualisierung. Diese ist besonders ressourcenschonend und schnell, da die Gastsysteme über eine spezielle API «direkten» Zugriff auf die Hardware erhalten und so die ressourcenintensive Emulation der Hardware entfällt. Allerdings sind dazu Modifikationen an den Gastsystemen und deren Kernel nötig, damit sie wissen, dass sie die Xen-API zu benutzen haben. Dies führt dazu, dass nicht ohne weiteres jedes beliebige Betriebssystem paravirtualisiert werden kann. Insbesondere proprietäre Betriebssysteme wie Windows können ohne Unterstützung des Herstellers nicht angepasst werden und eignen sich damit nicht zur Paravirtualisierung.
Die ersten Experimente mit Xen sollen anhand von Debian 4.0 demonstriert werden, da Debian (im Gegensatz zu Ubuntu) Xen offiziell unterstützt und auch Security-Updates dafür herausgibt. Zudem lässt sich mit debootstrap sehr einfach ein Gastsystem installieren.
Es wird also eine Installations-CD von Debian 4.0 benötigt (net-
inst ist ausreichend) sowie ein beliebiger x86-Computer. Dabei braucht man weder eine moderne CPU noch Gigabyte-weise RAM. Ein Prozessor der 1-GHz-Klasse sowie ein paar Hundert MB RAM reichen für einen Test mit der Kommandozeile mehr als aus.
Hat man die Dom0 installiert, kann es an die Installation und Vorbereitung von Xen gehen. Zuerst muss man den Xen-Kernel, Xen selber sowie ein paar zusätzliche Werkzeuge installieren (die Versionsnummern müssen gegebenenfalls angepasst werden):
# apt-get install lvm2 xen-linux-system-2.6.18-5-xen-686 xen-docs-3.0 libc6-xen xen-hypervisor-3.0.3-1-i386-pae bridge-utils xen-tools
Es gibt zwei Varianten, um ein Gastsystem zu installieren. Die erste wäre von Hand, die zweite die Verwendung der Xen-Tools. Bei den Xen-Tools handelt es sich um eine Script-Sammlung, die mit einem Befehl unter anderem die Erstellung (xen-create-image) respektive Entfernung (xen-delete-image) eines Gastsystems (DomU) ermöglicht. Einstellungen, die sich die Gastsysteme teilen, können dabei in der zentralen Konfigurationsdatei /etc/xen-tools/xen-tools.conf festgehalten werden.
Wer bis jetzt seine LVM-Partition noch nicht initialisiert hatte, sollte dies mit den beiden Befehlen pvcreate /dev/sda7 und vgcreate vservers /dev/sda7 (Partitionsnamen anpassen) tun. Diese erstellen eine Volume Group namens vservers auf der Partition /dev/sda7, die von den Xen-Tools genutzt wird, um die Logical Volumes für die Gastsysteme zu erstellen. Die Beispielkonfiguration (siehe Kasten «/etc/xen-tools/xen-tools.conf») ist so ausgelegt, dass sie Gastsysteme mit einer Grösse von 4 GB anlegt, die 256 MB RAM und 128 MB Swap Space erhalten. Als Dateisystem wird standardmässig SGIs xfs verwendet. Die Installation der Gastsysteme erfolgt mittels debootstrap, wobei der Mirror-Server der SWITCH standardmässig zur Installation von Debian 3.1 («Sarge») genutzt wird. Um das Gastsystem zu installieren, braucht man nun nur noch xen-create-image aufzurufen und die fehlenden Einstellungen wie Hostnamen und Netzwerk-Einstellungen mitzugeben. Dabei können auch in der Konfigurationsdatei hinterlegte Einstellungen überschrieben werden.
xen-create-image
--hostname test
--ip 192.168.32.59
--gateway 192.168.32.1
--netmask 255.255.255.0
Die Xen-Tools richten nun die LVM Volumes ein, laden Debian 3.1 herunter, installieren das Basis-System und nehmen die nötigen Schritte für die Grundkonfiguration vor. Es wird dann eine Konfigurationsdatei namens test.cfg erstellt und in /etc/xen abgelegt. Das Gastsystem ist damit bereit und kann zum ersten Mal gebootet werden.
Um den Gast zu starten, gilt es den Befehl xm create /etc/xen/test.cfg -c einzugeben. Xen bootet dann das System und zeigt gleichzeitig die Konsole an, die mit CTRL+] wieder verlassen werden kann. Man kann sich über die Konsole ganz normal am Gastsystem anmelden oder Software installieren. Das Netzwerk sollte ebenfalls aktiv sein und funktionieren, da sich Xen im Hintergrund um die Konfiguration des Bridging gekümmert hat. Den Gast kann man problemlos per poweroff abstellen respektive mit reboot neu starten. Dies ist auch aus der Dom0 mittels xm destroy test möglich.
Das Xen-Management-Werkzeug xm bietet zudem noch einige andere Möglichkeiten, beispielsweise zum Einfrieren des Gastsystems. Wer möchte, dass ein Gastsystem beim Systemstart der Dom0 automatisch geladen wird, muss in /etc/xen ein Verzeichnis namens auto anlegen dort einen Symlink zur Konfigurationsdatei der DomU erzeugen.
Um den Gast wieder loszuwerden, muss xen-delete-image test aufgerufen werden. Es entfernt die Konfigurationsdatei der DomU samt aller Logical Volumes.
Die Xen-Tools unterstützen nebst Debian auch Ubuntu, Fedora Core, CentOS und Gentoo. Wer andere Betriebssysteme nutzen möchte, muss diese von Hand installieren. Das bedeutet, dass man zuerst die Logical Volumes einrichten und dann mit dem passenden Betriebssystem ausstatten muss. Dies kann über ein Werkzeug wie debootstrap erfolgen oder mit vorbereiteten Tarballs von bereits installierten Systemen. Nachher braucht man nur noch die Xen-Konfigurationsdatei zu erstellen und kann die DomU so starten wie eine von den Xen-Tools erzeugte. Dies ist ein wenig aufwändiger, lässt sich aber mit einem Shell-Script halbwegs automatisieren und somit beschleunigen.
Um Windows mit Xen zu betreiben, benötigt man einen aktuellen Prozessor mit Virtualisierungsunterstützung (AMD-V respektive Intel VT), da der Windows-Kernel nicht mit Xen umgehen kann. Die restliche Hardware muss mit Qemu emuliert werden (Debian-Paket xen-ioemu-3.0.3-1), was aber viel langsamer als der Zugriff via Xen-API ist.
Deutlich schneller als die Emulation ist der Hardware-Zugriff mit speziellen Windows-Treibern, die die Xen-API verwenden. Allerdings sind solche Treiber im Moment nur kostenpflichtig von Novell respektive XenSource zu beziehen. Eine Anleitung zur Installation und Konfiguration stellt unter anderem XenSource unter www.xensource.com/files/xen_install_windows.pdf zur Verfügung.