Xen
Aus Fedorawiki.de
| | Dieser Artikel ist noch nicht vollständig. Du kannst helfen, ihn zu bearbeiten. |
Die Software Xen ist ein Open-Source-Virtuelle-Maschinen-Monitor (VMM), wurde an der Universität Cambridge entwickelt und steht unter der GNU General Public License (GPL). Xen läuft direkt auf x86-Hardware, diese wird für die darauf laufenden Systeme, welche Domains genannt werden, paravirtualisiert. Es wird so eine sehr hohe Performance erzielt, da anders als bei Qemu oder VMware die Hardware nicht emuliert wird, sondern den Gastsystemen mit einem Overhead, der aber sehr klein ist, zur Verfügung gestellt wird. Die Gastsysteme (Domains) können unter anderem Linux oder NetBSD sein. Xen bietet neben der Paravirtualisierung die vollständige Virtualisierung, welche allerdings spezielle Prozessoren von Intel VT- oder AMD SVM- Technologie voraussetzen.
Inhaltsverzeichnis |
Xen-Wirt Installation
Anemrkung Fedora 10: Für Fedora 10 steht noch kein Kernel für Xen zur verfügung! Alternativ kann KVM zur Virtualisierung eingesetzt werden.
Xen greift tieft in das Betriebsystem ein und setzt somit einen modifizierten Kernel voraus.
Auf einem frisch installierten Fedora-System werden nun xen und xen-tools installiert:
Das kernel-xen-Paket enthält einen Xen-modifizierten Kernel für das Host- (andere Bezeichnungen: Wirt, Domain 0, dom0, xen0) und das Gast-System. Über das xen-Paket werden user-space-Werkzeuge installiert, welche Interaktionen mit dem Hypervisor durchführen. Das vnc-Paket wird benötigt, sofern man unter X eine graphische Installation durchführen möchte.
Die GRUB Bootloader-Konfiguration /boot/grub/grub.conf wurde um den Xen-Kernel erweitert. Allerdings wird der Xen-Kernel nicht "default" gebootet. Entweder muss beim Boot-Vorgang der Xen-Kernel manuell ausgewählt werden oder der Eintrag "default=" in der Datei /boot/grub/grub.conf entsprechend angepasst sein.
Xen-Kernel aktivieren
Nach erfolgreichem Neustart sollte geprüft werden, ob der Xen-Kernel wirklich läuft:
# uname -r 2.6.25.3-2.fc9.i686.xen
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 940 1 r----- 31.1
Der untere Aufruf zeigt, dass der Domain-0 940 MB Hauptspeicher zur Verfügung steht.
Xen-Netzwerk-Installation prüfen
Die Xen-Gast-Domain wird über eine virtuelle Ethernet-Netzwerkkarte mit der Außenwelt verbunden. Über eine "Punkt zu Punkt"-Verbindung ist das Gastsystem mit einer virtuellen Netzwerkkarte der Domanin 0 (Wirt) angeschlossen.
Beim Starten des Xen-Daemon xend werden automatisch zwei Shell-Scripts gestartet, welche die virtuellen Schnittstellen einbinden. Standardmäßig werden eine Bridge und die virtuellen Schnittstellen konfiguriert. Falls nach dem "Hochfahren" keine xenbr0 in der Ausgabe von #ifconfig auftauchen sollte, kann das mehrere Ursachen haben:
- Die Anzahl der zur Verfügung stehenden Loopback-Gerätes des Xen-Dom0-Kernels ist zu gering.
- Das Script /etc/xen/scripts/network-bridge ermittelt die Gerätenummer der angeschlossenen Netzwerkkarte nicht korrekt.
Falls die virtuellen Netzwerkgerät vorhanden sind, kann mit der Installation eines Xen-Gastes begonnen werden.
Xen-Gast installieren
Eine Xen-Gastmaschine (auch: domU, virtuelle Maschine/VM) wird physisch in der Domain 0 gehalten. Hierfür werden
- entweder Datenträger-Abbilder
- oder Block-Devices
eingesetzt. Die Block-Geräte werden in zwei Typen unterteilt:
- lokale Blockgeräte (Festplatte und Partition)
- netzweite Blockgeräte (NFS, iSCSI, Infiniband ...)
Der Xen-Gast benötigt ein Root-Filesystem, welches entweder von der Domain-0 zur Verfügung gestellt wird oder anderweitig über die Gast-Konfiguration.
Im Rahmen dieses HOWTOs wird der Speichertyp Datenträger-Abbild behandelt, da dieser einfach in der Handhabung ist.
Fedora domU Installations-Script
Ein recht komfortables Installations-Script, welches in Python realisiert wurde, kann für die Installation eines Fedora Gast-System verwendet werden:
/usr/sbin/virt-install
Allerdings benötigt das Script Zugriff auf eine Fedora Netzwerk-Installation über HTTP, FTP oder NFS, welches auf das Root-Verzeichnises eines gemounteten ISO-Images entsprechen kann. In unserem Beispiel verwenden wir folgende Quelle:
http://ftp.uni-koeln.de/mirrors/fedora/linux/releases/9/Fedora/i386/os/
Das Schöne ist, dass das Script fast ein "all in one" partitioniertes Datenträger-Abbild (xvda-Device) angelegt, welches neben der Gastinstallation auch den xen-Kernel, Module und eine swap-Partition enthalten kann.
| | <b>Achtung:</b> Das Installations-Script prüft leider nicht, ob genügend freier Arbeitsspeicher für den Installationsvorgang des Xen-Gastes zur Verfügung steht. |
Ohne Angaben von Parametern wird das Script /usr/sbin/virt-install im Assistenten-Modus gestartet, welches interaktiv Informationen abfragt.
1. Zuerst geben Sie Namen des Xen-Gasts an. Der Name entspricht dem Dateinamen der Xen-Gast-Konfigurationsdatei /etc/xen/<name> sowie der Erkennungsnamen des Xen-Gasts. (z.B. F9)
2. Danach wird der Arbeitsspeicher zum Zeitpunkt des Bootvorgangs erfragt. Es sollte mind. 256 MB zur Verfügung stehen ansonsten könnte der Installationsvorgang abbrechen.
3. Geben Sie nun Pfad+Dateiname des Datenträger-Images an. (z.B. /home/xen/F9.disk)
4. Das Datenträger-Image sollte mind. 2 GB groß sein.
5. Falls die Installation grafisch über VNC erfolgen soll, benötigt man den Grafik-Support. (z.B. no)
6. Zuletzt muss die Installationsquelle angegeben werden. (z.B. http://ftp.uni-koeln.de/mirrors/fedora/linux/releases/9/Fedora/i386/os/)
Der Aufruf kann natürlich auch im Batch-Modus erfolgen. Eine Auflistung der Paramter erhält man mit dem Aufruf /usr/sbin/virt-install --help.
domU: Verwendung eines per "dd" erstellten ISO-Abbildes
Hier gehen wir davon aus, dass Sie von einem bereits vollständig installierten und von Xen unterstütztem System per "dd" ein ISO Abbild erstellt oder Sie ein bereits vorbereitetes Abbild von Jailtime heruntergeladen haben. Dieses kann mit Xen als DomU gebootet werden.
Um dieses zu realisieren, müssen folgende Voraussetzungen erfüllt sein:
- Die Pakete xen und xen-kernel müssen installiert sein.
- Das erstellte ISO-Abbild muss unter /var/lib/xen/images/ abgelegt werden, damit keine Probleme mit SELinux entstehen.
Initrd erstellen
Da die Default-Initrd aus mir nicht erklärlichen Gründen die Module:
- xenblk
- xennet
nicht enthalten, ist es notwendig, sich eine neue Initrd zu bauen. Dafür mounten wir das ISO-Abbild mit dem folgenden Befehl:
und führen dann:
aus, um eine neue Initrd mit dem Namen /boot/xen-initrd.img mit dem aktuellen Kernel-2.6.19-1.2911.6.5.fc6xen zu bauen.
Kernel-Module kopieren
Um die die Module des Kernels auch in DomU verfügbar zu machen, kopieren wir diese:
Login-Konsole in der DomU
Bei Centos 4.4, OpenSuse 10.2 sowie Debian 3.1 hält der Bootprozess ohne Fehlermeldung kurz vor dem Login an. Folgender Workaround löst dieses Problem:
In der /etc/inittab die Zeile:
Centos 4.4
1:2345:respawn:/sbin/mingetty tty1
mit:
1:2345:respawn:/sbin/mingetty console
Debian 3.1
1:2345:respawn:/sbin/getty 38400 tty1
mit:
1:2345:respawn:/sbin/getty 38400 console
OpenSuSE 10.2
1:2345:respawn:/sbin/mingetty --noclear tty1
mit:
1:2345:respawn:/sbin/mingetty console
ersetzen.
Nachdem wir diese Schritte in die Tat umgesetzt haben, können wir das Image per:
wieder aushängen und uns dem Erstellen einer Konfigurationsdatei für die DomU widmen:
DomU Konfigurationsdatei
Diese sollte, wie hier in meinem Beispiel für Centos 4.4, folgendes enthalten:
<b>centos.4-4.xen3.cfg:</b>
kernel = "/boot/vmlinuz-2.6.19-1.2911.6.5.fc6xen" ramdisk = "/boot/xen-initrd26191291165.img" memory = 512 name = "centos.4-4" vif = [ '' ] dhcp = "dhcp" disk = ['file:/var/lib/xen/images/centos.4-4.img,sda1,w', 'file:/var/lib/xen/images/centos.swap,sda2,w']
Die Konfiguration solltest du an deine DomU anpassen.
Booten der DomU
Nachdem wir alles erledigt haben, können wir nun die DomU mit dem Befehl:
booten! <DomU> wird dabei durch den Namen der Konfigurationsdatei für DomU ersetzt! In meinem Beispiel wäre dies:
Starten einer grafischen Oberfläche in der DomU
Mit Xen in der Version 3.03 ist es noch nicht möglich direkt in eine grafische Oberfläche zu booten. Hier kann man sich mit VNC behelfen.
Voraussetzung ist das man folgende Pakete in Dom0 und DomU installiert hat:
- vnc-server
- vnc
Nachdem man die DomU erfolgreich gebootet und sich auf einer Konsole eingeloggt hat, führt man den Befehl:
vncserver
aus. Nach dem setzen eines Passworts wird eine Konfigurationsdatei erzeugt, die sich bei einem normalen User in seinem Home Verzeichnis befindet.
Hier zum Beispiel:
/home/user/.vnc/xstartup
welche in der Regel so aussieht:
#!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm &
Um nun anstatt TWM ein anderes Desktop Environment zu starten, kann man die Konfigurationsdatei zu diesem Zweck anpassen. In dem folgenden Beispiel wollen wir uns bei OpenSuse 10.2 nach dem Einloggen per VNC auf einem GNOME Desktop wiederfinden:
#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid grey xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & #twm & /opt/gnome/bin/gnome-session &
Nachdem wir nun die nötigen Einstellungen vorgenommen und vncserver mit der neuen Konfiguaration gestartet haben, können wir uns von Dom0 aus mit VNCVIEWER per:
vncviewer [IP DomU]:[Displayname von vncserver in der DomU]
Beispiel:
vncviewer 192.168.1.1:1
einloggen.
Tipps
Bei Opensuse 10.2 erwies es sich als hilfreich, /dev/sda1 für das Root Filesystem und /dev/sdb für SWAP in der Konfigurationsdatei, sowie in der /etc/fstab durch /dev/xvda bzw. /dev/xvdb zu ersetzen.
Nach dem booten der DomU kam es bei den von mir beschriebenen Distributionen zu einer CPU-Auslastung von 99%. Wie sich herausstellte, scheint dies ein Problem mit udev zu sein. Ein top enttarnte den Prozess nash-hotplug als Verursacher der hohen CPU Last.
Dieser Prozess kann meiner Erfahrung nach ohne Probleme mit einem:
kill <pid nash-hotplug>
beendet werden.</pre>
Xen-Gast steuern
Neben dem xend-Dienst, welcher sämtliche Xen-Domains verwaltet, dient das Kommandozeilen-Programm xm zur Steuerung der Domains.
Damit xm gestartet werden kann, muß der xend Daemon laufen und der Aufruf unter root-Berechtigung erfolgen.
Der Aufruf von xm erfolgt nach folgendem Schema
Über
erhalten Sie eine Übersicht über alle Kommandos. Natürlich gibt es auch eine man-Page, die über
aufgerufen wird.
Siehe auch
Bücher
- Das Xen KochbuchHans-Joachim Picht: Xen Kochbuch. O'Reilly Verlag, Köln 2009, ISBN 978-3-89721-729-4.

