xen:xen-installation-auf-einem-server

Xen-Installation auf einem Server (Debian)

Auf dieser Seite wir die Installation der Virtualisierungssoftware Xen auf einem Server (unter Debian Etch) beschrieben. Im Gegensatz zu Ubuntu (wo übrigens der Xen-Kernel nie so wirklich stabil war) ist bei Debian

  • bei Etch: Xen in der Version 3.0
  • bei Lenny: Xen in der Version 3.2

enthalten.

Die Erstellung von (DomU) wurde bereits beschrieben.

Zuerst müssen wir uns für das richtige Serverpaket (bzw. den richtigen Kernel) entscheiden, das hängt vor allem von der verwendeten Architektur ab (32 oder 64 Bit):

  • für 32Bit (i386): linux-image-xen-686 hängt vom aktuellsten Xen-Paket auf Kernel 2.6 ab,
  • für AMD64: linux-image-xen-amd64
  • für vollvirtualisierte Gäste zusätzlich: das Paket xen-ioemu-3.0.3-1

Ich gehen hier einmal von 32Bit (i386) aus und installiere die nötigen Pakete.

aptitude install linux-image-xen-686 xen-hypervisor-3.0.3-1-i386-pae xen-tools bridge-utils

Die xen-tools erleichtern das Anlegen von Gästen (Dom-U) durch Vorlagen für ein paar Systeme und tools erleichtern die Netzwerk-anbindung der Gäste.

Während der Installation wird auch der Bootmanager grub konfiguriert (Ausgabe von Etch).

Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found Xen hypervisor 3.0.3-1-i386-pae,  kernel: /boot/vmlinuz-2.6.18-5-xen-686
Found kernel: /boot/vmlinuz-2.6.18-5-686-bigmem
Updating /boot/grub/menu.lst ... done

:!: Der veraltete lilo läuft nicht ohne einen workaround mit Xen.

Die Konfigurationsdatei von grub (/boot/grub/menu.lst) enthält jetzt als ersten (Kernel-)Eintrag

title           Xen 3.0.3-1-i386-pae / Debian GNU/Linux, kernel 2.6.18-5-xen-686
root            (hd0,1)
kernel          /boot/xen-3.0.3-1-i386-pae.gz
module          /boot/vmlinuz-2.6.18-5-xen-686 root=/dev/md0 ro console=tty0
module          /boot/initrd.img-2.6.18-5-xen-686
savedefault

Diese Konfiguration verweist auf der PAE-Version von Xen und liegt auf einem Software-Raid (/dev/md0).

Die symbolischen Verweise im Wurzelverzeichnis / sollten von update-grub so aktualisiert worden sein, dass sie auf den Xen-Kernel zeigen:

user@host:/$ ls -l
lrwxrwxrwx  1 root root   33 2008-01-22 05:19 initrd.img -> /boot/initrd.img-2.6.18-5-xen-686
lrwxrwxrwx  1 root root   30 2008-01-22 03:41 vmlinuz -> /boot/vmlinuz-2.6.18-5-xen-686

Dateien in /boot

Datei Funktion
initrd.img-2.6.18-5-xen-686 Das initrd-Image für Xen
vmlinuz-2.6.18-5-xen-686 das Xen-Kernel-Image
xen-3.0.3-1-i386.gz bzw. mit PAE (siehe Fehlerbehebung) xen-3.0.3-1-i386-pae.gz der Hypervisor

Wiederum müssen wir uns für das richtige Serverpaket (bzw. den richtigen Kernel) entscheiden:

  • für 32Bit (i386): linux-image-2.6-xen-686
  • für AMD64: linux-image-2.6-xen-amd64
  • für vollvirtualisierte Gäste zusätzlich: FIXME (bisher nicht integriert?)
  • die administrativen Werkzeuge: xen-shell xen-tools xenstore-utils
  • optional könnte man die Dokumentation (xen-docs-3.2) und xenwatch noch dazu installieren.

Ich gehen hier einmal von 64Bit (AMD64) aus und installiere alle relevanten Pakete.

aptitude install linux-image-2.6-xen-amd64 xen-hypervisor-amd64 xen-shell xen-tools xenstore-utils

FIXME

Die Konfigurationsdatei /etc/xen/xend-config.sxp muss angepasst werden. Ein minimale Konfiguration im bridge-Modus wäre:

# -*- sh -*-
#
#
# Xend configuration file.
#
#
##
# To bridge network traffic, like this:
#
# dom0: fake eth0 -> vif0.0 -+
#                            |
#                          bridge -> real eth0 -> the network
#                            |
# domU: fake eth0 -> vifN.0 -+
#
# use
#
(network-script 'network-bridge antispoof=yes')
#
# If you are using only one bridge, the vif-bridge script will discover that,
# so there is no need to specify it explicitly.
#
(vif-script vif-bridge)
#
# Dom0 will balloon out when needed to free memory for domU.
# dom0-min-mem is the lowest memory level (in MB) dom0 will get down to.
# If dom0-min-mem=0, dom0 will never balloon out.
(dom0-min-mem 196)
#
# In SMP system, dom0 will use dom0-cpus # of CPUS
# If dom0-cpus = 0, dom0 will take all cpus available
(dom0-cpus 0)
  • Es wird also eine Bridge in der Datei eingerichtet, die Dom0 sendet über vif0.0 ihre Pakete ab.
  • Die Option antispoof=yes bestimmt, dass Gäste nur ihre eigene IP-Adresse verwenden.
  • Die Zeile
 (network-script network-dummy)

sollte zu

# (network-script network-dummy)

auskommentiert werden.

Xen stellt bei einem neustart des Systems (z. B. nach Sicherheitsupdates) die laufenden Gäste automatisch wieder her. Will man bei Systemstart nicht laufende Gäste starten, bietet sich einen symbolischer Link im Verzeichnis /etc/xen/auto an. Dieser Pfad kann in /etc/default/xendomains angepasst werden.