Xen schnell serviert

Mit Xen lassen sich im Handumdrehen aus einem Computer mehrere virtuelle machen. Die Umsetzung geht dabei schneller, als es auf den ersten Blick den Anschein hat.

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?


Paravirtualisierung

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.



Unterstützung für Paravirtualisierung mit Xen bieten insbesondere Open-Source-Betriebssysteme wie Linux und NetBSD, die bereits seit langem mit Xen verwendet werden können. Entsprechende Projekte befinden sich auch für die anderen BSD-Varianten und Open Solaris in Arbeit, wobei sie meist noch in der Testphase stecken. Von den pro-
prietären Betriebssystemen bietet unter anderem Netware Xen-Unterstützung.


Domo installieren

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.



Im ersten Schritt muss das Wirtsystem, auch Dom0 genannt, vorbereitet werden. Für die Dom0 reicht es, ein Minimalsystem zu installieren, das im wesentlichen aus Kernel und coreutils besteht. Man benötigt also weder einen grafischen Desktop noch Entwicklungssoftware. Bei der Installation von Debian bedeutet es, dass bei tasksel keiner der Punkte («Desktop», «Standardsystem» usw.) ausgewählt werden braucht. Allerdings ist ein besonderes Augenmerk auf die Partitionierung der Festplatte zu legen. Xen kann für die Gastsysteme sowohl Images als auch LVM Volumes verwenden. Images können einfacher in der Einrichtung sein, sind aber langsamer und in ihrer Anzahl begrenzt, weil Linux nicht beliebig viele Images montieren kann. Es empfiehlt sich daher, LVM Volumes zu verwenden und eine möglichst grosse Partition für den LVM vorzusehen.


Für die Dom0 reichen 10 GB mehr als aus, wobei man diese inklusive der Boot-Partition an den Anfang der Disk legen sollte. Man kann die Dom0 auch kleiner machen, allerdings sollte man ausreichend Platz für Logs und Images für die Erzeugung von Gastsystemen vorsehen. Der restliche Speicher auf der Festplatte kann als eine grosse Partition für den LVM reserviert werden.


Die Nutzung normaler Partitionen ist ebenfalls möglich, allerdings etwas exotisch, da sie nicht beliebig angelegt, gelöscht und verschoben werden können.


Xen vorbereiten

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




Wie man sieht, wird für Xen auch eine spezielle Version der libc und die bridge-utils für die Einrichtung von Bridged Networking benötigt. Die Xen-Tools helfen später bei der Einrichtig der Gastsysteme. Wer als Bootloader noch LILO verwendet, sollte vor dem Reboot unbedingt auf Grub wechseln, da sich der Xen-Kernel und LILO unter Umständen nicht verstehen.


Nach dem Reboot sollte der Xen-Kernel geladen sein, was man mit uname -r überprüfen kann, das 2.6.18-5-xen-686 ausgeben sollte. Ob Xen aktiv ist, kann man mit dem Befehl xm list prüfen, das alle aktiven Domains auflistet. Es sollte mit Domain0 nur das Wirtssystem aufgelistet sein.


Als nächstes gilt es, Xen zu konfigurieren. Die Konfigurationsdatei liegt in /etc/xen und heisst xend-config.sxp. Sie erlaubt es unter anderem, die Netzwerkeinstellungen zu definieren und die Xen-Weboberfläche zu aktivieren. Der Kasten «/etc/xen/xend-config.sxp» enthält eine minimale Beispielkonfiguration, die Xen mit (network-script 'network-bridge netdev=eth0') sagt, dass eth0 als Netzwerk-Interface benutzt werden soll. Diese Einstellung muss angepasst werden, wenn das primäre Netzwerk-Interface statt dessen beispielsweise eth1 ist. Nach einem Neustart von Xen (mittels /etc/init.d/xend restart) kann es an die Erstellung des ersten Gastsystems gehen.


Gastsystem installieren

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.


Den Gast starten

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.


Andere Systeme installieren

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.


Windows mit Xen

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.




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Wieviele Zwerge traf Schneewittchen im Wald?
GOLD SPONSOREN
SPONSOREN & PARTNER