Xen ist eine Virtualisierungssoftware (Paravirtualisierung) für Linux-Systeme welche dazu eingesetzt
werden kann um Gast-Systeme auf einem System zu erstellen und zum laufen zu bringen.

Die Installation von Xen ist recht simple.

Die Installation von xen habe ich auf meinem Debian Home-Server durchgespielt 32-bit,
nach dieser Installation richtet sich hier die Installations-Routine.

Zu beginn sollte das System auf den neusten stand gebracht werden.


apt-get update && apt-get upgrade -y

Nun erfolgt die Installation der Xen-Pakete auf dem Server


apt-get install xen-hypervisor xen-linux-system xen-utils xenstore-utils xenwatch xen-tools -y

Information: Beim xen-hypervisor stehen ebenso auch weitere Pakete griffbereit.
Ich habe während meiner Routine den xen-hypervisor-686 gewählt.

Sind die Pakete installiert muss nun die file /etc/modules bearbeitet werden.


nano /etc/modules

Diese enthält nur den Eintrag „loop“ dieser wird noch ergänzt um „max_loop=64“


loop max_loop=64

Um eine image-based VM Erstellung festzulegen.

Als nächstes wird die File „/etc/xen/xend-config.sxp“ editiert.


nano /etc/xen/xend-config.sxp

Dort wird nach „(network-script ’network-bridge antispoof=yes‘)“ gesucht und diese Zeile entweder auskommentiert
oder wenn sie nicht existiert neu hinzugeschrieben.
Selbes folgt mit der Zeile „(vif-script vif-bridge)“ auskommentieren oder neu hinzufügen.

Information:
Such-Funktion kann im Editor nano mit dem drücken von F6 aktiviert werden.

Nach dem Speichern der Konfiguration wird der Server rebootet

reboot

Nachdem der Server neu gebootet ist, und auch wieder per SSH erreichbar kann mit uname -r überprüft werden ob
Xen installiert ist.


uname -r

Hierbei sollte eine Zeile ausgeben werden der dieser ähnelt:


2.6.32-5-xen-686

Als nächstes wird der Befehl ausgeführt:

xm dmesg

Sollte es zu einem Fehler kommen wie hier:

WARNING! Can't find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?

Heißt dies das der Server nur als ein Xen-Ready kernel läuft. Um dies zu ändern werden folgende Befehle aufgerufen:

mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2

Nachdem diese erfolgreich ausgeführt wurden wird der server mit reboot erneut rebootet.

reboot

Nach dem erfolgreichen reboot wird der Befehl xm-dmesg erneut gestartet.

xm dmesg

Dieser sollte nun eine ähnliche Ausgabe wie hier erzeugen

(XEN) Xen version 4.0.1 (Debian 4.0.1-2) (waldi@debian.org) (gcc version 4.4.5 (Debian 4.4.5-10) ) Wed Jan 12 14:04:06 UTC 2011
(XEN) Bootloader: GRUB 1.98+20100804-14
(XEN) Command line: placeholder
(XEN) Video information:
(XEN) VGA is text mode 80x25, font 8x16
(XEN) VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN) Found 1 MBR signatures
(XEN) Found 1 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN) 0000000000000000 - 000000000009f000 (usable)
(XEN) 000000000009f000 - 00000000000a0000 (reserved)
(XEN) 00000000000e0000 - 0000000000100000 (reserved)
(XEN) 0000000000100000 - 00000000affa0000 (usable)
(XEN) 00000000affa0000 - 00000000affae000 (ACPI data)
(XEN) 00000000affae000 - 00000000afff0000 (ACPI NVS)
(XEN) 00000000afff0000 - 00000000b0000000 (reserved)
(XEN) 00000000fec00000 - 00000000fec01000 (reserved)
(XEN) 00000000fee00000 - 00000000fef00000 (reserved)
(XEN) 00000000ff700000 - 0000000100000000 (reserved)
(XEN) 0000000100000000 - 0000000140000000 (usable)
(XEN) ACPI: RSDP 000FA310, 0014 (r0 ACPIAM)
(XEN) ACPI: RSDT AFFA0000, 0044 (r1 052608 RSDT1415 20080526 MSFT 97)
(XEN) ACPI: FACP AFFA0200, 0084 (r1 052608 FACP1415 20080526 MSFT 97)
(XEN) ACPI: DSDT AFFA0450, 960C (r1 1AAAA 1AAAA000 0 INTL 20051117)
(XEN) ACPI: FACS AFFAE000, 0040
(XEN) ACPI: APIC AFFA0390, 0080 (r1 052608 APIC1415 20080526 MSFT 97)
(XEN) ACPI: MCFG AFFA0410, 003C (r1 052608 OEMMCFG 20080526 MSFT 97)
(XEN) ACPI: OEMB AFFAE040, 0073 (r1 052608 OEMB1415 20080526 MSFT 97)
(XEN) ACPI: HPET AFFA9A60, 0038 (r1 052608 OEMHPET0 20080526 MSFT 97)
(XEN) ACPI: INFO AFFAE0C0, 0124 (r1 052608 AMDINFO 20080526 MSFT 97)
(XEN) ACPI: NVHD AFFAE1F0, 0284 (r1 052608 NVHDCP 20080526 MSFT 97)
(XEN) ACPI: SSDT AFFA9AA0, 028A (r1 A M I POWERNOW 1 AMD 1)
(XEN) System RAM: 3839MB (3931388kB)
(XEN) Domain heap initialised
(XEN) Processor #0 15:11 APIC version 16
(XEN) Processor #1 15:11 APIC version 16
(XEN) IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
(XEN) Enabling APIC mode: Flat. Using 1 I/O APICs
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Detected 2600.088 MHz processor.
(XEN) Initing memory sharing.
(XEN) HVM: ASIDs enabled.
(XEN) HVM: SVM enabled
(XEN) AMD-Vi: IOMMU not found!
(XEN) I/O virtualisation disabled
(XEN) AMD: Disabling C1 Clock Ramping Node #0
(XEN) Total of 2 processors activated.
(XEN) ENABLING IO-APIC IRQs
(XEN) -> Using new ACK method
(XEN) checking TSC synchronization across 2 CPUs:
(XEN) CPU#0 had -2 usecs TSC skew, fixed it up.
(XEN) CPU#1 had 2 usecs TSC skew, fixed it up.
(XEN) Platform timer is 25.000MHz HPET
(XEN) Allocated console ring of 16 KiB.
(XEN) Brought up 2 CPUs
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Xen kernel: 64-bit, lsb, compat32
(XEN) Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x16ba000
(XEN) PHYSICAL MEMORY ARRANGEMENT:
(XEN) Dom0 alloc.: 0000000138000000->000000013c000000 (921455 pages to be allocated)
(XEN) VIRTUAL MEMORY ARRANGEMENT:
(XEN) Loaded kernel: ffffffff81000000->ffffffff816ba000
(XEN) Init. ramdisk: ffffffff816ba000->ffffffff8323b600
(XEN) Phys-Mach map: ffffffff8323c000->ffffffff83963b78
(XEN) Start info: ffffffff83964000->ffffffff839644b4
(XEN) Page tables: ffffffff83965000->ffffffff83986000
(XEN) Boot stack: ffffffff83986000->ffffffff83987000
(XEN) TOTAL: ffffffff80000000->ffffffff83c00000
(XEN) ENTRY ADDRESS: ffffffff81509200
(XEN) Dom0 has maximum 2 VCPUs
(XEN) Scrubbing Free RAM: .done.
(XEN) Xen trace buffers: disabled
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) Xen is relinquishing VGA console.
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)
(XEN) Freed 176kB init memory.
(XEN) MCE: MSR 417 is not MCA MSR
(XEN) MCE: MSR 417 is not MCA MSR

Als nächstes muss die Konfiguration angepasst werden von xen-tools um image-based virtual machines erzeugen
zu können.


nano /etc/xen-tools/xen-tools.conf

Folgendes sollte nun sichergestellt sein das dies nicht als kommentar steht, falls ja auskommentieren
und die Parameter ändern.:


[...]
dir = /home/xen
[...]
# lvm = vg0
[...]
dist = `xt-guess-suite-and-mirror --suite` # Default distribution to install.
[...]
gateway = 192.168.0.1
netmask = 255.255.255.0
broadcast = 192.168.0.255
[...]
passwd = 1
[...]
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
[...]
mirror = `xt-guess-suite-and-mirror --mirror`
[...]
serial_device = hvc0 #default
[...]
disk_device = xvda #default
[...]

Gateway = Router-Gateway
netmask = Subnetzmaske
broadcast = Broadcastdomäne des IP-Bereiches

Ebenso sollte in der Konfiguration der Punkt „arch“
auf die entsprechende Architektur geändert werden.

Der mirror „xt-guess-suite-and-mirror –mirror“ entspricht einer debian squeeze installation.

Weiteres lässt sich in der Readme File nachlesen zu der Installation von möglichen Systemen:


gunzip /usr/share/doc/xen-tools/README.gz
cat /usr/share/doc/xen-tools/README

Als nächstes wird das Home-Verzeichnis für xen erzeugt:


mkdir /home/xen

Nun kann die erste VM erzeugt werden:


xen-create-image --hostname=xen1.ihredomain.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev

Hierbei sollte ein Hostname eingetragen werden, die Größe der Festplatte (size) der Swap, die Ip-Adresse und RAM, sowie Architektur des Systems.
Rolle udev sollte nicht vergessen werden, sonst kann es dazu kommen, dass das System nicht bootet.

Ausgabe:


General Information
--------------------
Hostname : xen1.ihredomain.com
Distribution : squeeze
Mirror : http://ftp.de.debian.org/debian/
Partitions : swap 256Mb (swap)
/ 4Gb (ext3)
Image type : sparse
Memory size : 256Mb
Kernel path : /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd path : /boot/initrd.img-2.6.32-5-xen-amd64

Networking Information
———————-
IP Address 1 : 192.168.0.101 [MAC: 00:16:3E:E8:61:97]
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

Role: udev
File: /etc/xen-tools/role.d/udev
Role script completed.

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

Installation Summary
———————
Hostname : xen1.ihredomain.com
Distribution : squeeze
IP-Address(es) : 192.168.0.101
RSA Fingerprint : 81:d1:7a:44:3b:07:41:3a:0f:46:d5:d5:30:bc:26:43
Root Password : N/A

root@server1:~#

Als nächstes sollte die Konfiguration die bei der Erstellung und Installation der
Maschine erfolgt ist überprüft werden:


cat /etc/xen/xen1.ihredomain.com.cfg

Ist diese korrekt kann das System das erste mal gestartet werden:


xm create /etc/xen/xen1.ihredomain.com.cfg


root@server1:~# xm create /etc/xen/xen1.ihredomain.com.cfg
Using config file "/etc/xen/xen1.ihredomain.com.cfg".
Started domain xen1.ihredomain.com (id=1)
root@server1:~#

Mit dem Befehl:


xm console xen1.ihredomain.com

Kann die Console vom neuen server das erste mal betreten werden.

Mit „xm list“ können Sie sich die laufenden Server anzeigen lassen.

Folgende Befehle sind ebenso noch wichtig zu wissen:


xm create -c /path/to/config - Startet eine VM
xm shutdown - Stoppt eine VM
xm destroy - Stoppt die VM komplett, so als würden Sie direkt auf den shutdown button vom Rechner klicken
xm list - Listet alle VMs auf
xm console - Einloggen in eine VM
xm help - Auflisten der Befehle
xen-list-images - Listet alle images auf