Xen

Xen ist ein Virtuelle-Maschinen-Monitor (VMM), der auf einem Hostsystem praktisch beliebig viele Domains (DomUs) paravirtualisiert. Dabei wird eine sehr hohe Performance erzielt, da die physikalische Hardware nicht emuliert, sondern mit einem sehr kleinen Overhead direkt zur Verfügung gestellt wird.

Xen setzt eine Ebene unter den normalen Betriebssystemkerneln an und zieht eine abstrahierende Schicht zwischen der Hardware und den Gastsystemen ein; es wacht als ein so genannter Hypervisor über die Verteilung der Ressourcen – wie CPU-Zeit, I/O-Zyklen u. a. – an die Gast-Systeme.

Installation

Die Installation erfolgt analog zu dieser Anleitung. Bevor man aber Xen installieren kann, benötigt man ein möglichst frisches Ubuntu-System der Version 8.04 (Hardy). Nur bei Hardy ist Xen im Package-Repository enthalten und ermöglich eine einfache Installation. Nachfolgend die Befehle für Copy/Paste.

# Vorbereitende Maßnahmen:
sudo su -                    # root Rechte wenn nicht root
/etc/init.d/apparmor stop    # Apparmor stoppen und deinstallieren
update-rc.d -f apparmor remove

Dann sollte man noch ein paar Standard Pakete installieren, die auf keinem Server fehlen sollten:

apt-get install iptables cron ntpdate wget screen vim vim-doc vim-scripts p7zip pbzip2 zip unzip

Weiter geht es mit der Xen Installation:

apt-get install ubuntu-xen-server
mv /lib/tls /lib/tls.disabled  # tls deaktivieren wegen Performance Problemen

Hat man bei der Grundinstallation einen anderen Benutzer als "Xen" angelegt, ist es ratsam, dies jetzt nachzuholen. Der Heimordner von xen /home/xen kann auch perfekt für die images der DomUs dienen. Außerdem sollte man den root-Zugang über ssh deaktivieren.

adduser xen                  # Xen User für die Anmeldung erstellen (Passwort einrichten!)
adduser xen admin            # Falls nicht bei der Installation angelegt
vi /etc/ssh/sshd_config      # PermitRootLogin suchen und auf no setzen
sudo /etc/init.d/ssh restart # ssh neu starten

Nun müssen noch die Standard-Einstellungen für die Generierung von DomUs bearbeitet werden, bevor man den Server neu startet um den Xen-Kernel zu aktivieren:

vi /etc/xen-tools/xen-tools.conf  # Standard Einstellungen (IPs usw.) der DomUs bearbeiten
reboot

Nun läuft der Xen-Server und man kann auf einfache Art und Weise mit diesem Befehl eine Xen-DomU erstellen:

xen-create-image -hostname=host.domain.lan -ide -force -ip=192.168.1.1 -size=4G

Für weitere Details sollte man sich die man Seite anschauen:

man xen-create-image

Xen-Befehle

xm create -c /path/to/config    # eine virtuelle Maschine starten
xm shutdown NAME                # eine virtuelle Maschine stoppen
xm destroy NAME                 # eine virtuelle Maschine sofort stoppen ohne sie runter zu fahren
xm list                         # alle laufenden Systeme auflisten
xm console NAME                 # sich auf einer virtuellen Maschine anmelden
xm help                         # Liste aller Befehle

Links

Howto für Ubuntu 8.04 (Hardy) und Xen

Howtos und Anleitungen zum Einrichten und Einstellen

FAQ

Uhrzeit in DomU stimmt nicht und lässt sich nicht einstellen

In der DomU:
echo 1 > /proc/sys/xen/independent_wallclock           # Uhr von der Dom0 unabhängig machen
echo xen.independent_wallclock=1 >> /etc/sysctl.conf   # Uhr von der Dom0 unabhängig machen (auch nach einem Reboot)
ntpdate pool.ntp.org                                   # Zeit mit Zeitserver abgleichen
Falls ntpdate nicht installiert ist:
apt-get install ntpdate
Installieren als cronjob:
crontab -e
#Setup NTPDATE
@hourly /etc/network/if-up.d/ntpdate

Benutzern den Zugriff auf ssh verbieten oder erlauben

In die Datei /etc/ssh/sshd_config folgende Zeilen einfügen:
#AllowUsers benutzer1 benutzer2    # Nur benutzer1 und benutzer2 haben Zugriff
#AllowGroups gruppe1 gruppe2       # Nur Mitglieder dieser Gruppen haben Zugriff
#DenyUsers benutzer3 benutzer4     # Diese Benutzer haben keinen Zugriff
#DenyGroups gruppe3 gruppe4        # Mitglieder dieser Gruppen auch nicht
Eine Übersicht aller vorhandenen Benutzer erhält man mit
less /etc/passwd

Probleme mit der Lokalisierung (wenn nach der DomU-Installation alles auf POSIX steht)

apt-get install manpages-de doc-linux-de manpages-de-dev
locale-gen de_DE.UTF-8
# Einfügen in /etc/environment
LANGUAGE=de_DE.UTF-8 >> /etc/environment
LC_ALL=de_DE.UTF-8 >> /etc/environment
LANG=de_DE.UTF-8 >> /etc/environment

pam_env(sshd:setcred): Unable to open env file: /etc/default/locale: No such file or directory

Problem mit der Lokalisierung (Lösungsvorschlag siehe hier)
echo LANG="de_DE.UTF-8" >> /etc/default/locale
chown root:root /etc/default/locale
chmod 644 /etc/default/locale

test: =: unary operator expected

Beim Booten erhält man die Fehlermeldung test: =: unary operator expected. Um diesen Bug zu fixen muss man als root folgende Schritte durchführen:
vi /etc/init.d/xendomains
Die Zeile
rest=`echo "$1" | cut cut -d\  -f2-
muss dann mit folgender Zeile ersetzt werden
rest=`echo "$1" | cut -d\  -f2-

TLS deaktivieren

Aus Performance-Gründen sollte man auf seinem Xen-System sowohl in Dom0 als auch allen DomUs TLS deaktivieren:
mv /lib/tls /lib/tls.disabled
Andernfalls kann es zu den verschiedensten Fehlermeldungen kommen...

X-Server in DomU ohne KDE/Gnome GUI

Um einen X-Server zum Laufen zu bringen ohne die Schwergewichte KDE oder Gnome installiert man xorg ohne GUI:

apt-get install xorg x11-apps

Nach einem Reconnect (via PuTTY/SSH) kann mittels xeyes auf der Konsole nun überprüft werden, ob der X-Server läuft.

DomU-Image vergrößern

Um das Image einer DomU zu vergrößern geht man so vor:

cd /home/xen/domains/domU    # domU vergrößern
dd if=/dev/zero bs=1024k count=512 >> disk.img   # Image um 512 MB vergrößern
e2fsck -c disk.img
resize2fs -f disk.img

DomU-Image mounten

Um das Image einer DomU zu mounten, um es z.B. zu bearbeite verwendet man:

mount -o loop,rw disk.img ../mount   # Verzeichnis ../mount muss existieren
# bearbeiten...
umount ./mount
Valid XHTML 1.0 Transitional :: Valid CSS