Hetzner - DokuWiki

XenServer 5.6 Installation per KVM-Konsole

Inhaltsverzeichnis

Einleitung

Installation des XenServers 5.6:

  • Installation erfolgt über KVM-Konsole, d.h. ihr habt folgende Möglichkeiten:
    • Installation per CD
    • Für leute mit hohem Upload: Virtuelles Image des XenServers in die KVM-Konsole einbinden und komplett davon Installieren
    • Meine bevorzugte Variante: Boote über Virtuelles Image mit der KVM-Konsole und während der Installation dann ein HTTP Repository angeben (hier muss einfach die XenServer ISO entpackt auf einem Webserver liegen)
    • Zusätzlich wurde ein IP-Netz sowie der richtige Netzwerkkarten Treiber eingebunden.

Installation

Die Installation gestaltet sich recht einfach, einfach CD/Image einlegen und davon starten, hier ein paar Punkte die bei der Installation zu beachten sind:

  • Ich gehe davon aus das der XenServer auf /dev/sda Installiert wird im weiteren verlauf
  • Bei der Frage nach dem lokalen Storage sollte keine Festplatte ([*] deaktivieren) ausgewählt werden, da wir das Später auf dem Raid1 selbst erstellen.
  • Folgende DNS Server wurden von mir benutzt:
    • 213.133.98.98 (Hetzner NameServer)
    • 213.133.99.99 (Hetzner NameServer)
    • 8.8.8.8 (Google Nameserver)
  • Folgende NTP Pools wurden von mir benutzt:
    • 2.de.pool.ntp.org
    • 1.de.pool.ntp.org
    • 0.de.pool.ntp.org

Nach der Installation geht es weiter mit dem RAID.

Software RAID1

Wie auch in den anderen Beiträgen verlinke ich auf die Hauptdoku von der dieses HowTo abgeleitet wurde. Ich habe zudem noch ein paar Problemfixes die im Forum aufgetaucht sind mit eingebunden:

http://www.toddsmith.org/wordpress/uncategorized/configure-xenserver-50-free-for-software-raid-1

Die Blöcke sollten einzeln kopiert werden, ggf. Kommentare beachten.

# Partitionstabelle von /dev/sda auf /dev/sdb übertragen
dd if=/dev/sda of=/dev/sdb bs=512 count=1
# Partitionstabelle auf "Linux RAID" bei /dev/sdb einstellen:
echo -e "\nt\n1\nfd\nt\n3\nfd\nw\nx" | fdisk /dev/sdb
# Überprüfen ob die md Devices vorhanden sind:
[ -e /dev/md0 ] || mknod /dev/md0 b 9 0
[ -e /dev/md1 ] || mknod /dev/md1 b 9 1
# Starten der RAID Devices
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb3
# Bei dieser Prozezur kommt es normal zu einem Fehler da bei einer frischen
# Installation von der XenServer CD keine Volume Groups angelegt werden,
# un der vgscan Befehl "nichts" ausgibt. (dadurch ist die
# volume_group Variable leer) -> IST OK.
pvcreate -ff /dev/md1
volume_group=`vgscan | grep VG | awk -F \" '{print $2}'`
vgextend $volume_group /dev/md1
pvmove /dev/sda3 /dev/md1
vgreduce $volume_group /dev/sda3
# Anlegen des ext3 Dateisystems auf /dev/md0 und übertragen der Daten von /
mkfs.ext3 /dev/md0
cd / && mount /dev/md0 /mnt && rsync -a --progress --exclude=/sys --exclude=/proc --exclude=/dev/shm --exclude=/dev/pts / /mnt
mkdir /mnt/sys
mkdir /mnt/proc
sed -r -i 's,LABEL=root-\w+ ,/dev/md0 ,g' /mnt/etc/fstab
# initrd Einstellungen
mkdir /root/initrd && cd /root/initrd
zcat /boot/initrd-`uname -r`.img | cpio -i && cp /lib/modules/`uname -r`/kernel/drivers/md/raid1.ko lib
# init file Editieren
q="echo Waiting for driver initialization."
sed -r -i "s,^${q}$,\n\necho Loading raid1.ko module\ninsmod /lib/raid1.ko\n${q}\n,g" init
q="resume /var/swap/swap.001"
sed -r -i "s,^${q}$,${q}\necho Running raidautorun\nraidautorun /dev/md0\nraidautorun /dev/md1,g" init
r=`grep mkroot /root/initrd/init`
sed -r -i "s|^${r}$|${r/sda1/md0}|g" init
# RAMDISK aufs RAID kopieren
find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`.img
sed -r -i 's,LABEL=root-\w+ ,/dev/md0 ,g' /mnt/etc/fstab
sed -r -i 's,LABEL=root-\w+ ,/dev/md0 ,g' /etc/fstab
# BootLoader anpassen
sed -r -i 's,root=LABEL=root-\w+ ,root=/dev/md0 ,g' /mnt/boot/extlinux.conf
sed -r -i 's,root=LABEL=root-\w+ ,root=/dev/md0 ,g' /boot/extlinux.conf
cat /usr/lib/syslinux/mbr.bin > /dev/sdb
cd /mnt && extlinux -i boot/
extlinux -i boot/
cp /mnt/boot/extlinux.conf /boot/
cp /mnt/boot/initrd-`uname -r`.img /boot
# Unmount sync und reboot
cd ; umount /mnt || umount /dev/md0
sync
reboot
# Jetzt noch /dev/sda als RAID markieren und zum RAID hinzufügen
echo -e "\nt\n1\nfd\nt\n3\nfd\nw\nx" | fdisk /dev/sda
mdadm -a /dev/md0 /dev/sda1
mdadm -a /dev/md1 /dev/sda3
# Jetzt sollte angezeigt werden das das RAID vollständige und am syncen ist.
cat /proc/mdstat

Damit ist das RAID fertig erstellt und wir können ein Lokales Storage (für die VMs anlegen) sowie falls nötig ein Lokales ISO Repository.

Lokales Storage und ISO Repository

Da alle vom System benötigten Daten auf /dev/md0 liegen habe ich unter /dev/md1 (momentan ohne Filesystem und nicht in Benutzung) die VMs und ISOs abgelegt.

Erstellung des lokalen Storages als ext3:

xe sr-create content-type=localSR type=ext device-config:device=/dev/md1 shared=false name-label="VM"

Dadurch wird vom Xen ein ext3 Dateisystem auf /dev/md1 angelegt was ein bisschen dauert, falls vom Xen ein "in use" Fehler kommt überprüfen ob /dev/md1 momentan gemountet ist und ggf. unmounten.

Nachdem das lokale Storage angelegt ist habe ich noch ein ISO Storage auf /dev/md1 angelegt.

Mittels 'df -kh' lässt sich rausfinden wohin der Xen das Storage gemountet hatte (unterhalb /var/run/sr-mount/<uniqueid>)

Ich habe auf dem vorhandenen Storage einfach einen Ordner 'iso' angelegt, diesen verlinkt und in den Xen eingebunden.

mkdir /var/run/sr-mount/<uniqueid>/iso
mkdir /local
ln -s /var/run/sr-mount/<uniqueid>/iso /local/iso
xe sr-create name-label="ISO" type=iso device-config:location=/local/iso device-config:legacy_mode=true content-type=iso

Nun kann man bequem nach /local/iso seine isos Laden und darüber mit dem XenCenter zugreifen.

IP-Netz einbinden

Um auf ein IP-Netz zuzugreifen welches ausserhalb der eigenen ServerIP liegt (was wahrscheinlich der fall ist) kann man dem Xen noch eine zusätzliche Bridge zuweisen (dadurch geht eine IP-Adresse "verloren".

/etc/sysctl.conf anpassen:

# Werte die angepasst werden müssen:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.send_redirects = 0
# Werte die hinzukommen:
# added for xenbr0:1
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.xenbr0.send_redirects = 0

Mittels 'system-config-securitylevel-tui' den Paketfiter anpassen, von Enabled auf Disabled setzen (damit die Pakete richtig geroutet werden können).

Die Datei /etc/sysconfig/network-scripts/ifcfg-xenbr0:1 mit folgenden Werten erstellen (Bitte eigene IPs eintragen):

DEVICE=xenbr0:1
ONBOOT=yes
BOOTPROTO=none
NETMASK=255.255.255.224
IPADDR=192.168.99.1

Danach noch das Interface starten:

ifup xenbr0:1

Den r8168 Netzwerkkarten Treiber einbinden

Um den Netzwerkkarten Treiber zu Kompilieren wird das XenServer Driver Development Kit benötigt welches auf der Citrix Seite hertunergeladen werden kann. https://www.citrix.com/English/ss/downloads/details.asp?downloadId=2301285&productId=683148 (Additional Components -> XenServer Support Components)

Ich gehe davon aus das das ISO von euch bereits nach /local/iso kopiert wurde.

Vorerst sollte zusätzlich mittels XenCenter das VM Storage als Default markiert werden (Rechtsklick -> Default Storage) da sonst der xe vm-import Befehl nicht funktioniert.

ISO Mounten:

mkdir /mnt/iso
mount -o loop /local/iso/XenServer-5.6.0-DDK.iso /mnt/iso

DDK VM Importieren:

xe vm-import filename=/mnt/iso/ddk/ova.xml

Im XenCenter muss dann noch ein Netzwerkdevice zur Virtuellen Maschine hinzugefügt werden, danach kann man die Maschine starten und ein root Passwort setzen mit dem man sich dann einloggen kann.

Nun tragen wir die Richtigen Netzwerkeinstellungen für die VM ein:

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
IPADDR=IP-ADRESSE-DER-VM
NETMASK=255.255.255.224
ONBOOT=yes
TYPE=ethernet

/etc/sysconfig/network-scripts/route-eth0

IP-ADRESSE-DER_VM dev eth0 scope link
default via IP-DES-XENSERVERS-BZW-BEI-IP-NETZ-DIE-DES-xenbr0:1

/etc/resolv.conf

nameserver 213.133.99.99
nameserver 213.133.100.100


Nun kann man innerhalb des Hetzner Netzes den Treiber ziehen entpacken und kompilieren:

cd
wget http://mirror.hetzner.de/drivers/r8168-8.019.00.tar.bz2
tar xjf r8168-8.019.00.tar.bz2
cd r8168-8.019.00
make all

Den neuen Treiber (r8168.ko) auf das Hostsystem übertragen nach: /lib/modules/2.6.27.42-0.1.1.xs5.6.0.44.111158xen/kernel/drivers/net/

Dem Treiber dann die richtigen Rechte geben:

chmod 0744 /lib/modules/2.6.27.42-0.1.1.xs5.6.0.44.111158xen/kernel/drivers/net/r8168.ko

Den alten Treiber ins Home Verzeichniss kopieren damit er nichtmehr geladen wird (bei mir wurde er trotz umbenennung zu .backup trotzdem geladen sonst)

mv /lib/modules/2.6.27.42-0.1.1.xs5.6.0.44.111158xen/kernel/drivers/net/r8169.ko ~/r8169.ko.backup

Nun den neuen Treiber in die /etc/modprobe.conf eintragen:

echo "alias eth0 r8168" > /etc/modprobe.conf

Danach den neuen Treiber aktivieren und den Server neustarten:

rmmod r8169 && depmod -a && modprobe r8168 && reboot

Wenn alles richtig gelaufen ist wurde der alte Treiber nichtmehr geladen:

lsmod | grep r81


Ab jetzt sollte euer Server fit für die ersten virtuellen Maschinen sein :-)

Credits

Danke an die ganzen User im Forum die zu den Bugfixen beigetragen haben und natürlich an die Orignalquellen:

DNS Server: http://wiki.hetzner.de/index.php/Hetzner_Standard_Name_Server
RAID Erstellung: http://www.toddsmith.org/wordpress/uncategorized/configure-xenserver-50-free-for-software-raid-1/
IP-Netz Setup: http://wiki.hetzner.de/index.php/Citrix_XenServer
Treiberinstallation: http://blog.janjonas.net/2010-08-10/xenserver-5_6-network-problems-r8169-kernel-module



© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.