Xen

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche


Bild:edit.png Dieser Artikel ist noch nicht vollständig. Du kannst helfen, ihn zu bearbeiten.
Dieser Artikel ist Teil der HOWTO Sammlung

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:

[root]# yum install kernel-xen xen virt-manager

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:

  1. Die Anzahl der zur Verfügung stehenden Loopback-Gerätes des Xen-Dom0-Kernels ist zu gering.
  2. 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


<b>Achtung</b> <b>Achtung:</b> Falls auf dem Wirt-System SELinux aktiviert und im Enforcing-Mode läuft, müssen Xen-Guest-Abbilder zwingend in /var/lib/xen/images abgelegt werden. Ansonsten wird nach dem Starten der Gast-Installation keine Harddisk gefunden

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:

  1. lokale Blockgeräte (Festplatte und Partition)
  2. 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> <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:

[root]# mount -o loop /var/lib/xen/images/<mein.image.iso> /home/user/mnt/

und führen dann:

[root]# mkinitrd -f --with=ext3 --preload=ext3 --with=xennet --builtin=aic7xxx --builtin=serverworks --preload=xenblk --omit-raid-modules --omit-lvm-modules --fstab=/home/user/mnt/etc/fstab /boot/xen-initrd.img 2.6.19-1.2911.6.5.fc6xen

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:

[root]# cp -r /lib/modules/<aktueller Kernel> /home/user/mnt/lib/modules/


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:

[root]# umount /home/user/mnt/

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:

[root]# xm create -c <DomU>.cfg

booten! <DomU> wird dabei durch den Namen der Konfigurationsdatei für DomU ersetzt! In meinem Beispiel wäre dies:

[root]# xm create -c centos.4-4.xen3.cfg

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

[root]# xm <Kommando> [<Argument>] [<Variablen>]

Über

[root]# xm help [--long]

erhalten Sie eine Übersicht über alle Kommandos. Natürlich gibt es auch eine man-Page, die über

[root]# man xm

aufgerufen wird.

Siehe auch

Bücher

Persönliche Werkzeuge