Installation von Xen auf einem Ubuntu 8.04 (Hardy Heron) Server aus den Ubuntu Paketdatenbanken

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht Schritt für Schritt, wie man Xen auf einem Ubuntu Hardy Heron (Ubuntu 8.04) Server System (i386) installiert. Du kannst jegliche Software, die hier verwendet wird, in den Ubuntu Paketdatenbanken finden, externe Dateien (abgesehen von einem reparierten Ubuntu Xen Kernel um den Netzwerkbetrieb für die virtuellen Maschinen zu aktivieren) oder Kompilationen werden nicht benötigt.

Mit Xen kannst Du Gastbetriebssysteme (*nix Betriebssystme wie Linux und FreeBSD), so genannte"virtuelle Maschinen" oder domUs, unter einem Hostbetriebssystem (dom0) erstellen. Mit Xen kannst Du Deine Anwendungen in verschiedene virtuelle Maschinen aufteilen, die voneinander völlig unabhängig sind, und trotzdem die gleiche Hardware verwenden (z. Bsp. eine virtuelle Maschine für den Mail Server, eine virtuelle Maschine für eine viel besuchte Webseite, eine andere Maschine, die Deine Kundenwebseiten bedient, eine virtueller Maschine für DNS etc.). Dies spart Geld aber was weitaus wichtiger ist: Es ist sicherer. Wenn die virtuelle Maschine Deines DNS Servers gehackt wird, hat dies keinen Einfluss auf Deine anderen virtuellen Maschinen. Außerdem kannst Du virtuelle Maschinen von einem Xen Server zum nächsten schieben.

Ich verwende Ubuntu Hardy Heron (i386) und Ubuntu Hardy Heron für das Host OS (dom0) sowie Ubuntu Gutsy Gibbon (7.10) für das Gastbetriebssystem (domU). Andere Debian-basiere Distributionen, die mti den xen-tools installiert werden können, sind Debian Etch, Debian Lenny, Debian Sid und Debian Sarge, sowie Ubuntu Dapper Drake, Ubuntu Edgy Eft und Ubuntu Feisty Fawn.

Diese Anleitung ist ein praktischer Leitfaden; theoretisches Hintergrundwissen wird nicht abgedeckt. Dies wird in einer Vielzahl anderer Dokumente im Internet abgehandelt.

Diese Anleitung ist ohne jegliche Gewähr! Ich möchte an dieser Stelle darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten dieses Ziel zu erreichen- die ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Installation des Ubuntu Hardy Heron Hostsystems (dom0)

Du kannst das Hostsystem (dom0) nach der Anleitung dieses Tutorials (Schritt 1 bis 10) installieren: http://www.howtoforge.com/perfect-server-ubuntu8.04-lts (natürlich musst Du dies nicht tun, wenn Du bereits ein Ubuntu 8.04 Hostsystem hast, das Du verwenden möchtest).

Vergewissere Dich, dass Du als Root angemeldet bist (gib Folgendes ein

sudo su

um Root zu werden), da wir alle Schritte dieser Anleitung als Root Benutzer ausführen müssen. Auch wenn Du vi als Text Editor verwenden möchtest (was empfohlen wird), solltest Du dies ausführen

apt-get install vim-full

Mit dem vim-full Paket wird sicher gestellt, dass sich der vi Text Editor wie erwartet verhält (ohne vim-full könntest eventuelle ein seltsames Verhalten im vi Text Editor feststellen).

Es ist keine schlechte Idee, AppArmor zu deaktivieren:

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove

dom0s FQDN wird in diesem Beispiel server1.example.com. sein. server1.example.coms IP Adresse wird 192.168.0.100 sein und das Gateway, das ich verwende, ist 192.168.0.1. Also müssen es auch die virtuellen Maschinen verwenden.

2 Installation von Xen

Um Xen und alle benötigten Abhängigkeiten zu installieren, müssen wir nur folgenden Befehl ausführen:

apt-get install ubuntu-xen-server

Somit wird auch das xen-tools Paket installiert, das wir später verwenden, um virtuelle Maschinen zu erstellen.

Das ubuntu-xen-server Paket installiert den Ubuntu Kernel 2.6.24-16-xen; leider gibt es in diesem Kernel einen blöden Fehler, der verursacht, dass der Netzwerkbetrieb bei den virtuellen Maschinen nicht funktioniert (siehe https://bugs.launchpad.net/ubuntu/+source/xen-3.2/+bug/204010 und https://bugs.launchpad.net/ubuntu/+source/linux/+bug/218126). Glücklicherweise hat Hirano Takahito diesen Kernel gepatcht und die gepatchte Version (für i386 und amd64) auf http://www.il.is.s.u-tokyo.ac.jp/~hiranotaka/ (ich habe von diesen Paketen einen Spiegel auf http://downloads.howtoforge.com/ubuntu_8.04_server_xen_from_repositories/ erstellt, für den Fall, dass der ursprüngliche Link irgendwann nicht mehr funktioniert) zur Verfügung gestellt. Lade das richtige linux-image Paket für Deine Architektur runter (i386 oder amd64), z.B.:

wget http://www.il.is.s.u-tokyo.ac.jp/~hiranotaka/linux-image-2.6.24-16-xen_2.6.24-16.30zng1_i386.deb

Ersetze dann den Ubuntu 2.6.24-16-xen Kernel wie folgt:

dpkg -i linux-image-2.6.24-16-xen_2.6.24-16.30zng1_i386.deb

Führe als Nächstes dies aus:

mv /lib/tls /lib/tls.disabled

Immer wenn wir unser System starten, müssen wir das loop Modul hinzufügen, also bearbeiten wir /etc/modules. Falls Du dort bereits eine loop Zeile haben solltest, bearbeite sie so, dass sie wie folgt aussieht; füge sie ansonsten hinzu:

vi /etc/modules


[...]
loop max_loop=64 [...]
Sie Dir nun das /boot Verzeichnis an um herauszufinden, welche Kernel und Ramdisks installiert sind:

ls -l /boot/


root@server1:~# ls -l /boot/
total 34380
-rw-r--r-- 1 root root 426444 2008-04-10 18:55 abi-2.6.24-16-server
-rw-r--r-- 1 root root 80203 2008-04-10 18:55 config-2.6.24-16-server
-rw-r--r-- 1 root root 85149 2008-04-19 23:17 config-2.6.24-16-xen
drwxr-xr-x 2 root root 4096 2008-05-06 15:19 grub
-rw-r--r-- 1 root root 7323503 2008-04-24 11:47 initrd.img-2.6.24-16-server
-rw-r--r-- 1 root root 7047843 2008-04-24 11:45 initrd.img-2.6.24-16-server.bak
-rw-r--r-- 1 root root 7056979 2008-05-06 15:19 initrd.img-2.6.24-16-xen
-rw-r--r-- 1 root root 7062168 2008-05-06 15:09 initrd.img-2.6.24-16-xen.bak
-rw-r--r-- 1 root root 103204 2007-09-28 12:06 memtest86+.bin
-rw-r--r-- 1 root root 933296 2008-04-10 18:55 System.map-2.6.24-16-server
-rw-r--r-- 1 root root 883544 2008-04-19 23:17 System.map-2.6.24-16-xen
-rw-r--r-- 1 root root 1987288 2008-04-10 18:55 vmlinuz-2.6.24-16-server
-rw-r--r-- 1 root root 1730344 2008-04-19 23:17 vmlinuz-2.6.24-16-xen
-rw-r--r-- 1 root root 370610 2008-04-11 03:16 xen-3.2.gz
root@server1:~#

Der /boot/vmlinuz-2.6.24-16-xen Kernel ist der neue, gepatchte Xen Kernel und /boot/initrd.img-2.6.24-16-xen ist seine Ramdisk. Wir brauchen beides gleich.

Du kannst Dir nun auch das /usr/lib/xen-tools Verzeichnis ansehen, da es offenlegt, welche Distributionen in einer virutellen Maschine mit den xen-tools installiert werden können:

ls -l /usr/lib/xen-tools


root@server1:~# ls -l /usr/lib/xen-tools
total 36
drwxr-xr-x 2 root root 4096 2008-05-06 15:08 centos-4.d
drwxr-xr-x 2 root root 4096 2008-05-06 15:08 centos-5.d
-rwxr-xr-x 1 root root 4409 2008-04-06 03:12 common.sh
drwxr-xr-x 2 root root 4096 2008-05-06 15:08 dapper.d
drwxr-xr-x 2 root root 4096 2008-05-06 15:08 debian.d
drwxr-xr-x 2 root root 4096 2008-05-06 15:08 edgy.d
lrwxrwxrwx 1 root root 8 2008-05-06 15:08 etch.d -> debian.d
lrwxrwxrwx 1 root root 15 2008-05-06 15:08 fedora-core-4.d -> fedora-core-6.d
lrwxrwxrwx 1 root root 15 2008-05-06 15:08 fedora-core-5.d -> fedora-core-6.d
drwxr-xr-x 2 root root 4096 2008-05-06 15:08 fedora-core-6.d
lrwxrwxrwx 1 root root 15 2008-05-06 15:08 fedora-core-7.d -> fedora-core-6.d
lrwxrwxrwx 1 root root 6 2008-05-06 15:08 feisty.d -> edgy.d
drwxr-xr-x 2 root root 4096 2008-05-06 15:08 gentoo.d
lrwxrwxrwx 1 root root 6 2008-05-06 15:08 gutsy.d -> edgy.d
lrwxrwxrwx 1 root root 6 2008-05-06 15:08 hardy.d -> edgy.d
lrwxrwxrwx 1 root root 8 2008-05-06 15:08 lenny.d -> debian.d
lrwxrwxrwx 1 root root 8 2008-05-06 15:08 sarge.d -> debian.d
lrwxrwxrwx 1 root root 8 2008-05-06 15:08 sid.d -> debian.d
root@server1:~#

Wie Du siehst können wir folgende Distributionen installieren:

  • Debian: Etch, Lenny (Testing), Sid (Unstable), Sarge
  • Ubuntu: Dapper Drake, Edgy Eft, Feisty Fawn, Gutsy Gibbon, Hardy Heron
  • CentOS 4, CentOS 5
  • Fedora Core 4, 5, 6, Fedora 7
  • Gentoo
(Ich habe noch nicht versucht CentOS, Fedora und Gentoo mit den xen-tools zu installieren. Ich kann also nicht sagen, wie gut das funktioniert.)

Ich möchte meine virtuellen Maschinen im /home/xen Verzeichnis ablegen, daher erstelle ich dieses nun:

mkdir /home/xen

Wir werden xen-tools verwenden, um virtuelle Maschinen zu erstellen. Mit den xen-tools kann man virtuelle Maschinen sehr einfach erstellen - sieh Dir bitte folgendes Tutorial an um mehr zu erfahren: http://www.howtoforge.com/xen_tools_xen_shell_argo. Wie bereits erwähnt, ist das xen-tools Paket zusammen mit dem ubuntu-xen-server Paket installiert worden.

Nun bearbeiten wir /etc/xen-tools/xen-tools.conf. Diese Datei enthält die Standardwerte, die vom xen-create-image Skript verwendet werden, sofern Du keine anderen Werte in der Kommandozeile definierst. Ich habe folgende Werte geändert und habe den Rest so gelassen:

vi /etc/xen-tools/xen-tools.conf


[...]
dir = /home/xen [...] dist = hardy # Default distribution to install. [...] gateway = 192.168.0.1 netmask = 255.255.255.0 broadcast = 192.168.0.255 [...] passwd = 1 [...] mirror = http://archive.ubuntu.com/ubuntu/ [...]
Die dist Zeile beinhaltet die Standard Distribution, die Du in einer virtuellen Maschine installieren möchtest. Der Inhalt des /usr/lib/xen-tools Verzeichnisses zeigt, welche Distributionen verfügbar sind (siehe oben).

Die kernel Zeile muss unseren Xen Kernel und die initrd Zeile seine Ramdisk enthalten. Die Standard /etc/xen-tools/xen-tools.conf Datei hat die Werte kernel = /boot/vmlinuz-`uname -r` und initrd = /boot/initrd.img-`uname -r` was automatisch zum richtigen Kernel und zur Ramdisk führt, also müssen wir diese Zeilen nicht modifizieren.

Mit der passwd = 1 Zeile kannst Du ein Root Passwort festlegen, wenn Du eine neue Gastdomain erstellst. In der mirror Zeile legst Du einen Ubuntu Spiegel fest, der sich in Deiner Nähe befindet.

Gib Acht, dass Du ein Gateway und eine Netzmaske festlegst. Wenn Du dies in der Kommandozeilen nicht festlegst wenn Du xen-create-image verwendest, haben Deine Gastdomains keinen Netzwerkbetrieb, selbst wenn Du eine IP Adresse festgelegt hast!

Starte das System neu:

reboot

Wenn Dein System ohne Probleme neu startet, dann ist alles in bester Ordnung!

Führe dies aus

uname -r

und Dein neuer Kernel sollte auftauchen:

root@server1:~# uname -r
2.6.24-16-xen
root@server1:~#

3 Virtuelle Maschinen (domU) erstellen

Lass uns nun unsere erste Gastdomain xen1.example.com mit Hardy Heron (hardy) und der IP Adresse 192.168.0.101 erstellen:

xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide
--ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
--dir=/home/xen --memory=64Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.24-16-xen
--initrd=/boot/initrd.img-2.6.24-16-xen --install-method=debootstrap --dist=hardy
--mirror=http://archive.ubuntu.com/ubuntu/ --passwd

Viele Konfigurationsoptionen sind hier überflüssig, da wir die gleichen Angaben in /etc/xen-tools/xen-tools.conf festgelegt haben. Es wird jedoch angezeigt, dass Du die gewünschten Einstellungen entweder in der Kommandozeile oder in /etc/xen-tools/xen-tools.conf festlegen kannst. Bitte pass au, dass Du --ide definierst, sonst kann es sein, dass Deine virtuelle Maschine nicht startet!

(Um mehr über die verfügbaren Optionen zu erfahren, sieh Dir die xen-create-image Man Page an:

man xen-create-image

)

Der xen-create-image Befehl erstellt nun die xen1.example.com virtuelle Maschine für uns. Das kann einige Minuten in Anspruch nehmen. Die Ausgabe sollte ähnlich wie diese sein:

root@server1:~# xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide
> --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
> --dir=/home/xen --memory=64Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.24-16-xen
> --initrd=/boot/initrd.img-2.6.24-16-xen --install-method=debootstrap --dist=hardy
> --mirror=http://archive.ubuntu.com/ubuntu/ --passwd

General Information
--------------------
Hostname : xen1.example.com
Distribution : hardy
Partitions : swap 256Mb (swap)
/ 2Gb (ext3)
Image type : sparse
Memory size : 64Mb
Kernel path : /boot/vmlinuz-2.6.24-16-xen
Initrd path : /boot/initrd.img-2.6.24-16-xen

Networking Information
----------------------
IP Address 1 : 192.168.0.101 [MAC: 00:16:3E:62:DA:BB]
Netmask : 255.255.255.0
Broadcast : 192.168.0.255
Gateway : 192.168.0.1

Creating partition image: /home/xen/domains/xen1.example.com/swap.img
Done

Creating swap on /home/xen/domains/xen1.example.com/swap.img
Done

Creating partition image: /home/xen/domains/xen1.example.com/disk.img
Done

Creating ext3 filesystem on /home/xen/domains/xen1.example.com/disk.img
Done
Installation method: debootstrap
Done

Running hooks
Done

No role scripts were specified. Skipping


Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:
/var/log/xen-tools/xen1.example.com.log
root@server1:~#

0 Kommentar(e)

Zum Posten von Kommentaren bitte