Installation von Xen auf CentOS 5.0 (i386)

Version 1.0
Author: Falko Timme


Diese Anleitung erklärt Schritt für Schritt, wie man Xen (Version 3.0.3) auf einem CentOS 5.0 System (i386) installiert.

Mit Xen kannst Du Gastbetriebssysteme (*nix Betriebssysteme wie Linux und FreeBSD), so genannte "virtuelle Maschinen" oder domUs unter einem Hostbetriebssystem (dom0) erstellen. Unter Verwendung von Xen kannst Du Deine Anwendungen in verschiedene virtuelle Maschinen aufteilen, die von einander vollkommen unabhängig sind (z.B. virtuelle Maschinen für einen Mail Server, eine virtuelle Maschine für eine vielbesuchte Webseite, eine andere virtuelle Maschine, die die Webseiten Deiner Kunden bedient, eine virtuelle Maschine für DNS, etc.), aber trotzdem die gleiche Hardware benutzen. Das spart Geld und was noch wichtiger ist: Es ist viel sicherer. Falls die virtuelle Maschine Deines DNS Servers gehackt wird, hat das keinen Einfluss auf Deine anderen virtuellen Maschinen. Außerdem kannst Du virtuelle Maschinen von einem Xen Server zum anderen bewegen.

Ich verwende CentOS 5.0 (i386) für das Hostbetriebssystem (dom0) und das Gastbetriebssystem (domU).

Diese Anleitung ist ein praktischer Leitfaden; theoretisches Hintergrundwissen wird nicht abgedeckt. Dies wird in zahlreichen anderen Dokumenten im Netz behandelt.

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 - dies ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Ich verwende folgende Partitionen auf meinem CentOS 5.0 Hostsystem (dom0):
  • /boot 150 MB (ext3)
  • swap 1GB
  • / 3GB (ext3)
  • /vm der Rest (ext3)
Ich werde die virtuellen Maschinen im /vm Verzeichnis erstellen; natürlich kannst Du auch jedes andere Verzeichnis nehmen, das genug Speicherplatz hat und Du keine extra Partition dafür erstellen musst. Wenn Du ein anderes Verzeichnis verwendest, ersetze /vm mit Deinem eigenen Verzeichnis in dieser Anleitung.

Wenn Du Deine virtuellen Maschinen auch in /vm speichern möchtest, Du dafür aber keine Partition erstellt hast oder wenn das Verzeichnis  /vm auf Deinem System nicht existiert, kannst Du es wie folgt erstellen:

mkdir /vm

(Bitte beachte: Du brauchst keine /boot Partition, aber dann solltest Du daran denken, dass die Grub Zeilen, die ich ind dieser Anleitung beschreibe, ein bisschen anders sind. Wenn ich z.B. schreibe, dass ich
[...]
title CentOS (2.6.18-8.1.4.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-8.1.4.el5 module /vmlinuz-2.6.18-8.1.4.el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.18-8.1.4.el5xen.img [...]
/boot/grub/menu.lst hinzufüge, dann solltest Du wahrscheinlich in dieser Datei stattdessen dies verwenden
[...]
title CentOS (2.6.18-8.1.4.el5xen) root (hd0,0) kernel /boot/xen.gz-2.6.18-8.1.4.el5 module /boot/vmlinuz-2.6.18-8.1.4.el5xen ro root=/dev/VolGroup00/LogVol00 module /boot/initrd-2.6.18-8.1.4.el5xen.img [...]
)

2 Installation von Xen

Um Xen zu installieren, führen wir einfach dies aus

yum install kernel-xen xen

Damit wird Xen und ein Xen Kernel auf unserem CentOS System installiert. Danach finden wir unseren neuen Xen Kernel (vmlinuz-2.6.18-8.1.4.el5xen) und seine Ramdisk (initrd-2.6.18-8.1.4.el5xen.img) in dem /boot Verzeichnis:

ls -l /boot/


[root@server1 ~]# ls -l /boot/
total 16327
-rw-r--r-- 1 root root 62154 Apr 9 16:30 config-2.6.18-8.1.1.el5
-rw-r--r-- 1 root root 61057 May 17 12:12 config-2.6.18-8.1.4.el5xen
-rw-r--r-- 1 root root 62150 Mar 16 01:19 config-2.6.18-8.el5
drwxr-xr-x 2 root root 1024 Jun 8 00:14 grub
-rw------- 1 root root 2318110 Apr 13 17:10 initrd-2.6.18-8.1.1.el5.img
-rw------- 1 root root 2320081 Jun 8 00:14 initrd-2.6.18-8.1.4.el5xen.img
-rw------- 1 root root 2318126 Apr 13 16:18 initrd-2.6.18-8.el5.img
drwx------ 2 root root 12288 Apr 13 16:05 lost+found
-rw-r--r-- 1 root root 80032 Apr 1 16:49 message
-rw-r--r-- 1 root root 83542 Apr 9 16:31 symvers-2.6.18-8.1.1.el5.gz
-rw-r--r-- 1 root root 84906 May 17 12:13 symvers-2.6.18-8.1.4.el5xen.gz
-rw-r--r-- 1 root root 83542 Mar 16 01:20 symvers-2.6.18-8.el5.gz
-rw-r--r-- 1 root root 884787 Apr 9 16:30 System.map-2.6.18-8.1.1.el5
-rw-r--r-- 1 root root 868062 May 17 12:12 System.map-2.6.18-8.1.4.el5xen
-rw-r--r-- 1 root root 884787 Mar 16 01:19 System.map-2.6.18-8.el5
-rw-r--r-- 1 root root 1765460 Apr 9 16:30 vmlinuz-2.6.18-8.1.1.el5
-rw-r--r-- 1 root root 2075341 May 17 12:12 vmlinuz-2.6.18-8.1.4.el5xen
-rw-r--r-- 1 root root 1765428 Mar 16 01:19 vmlinuz-2.6.18-8.el5
-rw-r--r-- 1 root root 274228 May 17 09:13 xen.gz-2.6.18-8.1.4.el5
-rwxr-xr-x 1 root root 608568 May 17 12:28 xen-syms-2.6.18-8.1.4.el5
[root@server1 ~]#

Bevor wir das System mit dem Xen Kernel starten können, müssen wir den Bootloader GRUB benachrichtigen. Wir öffnen /boot/grub/menu.lst:

vi /boot/grub/menu.lst

und fügen folgende Zeile über allen anderen Kernel Zeilen ein:
[...]
title CentOS (2.6.18-8.1.4.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-8.1.4.el5 module /vmlinuz-2.6.18-8.1.4.el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.18-8.1.4.el5xen.img [...]
Ändere dann den Wert von default zu 0:
[...]
default=0 [...]
Die vollständige /boot/grub/menu.lst sollte in etwa so aussehen:
# grub.conf generated by anaconda
# # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-8.1.4.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-8.1.4.el5 module /vmlinuz-2.6.18-8.1.4.el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.18-8.1.4.el5xen.img title CentOS (2.6.18-8.1.1.el5) root (hd0,0) kernel /vmlinuz-2.6.18-8.1.1.el5 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18-8.1.1.el5.img title CentOS (2.6.18-8.el5) root (hd0,0) kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18-8.el5.img
Danach starten wir das System neu:

shutdown -r now

Das System sollte nun automatisch den neuen Xen Kernel starten. Nachdem das System gestartet ist, können wir dies überprüfen indem wir Folgendes ausführen

uname -r


[root@server1 ~]# uname -r
2.6.18-8.1.4.el5xen
[root@server1 ~]#

Das System verwendet also wirklich den Xen Kernel!

Nun können wir dies ausführen

xm list

um herauszufinden, ob Xen gestartet ist. Es sollte Domain-0 (dom0) auflisten:

[root@server1 ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 350 1 r----- 94.4
[root@server1 ~]#

3 Eine virtuelle Maschine erstellen

CentOS hat ein großartiges Tool namens virt-install, mit dem wir virtuelle Maschinen für Xen erstellen können. Um es zu starten, führen wir einfach dies aus

virt-install

Das Tool stellt ein paar Fragen bevor es eine virtuelle Maschine erstellt. Ich möchte meine erste virtuelle Maschine vm01 nennen, mit 256MB RAM und einer Festplattengröße von 4GB. Ich möchte sie in der Datei  /vm/vm01.img ablegen:

What is the name of your virtual machine? <-- vm01
How much RAM should be allocated (in megabytes)? <-- 256
What would you like to use as the disk (path)? <-- /vm/vm01.img
How large would you like the disk (/vm/vm01.img) to be (in gigabytes)? <-- 4
Would you like to enable graphics support? (yes or no) <-- no
What is the install location? <-- http://wftp.tu-chemnitz.de/pub/linux/centos/5.0/os/i386

Die Frage bezüglich der grafischen Unterstützung bezieht sich auf den Installer, nicht auf die virtuelle Maschine selbst! Es ist möglich, einen grafischen Installer zu starten, Du müsstest Dich allerdings via VNC mit ihm verbinden. Es ist einfacher den Text Installer zu verwenden - er bietet die gleichen Optionen an, also wähle ich den Text Installer.

Als install location solltest Du einen Spiegel in Deiner Nähe festlegen, von dem der Installer alle Dateien runter laden kann, die er für die Installation von CentOS 5.0 in unserer virtuellen Maschine benötigt. Hier findest Du eine Liste von CentOS Spiegeln: http://www.centos.org/modules/tinycontent/index.php?id=13
Nachdem wir alle Fragen beantwortet haben, startet virt-install den normalen CentOS 5.0 Installer (in Textmodus) in unserer vm01 virtuellen Maschine. Du kennst den CentOS Installer bereits, es sollte also kein Problem für Dich sein, die CentOS Installation in vm01 zu beenden.

Nach der Installation bleiben wir in der vm01 Konsole. Um sie zu verlassen tippe CTRL+] wenn Du Dich in der Konsole befindest, oder CTRL+5 wenn Du PuTTY verwendest. Dann bist Du wieder in der dom0 Konsole.

virt-install hat die vm01 Konfigurationsdatei /etc/xen/vm01 für uns (in dom0) erstellt. So sollte es aussehen:

cat /etc/xen/vm01


# Automatically generated xen config file
name = "vm01" memory = "256" disk = [ 'tap:aio:/vm/vm01.img,xvda,w', ] vif = [ 'mac=00:16:3e:13:e4:81, bridge=xenbr0', ] uuid = "5aafecf1-dd66-401d-69cc-151c1cb8ac9e" bootloader="/usr/bin/pygrub" vcpus=1 on_reboot = 'restart' on_crash = 'restart'
Führe dies aus

xm console vm01

um Dich wieder auf dieser virtuellen Maschine anzumelden (type CTRL+] wenn Du Dich in der Konsole befindest, oder CTRL+5 wenn Du PuTTY verwendest um zu dom0 zurückzukehren), oder verwende einen SSH Client um Dich damit zu verbinden.

Um eine Liste virtueller Maschine zu beziehen, tippe

xm list

Die Ausgabe sollte wie folgt aussehen:

[root@server1 xen]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 259 1 r----- 1906.6
vm01 3 255 1 ------ 137.9
[root@server1 xen]#

Um vm01 runter zu fahren, führe dies aus:

xm shutdown vm01

Um vm01 wieder zu starten, führe dies aus

xm create /etc/xen/vm01

Wenn vm01 automatisch beim nächsten Start des Systems starten soll, dann führe dies aus:

ln -s /etc/xen/vm01 /etc/xen/auto

Hier sind die wichtigsten 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. Als ob Du den Power-Knopf betätigen würdest.
xm list - alle laufende Systeme auflisten.
xm console <name> - melde Dich auf einer virutellen Maschine an.
xm help - Liste aller Befehle.

4 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte