Benutzer:Asklepios/Xen Remus

Aus LaborWiki
< Benutzer:Asklepios
Version vom 7. Januar 2011, 16:05 Uhr von Asklepios (Diskussion | Beiträge) (→‎make.conf)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Xen mit Remus[Bearbeiten | Quelltext bearbeiten]

Ziel dieser Seite[Bearbeiten | Quelltext bearbeiten]

Einfach mal ein Setup aufsetzen fuer xen-remus

Was ist Remus[Bearbeiten | Quelltext bearbeiten]

Dazu sei mal ganz einfach auf die Projektseite http://dsg.cs.ubc.ca/remus/doc.html verwiesen.

Hardware[Bearbeiten | Quelltext bearbeiten]

Als xenserver sind ein paar alte Intel Celeron zum einsatz gekommen, weil ich sie recht preiswert bei ebay erlangen konnte (thx Dieter fuer den Tip). Weiter sinnvolle Daten des PowerEdge 750 sind:

  • 2GB Ram
  • 2x Intel Corporation 82547GI Gigabit Ethernet Controller
  • 320GB HDD (thx Benutzer:Siro)

setup[Bearbeiten | Quelltext bearbeiten]

Host OS[Bearbeiten | Quelltext bearbeiten]

Das HostOS ist ein Gentoo. mit folgenden relevanten tools neben dem basis-system installiert:

Pakete[Bearbeiten | Quelltext bearbeiten]

um die deps ins system zu ziehen (der einfachste weg eben ;):

app-emulation/xen-tools-4.0.0  USE="acm api flask ioemu screen -custom-cflags -debug -doc -hvm -pygrub"

um logical volumes und snap-shots zu haben (snapshots weil tests):

sys-fs/lvm2-2.02.73-r1  USE="lvm1 readline static -clvm (-cman) (-selinux)"

irgendwie muessen wir routen und ips vergeben (ifconfig steht fuer INTERFACECONFIG!):

sys-apps/iproute2-2.6.31  USE="berkdb -atm -minimal"

die sourcen von xen gibts via mercurial:

dev-vcs/mercurial-1.5  USE="-bash-completion -bugzilla -emacs -gpg -test -tk -zsh-completion"

die pvopts-sources des kernels gibts via git:

dev-vcs/git-1.7.2.2  USE="bash-completion blksha1 curl iconv threads webdav -cgi -cvs -doc -emacs -gtk -perl (-ppcsha1) -subversion -tk -xinetd"

erste tests habe ich mit live-migration gemacht (storage backend eben):

sys-block/aoetools-27
sys-block/vblade-14 

Die DomU ist ein debian lenny:

dev-util/debootstrap-1.0.25

netzwerkkonfig fuer die Dom0/U:

net-misc/bridge-utils-1.4 

zum bauen von xen aus den sourcen brauchte ich noch:

sys-power/iasl-20090123  USE="-test" 
sys-devel/dev86-0.16.17-r6
sys-devel/bin86-0.16.17

dies waren fuer den 2.6.32-xen0 kernel notwendig

sys-apps/hal-0.5.14-r2  USE="acpi apm crypt dell disk-partition -X -consolekit -debug -doc -laptop -policykit (-selinux)"
sys-fs/udev-141  USE="(-selinux)"

storage[Bearbeiten | Quelltext bearbeiten]

hierfuer wurde einfach ein lvm aufgesetzt. Die syncronisation der platten laeuft ueber Remus.

pvcreate /dev/sda3 
vgcreate vg /dev/sda3
lvcreate -n firstbase -L10G vg

Es gibt hier alledings schon einen nachteil. Der Fallback, abgesichert durch Remus funktioniert ohne Probleme, allerdings kommt man nur mit ausfallzeiten zurueck auf den Master. Hier bietet sich dann eher sowas wie drbd an

image[Bearbeiten | Quelltext bearbeiten]

mount /dev/vg/firstbase /mnt/tmp
mkfs.ext3 /dev/vg/firstbase
debootstrap lenny /mnt/tmp
cd /mnt/tmp/
mount --bind /dev dev/
mount -t proc as proc
mount -t sysfs as sys
mount --bind /dev/pts dev/pts/
chroot .
dpkg --set-selections < package_selection
apt-get -u dselect-upgrade

grub1 eintrag[Bearbeiten | Quelltext bearbeiten]

title=xen 4.0.2-rc2-pre (2.6.32.26)
root            (hd0,0)
kernel          /xen.gz
module          /vmlinuz-2.6.32.26 root=/dev/sda1 console=tty1 ro loglevel=0 apm=off acpi=on

make.conf[Bearbeiten | Quelltext bearbeiten]

CFLAGS="-O2 -march=i686 -pipe -mno-tls-direct-seg-refs"
CXXFLAGS="${CFLAGS}"
CHOST="i686-pc-linux-gnu"
USE="ipv6 ssl tls xen aio ssh mmx sse mmxext bash-completion openssh gpg gnutls strong-optimization optimization sse2 gmp xattr acl sqlite"
EMERGE_DEFAULT_OPTS="-v --jobs 2"
FEATURES="collision-protect nodoc noinfo parallel-fetch sandbox usersync userfetch usersandbox"
LINGUAS="de en"
ACCEPT_LICENSE="*" 
MAKEOPTS="-j 1"

getting xen[Bearbeiten | Quelltext bearbeiten]

wir brauchen auch noch nen patch von http://www.linuximq.net/ fuer den 2.6.32 kernel (siehe Remus projekt) man sollte an dieser stelle ein paar grundlegende features nicht vergessen. Primaer support fuer netfilter, lvm (dm + dm_snampshot), ipv6, imq ...

cd /usr/src
hg clone http://xenbits.xensource.com/xen-4.0-testing.hg
cd xen-4.0-testing.hg
source /etc/make.conf
KERNELS="linux-2.6-xenU linux-2.6-pvops" make dist
cd linux-2.6-pvops.git
wget http://www.linuximq.net/patchs/linux-2.6.32-imq-test2.diff
patch -p1 < linux-2.6.32-imq-test2.diff
cd ..
# configure domU kernels
make linux-2.6-xenU-config CONFIGMODE=menuconfig
# configure dom0 kernel - 
make linux-2.6-pvops-config CONFIGMODE=menuconfig 
# build kernels
make linux-2.6-xenU-build
make linux-2.6-pvops-build
# and install everything in ./dist
KERNELS="linux-2.6-xenU linux-2.6-pvops" make dist

firstbase DomU[Bearbeiten | Quelltext bearbeiten]

So habe ich meine virtuelle Instanz genannt. Da mir leider kein HVM zur Verfuegung lief das ganze mit nem 2.6.18 Kernel und folgender config

#/etc/xen/firstbase

kernel = "/boot/vmlinuz-2.6.18.8-xenU"
memory = 512
name = "firstbase"
vif = [ 'mac=00:16:3e:01:00:01','bridge=eth0' ]
acpi = 1
apic = 1
vnc=0
sdl=0
opengl=0
disk = [ 'tap2:tapdisk:remus:192.168.23.100:9000|aio:/dev/vg/firstbase_snap,xvda1,w' ] 
root = "/dev/xvda1 ro"
extra = "2 xencons=tty console=xvc0 barrier=0 clocksource=jiffies"
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

Diese domain zu starten war dann ganz einfach

xm create firstbase

den sync zum master habe ich dann einfach mit

remus firstbase 192.168.23.100

Die DomU meldet sich also als

firstbase:~# uname -a
Linux firstbase 2.6.18.8-xenU #1 SMP Fri Nov 19 00:35:06 Local time zone must be set--see zic  i686 GNU/Linux

files[Bearbeiten | Quelltext bearbeiten]

Xen0 Kernel-Config: Datei:Config-xen-remus-2.6.32.gz

XenU Kernel-Config: Datei:Config-2.6.18.8-xenU.gz

DomU (firstbase) packageselection: Datei:Package selection.gz

xend config: Datei:Xend-config.sxp.gz