Erstellung von Gästen für Xen (DomU)
Die verschiedenen DomUs sind die virtuellen Maschinen („Gäste“) oberhalb der dom-0. Die Erstellung mit dem Xen-Tools sollte auf allen Systemen gleich sein. Eine manuelle Variante (ohne Xen-Tools) wird auch beschrieben.
Es wird (bisher) nur die Erstellung von Images (und die Benutzung mit loop) beschrieben. Es geht auch mit LVM.
fertige Xen-Images
Auf diesen Seiten gibt es fertige Xen-Images zum runterladen:
Die XenServer Produkte unterstützen das Xen Virtual Appliance (XVA) Format, das man mit einer grafischen Schnittstelle oder auf der Kommandozeile mit „xe“ importieren kann.
eine paravirtualisierte DomU erstellen (Xen-tools)
- In der Datei
/etc/xen/xend-config.sxp
die gewünschten Änderungen vornehmen, z.B. die Zeile(network-script network-dummy)
durch(network-script network-bridge)
ersetzen. - Mit den Xen-Tools ist eine VM schnell erstellt:
xen-create-image --hostname debian --dhcp --dir /srv/xen
Das Beispiel erstellt zwei Images (eins für das swap-file, eins für das root-Dateisystem) im Verzeichnis /srv/xen (es wird automatisch das Unterverzeichnis domains angelegt) mit dem Namen debian. Die Konfiguration sieht dann nach Anpassung so aus (die letzte Zeile z.B. hinzugefügt werden).
Ohne DHCP und mit fester IP sieht der Anruf so aus:
xen-create-image --hostname debian --ip 192.168.0.1 --dir /srv/xen
bei --dir sollte in der Pfadangabe hinten kein Slash (/) am Pfadnamen stehen.
# # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.22-14-xen' ramdisk = '/boot/initrd.img-2.6.22-14-xen' memory = '128' # # Disk device(s). # root = '/dev/sda1 ro' disk = [ 'file:/domains/debian/disk.img,sda1,w', 'file:/domains/debian/swap.img,sda2,w' ] # # Hostname # name = 'debian' # # Networking # dhcp = 'dhcp' vif = [ 'bridge=xenbr0' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' extra='xencons=tty'
eine vollvirtualisierte DomU erstellen (Windows, Xen-Tools)
Bei entsprechender Hardwareunterstützung können auch nicht angepasste Betriebssysteme, d.h. solche ohne eigenen Hypervisor (wie Windows), betrieben werden. Diese laufen allerdings nicht ganz so schnell, da die Treiber nicht angepasst sind. Novell (Virtual Machine Driver Pack) und XenSource (XenSource Windows Tools) bieten jeweils angepasste Treiber, die jedoch nicht kostenlos sind.
Zuerst sollte man sich ein Image erstellen (siehe oben: manuelle Erstellung) außerdem muss man eine Konfiguration anlegen:
# WinXP sample config kernel = '/usr/lib/xen-3.0.3-1/boot/hvmloader' builder = 'hvm' memory = '384' name = 'winxp1' device_model= '/usr/lib/xen-3.0.3-1/bin/qemu-dm' boot ='d' disk = [ 'file:/domains/winxp/winxp.img,ioemu:hda,w', 'file:/domains/WinXP.ISO,hdc:cdrom,r' ] # # Networking # #dhcp = 'dhcp' vif = [ 'type=ioemu, bridge=xenbr0' ] vnc=1 vncpasswd='winxp' vnclisten='0.0.0.0' # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Zu Erklärung:
/domains/winxp/winxp.img
ist das oben angelegte Image auf das vom- CD-Image
/domains/WinXP.ISO
installiert wird. - Die Anzeige der grafischen Oberfläche wird mit VNC realisiert, auf das unter allen IP-Adressen (vnclisten='0.0.0.0') mit dem Passwort winxp zugegriffen werden kann. Dann kann man sich mit
vncviewer DOM-0-HOSTNAME:0
dorthin verbinden.
Nach der Installation
boot ='d'
auf
boot ='c'
setzen.
Abänderungen
- Um ein CD-ROM Laufwerk als Installationsquelle zu benutzen:
disk = [ 'file:/srv/xen/domains/lexware/lexware-c.img,ioemu:hda,w', 'phy:/dev/cdrom,hdc:cdrom,r' ]
- Feste IP:
vif = [ 'ip=192.168.0.13, type=ioemu, bridge=xenbr0' ]
Links
manuelle Erstellung
Wenn die Xen-Tools nicht zur Verfügung stehen (oder man eine grundsätzliches Verständnis bekommen will) ist die manuelle Erstellung eine Alternative.
Dazu
- erzeugt man ein Image (die spätere Systempartition erstellen) mit dem Befehl
dd if=/dev/zero of=IMAGENAME.IMG count=0 bs=1024k seek=5000
hier wird also die Datei IMAGENAME.IMG mit 5 GB Speicher angelegt. Dieser wird allerdings noch nicht voll belegt, da hier eine Sparse-Datei angelegt wurde. Da die Datei bisher leer ist, werden wir
- ein Dateisystem im Image anlegen:
mkfs.ext3 IMAGENAME.IMG
.
(weiter)
xt-install-image Install a new distribution. xt-customize-image Run a collection of hook scripts to customise the freshly installed system. xt-create-xen-config Create a configuration file in /etc/xen so that xm can create the new image.
Images vergrößern (resize)
Vorher sollte das Gastsystem runtergefahren werden.
Die Änderung ist schnell erledigt: Im ersten Schritt wird das Image durch anhängen von Nullen um 1GB vergrößert und anschließend auch das (ext3) Dateisystem.
dd if=/dev/zero bs=1024000 count=1024 >> disk.img resize2fs -f disk.img
Wer mehr oder weniger als 1GB vergrößern muss natürlich die Zahlen entsprechend (so dass die Multiplikation der Zahlen von bs und count die gewünschte Kapazität ergibt) anpassen.
Anschließend ggf. das LVM anpassen.
Ubuntu
Für Ubuntu gibt es in Etch keine passenden Scripte von debootstrap. Zwar wird dapper als unterstützt angegeben, aber es ist trotzdem nix da.
Also laden wir uns ein aktuelles debootstrap von Ubuntu:
wget http://archive.ubuntulinux.org/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.8_all.deb dpkg -i debootstrap_1.0.8_all.deb
We're trying to configure an installation of gutsy in /srv/xen - but there is no hook directory for us to use. This means we don't know how to configure this installation. We'd expect the hook directory to be : /usr/lib/xen-tools/gutsy.d
Im Verzeichnis /usr/lib/xen-tools legt man also noch einen Verweis auf ubuntu.d
an:
ln -s ubuntu.d gutsy.d