Xen Tutorial

8
HOWTO: Quick and Dirty Guide to Xen Paravirtualization (RHEL 5 / CENTOS 5) 0. Pretpostavke: - tijekom instalacije hosta kod izbora paketa pod sekcijom “Virtualization”, odaberemo “Virtualization” (ovo možemo napraviti i kasnije kroz package management alate) - friška instalacija hosta (nekontaminirana komercijalnim softverom / “vanjskim” repo-ima, dodatnim userima i specijalnim konfiguracijama) - ovo je važno iz razloga što ćemo guesta kreirati iz file systema hosta - statička ip adresa - isključen selinux - instalacija hosta na LVM - obično samo /boot kreiram kao regularnu lin particiju (potrebno zbog GRUBa), sve ostalo stavim u LVM -> Volume Grupa se u konkretnom primjeru zove vg_system (Red Hat po defoltu nudi ime “vg0”) -> prednosti LVMa: laka manipulacija, resize, snapshot, bolje performanse za Xen PV guesta - nakon instalacije hosta updejtamo sistem: # yum update -y # reboot - ukoliko na hostu nije instaliran Xen hypervisor, instaliramo ga kroz grupu paketa pod nazivom “Virtualization”: # yum groupinstall “Virtualization” # reboot # uname -r 2.6.18-194.26.1.el5xen - provjerimo da li su startani potrebni servisi: # chkconfig --list | grep xen xend 0:off 1:off 2:on 3:on 4:on 5:on 6:off xendomains 0:off 1:off 2:off 3:on 4:on 5:on 6:off - ako nisu, onda:

Transcript of Xen Tutorial

Page 1: Xen Tutorial

HOWTO: Quick and Dirty Guide to Xen Paravirtualization (RHEL 5 / CENTOS 5) 0. Pretpostavke:- tijekom instalacije hosta kod izbora paketa pod sekcijom “Virtualization”, odaberemo “Virtualization” (ovo možemo napraviti i kasnije kroz package management alate)- friška instalacija hosta (nekontaminirana komercijalnim softverom / “vanjskim” repo-ima, dodatnim userima i specijalnim konfiguracijama) - ovo je važno iz razloga što ćemo guesta kreirati iz file systema hosta- statička ip adresa- isključen selinux- instalacija hosta na LVM - obično samo /boot kreiram kao regularnu lin particiju (potrebno zbog GRUBa), sve ostalo stavim u LVM

-> Volume Grupa se u konkretnom primjeru zove vg_system (Red Hat po defoltu nudi ime “vg0”)-> prednosti LVMa: laka manipulacija, resize, snapshot, bolje performanse za Xen PV guesta

- nakon instalacije hosta updejtamo sistem:# yum update -y# reboot - ukoliko na hostu nije instaliran Xen hypervisor, instaliramo ga kroz grupu paketa pod nazivom “Virtualization”:# yum groupinstall “Virtualization”# reboot# uname -r

2.6.18-194.26.1.el5xen

- provjerimo da li su startani potrebni servisi:# chkconfig --list | grep xen

xend 0:off 1:off 2:on 3:on 4:on 5:on 6:offxendomains 0:off 1:off 2:off 3:on 4:on 5:on 6:off

- ako nisu, onda:

Page 2: Xen Tutorial

# chkconfig xend on# service xend start# chkconfig xendomains on# service xendomains start 1. Priprema file systema za guesta:- kreiramo 2 logical volume-a unutar volume grupe vg_system, jednog za root file system, jednog za swap:# lvcreate -n guest01_root -L10G vg_system# lvcreate -n guest01_swap -L512M vg_system- provjera:# lvs - formatiramo LV-e:# mkfs -t ext3 /dev/vg_system/guest01_root# tune2fs -c0 /dev/vg_system/guest01_root# mkswap /dev/vg_system/guest01_swap - montiramo root fs guesta na /mnt:# mount /dev/vg_system/guest01_root /mnt - prekopiramo root file sistem hosta (bez pseudo file sistema):# rsync -a $(ls -1 / | egrep -v "net|dev|proc|sys|media|opt|mnt|selinux|lost") /mnt- provjera (treba vratiti “0”):# echo $? # cd /mnt- kreiramo mount pointove za pseudo file sisteme:# mkdir net dev proc sys media opt mnt selinux

Page 3: Xen Tutorial

2. Konfiguracija guesta- guest info:

ime: guest01ip addr: 192.168.255.40/24mac addr: 10:00:00:00:00:01init level : 3

- editiramo /etc/fstab od guesta (doslovno kopiramo navedeno dolje):# vi /mnt/etc/fstab

/dev/hda1 / ext3 defaults 1 1/dev/hda2 swap swap defaults 0 0tmpfs /dev/shm tmpfs defaults 0 0devpts /dev/pts devpts gid=5,mode=620 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0

# vi /mnt/boot/grub/device.map

# this device map was generated by anaconda(hd0) /dev/hda

# vi /mnt/etc/inittab

.

.id:3:initdefault:..

# vi /mnt/etc/hosts

# Do not remove the following line, or various programs# that require network functionality will fail.

Page 4: Xen Tutorial

127.0.0.1 guest01.localdomain guest01 localhost.localdomain localhost#::1 localhost6.localdomain6 localhost6

# vi /mnt/etc/sysconfig/network

NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=guest01.localdomainGATEWAY=192.168.255.1

# vi /mnt/etc/sysconfig/network-scripts/ifcfg-eth0

# Ethernet controllerDEVICE=eth0BOOTPROTO=staticBROADCAST=192.168.255.255HWADDR=10:00:00:00:00:01IPADDR=192.168.255.40NETMASK=255.255.255.0NETWORK=192.168.255.0ONBOOT=yes

# vi /mnt/etc/sysconfig/hwconf

.

.network.hwaddr: 10:00:00:00:00:01..

- brišemo linkove od init skripti Xen i Libvirt servisa (ostalo od hosta), da nam ne smrdaju konfiguraciju mreže na guestu:# find /mnt/etc/rc.d/rc*.d -type l | egrep "xen|libvirt" |xargs rm# cd ..# umount /mnt

Page 5: Xen Tutorial

3. Priprema kernela za guesta:# mkdir /pv_kerneli- kreiramo initrd za guesta, vmlinuz image je isti kao i kod hosta:# mkinitrd -f –-fstab=/etc/fstab --omit-scsi-modules –-with=xennet –-with=xenblk –-preload=xenblk /pv_kerneli/initrd-$(uname -r).img $(uname -r)# cp /boot/vmlinuz-$(uname -r) /pv_kerneli 4. Priprema konfiguracijske datoteke guesta:- kreiramo xen conf file za domU guesta:# vi /etc/xen/guest01

# resursiname = "guest01"uuid = "5f50cf41-fd3a-ee62-11aa-baa97ae4f131" # ovo treba za libvirt, Xen radi i bez togamaxmem = 512memory = 512vcpus = 1 # kernel i initrd za PV guestakernel="/pv_kerneli/vmlinuz-2.6.18-194.26.1.el5xen"ramdisk="/pv_kerneli/initrd-2.6.18-194.26.1.el5xen.img"#bootloader = "/usr/bin/pygrub" # ovo nam ne treba ako koristimo “vanjski” kernel on_poweroff = "destroy"on_reboot = "restart"on_crash = "restart" # storagedisk = [ 'phy:/dev/vg_system/guest01_root,hda1,w', 'phy:/dev/vg_system/guest01_swap,hda2,w' ]root="/dev/hda1 ro" #networkvfb = [ "type=vnc,vncunused=1,keymap=hr" ]

Page 6: Xen Tutorial

vif = [ "mac=10:00:00:00:00:01,bridge=xenbr0,script=vif-bridge" ]

5. Pokretanje guesta:# xm create /etc/xen/guest01 - zauzeće resursa(space tipka je refresh):# xm top - u guesta se ulogiramo kao:# ssh root@<ip_addr>- konkretno:# ssh [email protected] ili# xm console guest01 Provjera mreže na guestu nakon što smo se ulogirali:# ifconfig -a

eth0 Link encap:Ethernet HWaddr 10:00:00:00:00:01 inet addr:192.168.255.40 Bcast:192.168.255.255 Mask:255.255.255.0 inet6 addr: fe80::1200:ff:fe00:4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2017 errors:0 dropped:0 overruns:0 frame:0 TX packets:1039 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:216389 (211.3 KiB) TX bytes:171088 (167.0 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1

Page 7: Xen Tutorial

RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:560 (560.0 b) TX bytes:560 (560.0 b) sit0 Link encap:IPv6-in-IPv4 NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

# ping 4.2.2.2# ping www.google.com Na guestu počistimo virtualizacijske pakete od hosta:# yum remove xen gnome-applet-vm libvirt virt-manager virt-viewer Virtualization-en-US# rm -rf /etc/xen /etc/libvirt# find /etc -type f | egrep “xen|libvirt” | xargs rm 6. Upravljanje virt mašinama:xm listxm topxm create <conf file guesta>xm shutdown <ime guesta>xm destroy <ime guesta> - kroz GUI (neće biti dostupne neke operacije !):virt-manager 7. Logovi:# less /var/log/messages

Page 8: Xen Tutorial

(libvirt će se buniti nešto, možemo ignorirati)# less /var/log/xen/xend.log