Hetzner - DokuWiki
XenServer 5.6 Installation per LARA
Inhaltsverzeichnis |
Einleitung
Installation des XenServers 5.6:
- Installation erfolgt über LARA, d.h. ihr habt folgende Möglichkeiten:
- Installation per CD
- Für leute mit hohem Upload: Virtuelles Image des XenServers in die LARA einbinden und komplett davon Installieren
- Meine bevorzugte Variante: Boote über Virtuelles Image mit der LARA 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
