CIV:Granty/Rozvoj Xen virtuálních strojů/HowTo Xen - EurOpen.CZ Tutoriál
Tento článek popisuje zprovoznění virtualizace založené na Xenu pro tutoriál na EurOpen.cz. Text nelze brát exaktně, je to účelově sestavená kuchařka pro potřebu přednášky tutoriálu!
Úvod
Informace o zapojení
Síť je adresována v rozsahu 10.10.10.0/24 z toho je vyčleněno:
10.10.10.1 gateway (wifi router), DNS, DHCP server a defaultní gateway 10.10.10.10 virtualizační server tutor.europen.cz 10.10.10.11 notebook s mirrorem debian.europen.cz 10.10.10.20-100 pro virtuální stroje provozované na serveru (vzdy IP adresa stanice minus 100) 10.10.10.120-200 DHCP pro stanice posluchačů tutoriálu 10.10.10.201-254 rezerva
Server a notebook jsou připojeni 100Mbit ethernetem k WiFi routeru. Klienti se mohou do sítě připojit přes 802.11g (2.4 GHz pasmo).
Mirror
Soubor /etc/apt/sources.list:
deb http://debian.europen.cz/debian/ lenny main non-free contrib deb http://debian.europen.cz/debian/ lenny-proposed-updates main non-free contrib
A obvyklá aktualizace:
aptitude update
LVM
Instalace LVM a rozdělení disků
Instalace balíku pro LVM:
aptitude install lvm2
Vytvoření oddílu pro LVM. Disky sda a sdb jsou rozděleny pro systém, přidáme tedy třetí partition typu LVM. Disky sdc a sdd jsou prazdne, vytvoříme jednu partition typu LVM.
# partition 1: RAID1(md0 = sda1 + sdb1) pro system # partition 2: RAID1(md0 = sda2 + sdb2) pro swap fdisk /dev/sda <<EOF n p 3 t 3 8e w EOF # partition 1: RAID1(md0 = sda1 + sdb1) pro system # partition 2: RAID1(md1 = sda2 + sdb2) pro swap fdisk /dev/sdb <<EOF n p 3 t 3 8e w EOF fdisk /dev/sdc <<EOF n p 1 t 8e w EOF fdisk /dev/sdd <<EOF n p 1 t 8e w EOF fdisk /dev/sde <<EOF n p 1 t 8e w EOF
Inicializace LVM
PV - physical volume
Vytvoření fyzických diskových oddílů (PV - physical volume):
pvcreate /dev/sda3 /dev/sdb3 /dev/sdc1 /dev/sdd1 /dev/sde1
Kontrola:
pvscan PV /dev/sda3 lvm2 [247.21 GB] PV /dev/sdb3 lvm2 [247.21 GB] PV /dev/sdc1 lvm2 [278.87 GB] PV /dev/sdd1 lvm2 [278.87 GB] PV /dev/sde1 lvm2 [278.87 GB] Total: 5 [1.30 TB] / in use: 0 [0 ] / in no VG: 5 [1.30 TB]
pvdisplay /dev/sda3 "/dev/sda3" is a new physical volume of "247.21 GB" --- NEW Physical volume --- PV Name /dev/sda3 VG Name PV Size 247.21 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID C8edP0-Q6Xg-XkIU-nbkX-ai0n-25RI-DuehtM
VG - volume group
Vytvoření skupiny fyzických oddílů (VG - volume group):
vgcreate virt /dev/sda3 /dev/sdb3 /dev/sdc1 /dev/sdd1
Kontrola:
vgscan Reading all physical volumes. This may take a while... Found volume group "virt" using metadata type lvm2
vgdisplay virt --- Volume group --- VG Name virt System ID Format lvm2 Metadata Areas 5 Metadata Sequence No 8 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 5 Act PV 5 VG Size 1.30 TB PE Size 4.00 MB Total PE 340740 Alloc PE / Size 2628 / 10.27 GB Free PE / Size 338112 / 1.29 TB VG UUID AvO68w-fYcJ-l34v-GWDd-86Z8-LGmJ-bHum7P
Vytvoření oddílů pro virtuální stroje
LV - logical volume
Vytvoření logického diskového oddílu (LV - logical volume):
lvcreate -L10000 -ndemo-debian-root virt lvcreate -L512 -ndemo-debian-swap virt
Kontrola:
lvscan ACTIVE '/dev/virt/demo-debian-root' [9.77 GB] inherit ACTIVE '/dev/virt/demo-debian-swap' [512.00 MB] inherit
lvdisplay /dev/virt/demo-debian-root --- Logical volume --- LV Name /dev/virt/demo-debian-root VG Name virt LV UUID liSyr3-79wY-AKBt-vjkh-ECj0-VGUC-Uvhd9L LV Write Access read/write LV Status available # open 0 LV Size 9.77 GB Current LE 2500 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
Xen
Instalace
Instalace jádra s rozšířením o Xen a hypervisora a nástroje pro Xen:
aptitude install xen-linux-system-2.6.26-2-xen-amd64 xen-tools
Upravíme /etc/modules pro modul 'loop':
loop max_loop=64
Výměna jádra:
reboot
Kontrola:
uname -a Linux tutor 2.6.26-2-xen-amd64 #1 SMP Fri Mar 27 07:12:15 UTC 2009 x86_64 GNU/Linux
Úprava parametrů Xenu
Změna defaultního chování síťových rozhraních v /etc/xen/xend-config.sxp a navýšení minimální paměti pro dom0 (více v komentářích konfiguračního souboru):
(network-script network-bridge) #(network-script network-dummy)
#(dom0-min-mem 196) (dom0-min-mem 512)
/etc/init.d/xend restart
Zrušení hibernace virtuálních strojů do souborů v případě ukončení dom0 (halt, reboot) v /etc/default/xendomains:
#XENDOMAINS_SAVE="/var/lib/xen/save" XENDOMAINS_SAVE=""
Přehled nejpoužívanějších příkazu
- xm je základní nástroj pro ovládání xenu, nejčastější příkazy pro něj jsou (abecedně):
console - připojení se ke konzoli virtuálního stroje, odpojení se provede klávesovou zkratkou Ctrl + ] create - vytvoření virtuálního stroje dle konfiguračního souboru destroy - zrušení běžícího virtuálního stroje, jde o "násilné" ukončení ve stylu vytažení ze zásuvky (nejde o reset!) dmesg - výpis hlášení od hypervisoru z doby jeho startu a provozu help - všechny příkazy, které lze užít pro management list - seznam virtuálních strojů včetně základních systémových údajů (paměť, procesory, stav, ...) reboot - reboot virtuálního stroje, stroj automaticky nastartuje dle konfigurace v paměti (parametry z 'xm create') shutdown - vypnutí virtuálního stroje, stroj lze nelze obnovit, ale pouze znovu vytvořit sysrq - zaslaní 'Magic SysRq' znaku do virtuálního stroje
- xentop ukazuje aktuální využívání systémových prostředků běžících strojů
Základní parametry konfiguračního souboru
kernel - cesta k image uložená v dom0 (moduly jsou uloženy v domU) ramdisk - cesta k initrd obrazu memory - velikost paměti pro domU name - jméno stroje (musí být jedinečné) vif - definice síťového rohraní (MAC adresa a napojení na podsíť v dom0) disk - nastavení disků pro domU poskytovaných z dom0 root - nastavení parametru 'root' pro kernel, obvykle "/dev/hda1" extra - další parametry, které se mají předat jádru
Modifikované virtuální stroje (Linux)
Instalace
Je možné je instalovat několika způsoby:
- jako nemodifikované a pak jim vyměnit jádro s rozšířením xenu (níže v kapitole o nemodifikovaných operačních systémech)
- vytvořit pomocným skriptem základ systému již s jádrem pro domU (z bal9
- nějak jinak, například přes FAI (http://www.informatik.uni-koeln.de/fai/)
Příprava parametrů v /etc/xen-tools/xen-tools.conf pro xen-create-image z balíku xen-tools (vypsány pouze změny, více v komentářích souboru):
lvm = virt dist = lenny # Default distribution to install. gateway = 10.10.10.1 netmask = 255.255.255.0 broadcast = 10.10.10.255 passwd = 1 kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` mirror = http://debian.europen.cz/debian/ serial_device = hvc0 disk_device = xvda
Spuštění výroby virtuálního stroje:
xen-create-image -hostname=test.europen.cz -size=4Gb -swap=256Mb -ip=10.10.10.14 -memory=128Mb -arch=amd64 -role=udev General Information -------------------- Hostname : test.europen.cz Distribution : lenny Partitions : swap 256Mb (swap) / 4Gb (ext3) Image type : full Memory size : 128Mb Kernel path : /boot/vmlinuz-2.6.26-2-xen-amd64 Initrd path : /boot/initrd.img-2.6.26-2-xen-amd64 Networking Information ---------------------- IP Address 1 : 10.10.10.14 [MAC: 00:16:3E:3C:D1:4E] Netmask : 255.255.255.0 Broadcast : 10.10.10.255 Gateway : 10.10.10.1 ...
Logovací soubor:
tail -f /var/log/xen-tools/test.europen.cz.log
Kontrola:
lvscan ACTIVE '/dev/virt/list_root' [9.77 GB] inherit ACTIVE '/dev/virt/list_swap' [512.00 MB] inherit ACTIVE '/dev/virt/test.europen.cz-disk' [4.00 GB] inherit ACTIVE '/dev/virt/test.europen.cz-swap' [256.00 MB] inherit
Provoz
Spuštění a zároveň přepnutí na kozoli:
xm create -c /etc/xen/test.europen.cz.cfg
Stav:
xm list Name ID Mem VCPUs State Time(s) Domain-0 0 20056 8 r----- 185.3 test.europen.cz 3 128 1 -b---- 1.6
Nemodifikované virtuální stroje
Při provozu nemodifikovaných strojů lze narazit na několik obtíží. Nelze se dostat přímo na konzoli, ale je třeba užít 'vnc' nebo obdobný nástroj. V současnosti nelze použít více než jeden CPU pro domU.
Je nutné mít zapnutou HW podporu VT/AMD-V v BIOSu a mít podporu virtualizace na procesoru a chipsetu. Jinak od systému xm create uvidíte:
Error: HVM guest support is unavailable: is VT/AMD-V supported by your CPU and enabled in your BIOS?
Konfigurační soubor
Vypíchnuté nejdůležitější věci, popis parametrů v komentářích originálních ukázkových souborů nebo v dokumentaci:
import os, re arch = os.uname()[4] kernel = "/usr/lib/xen-default/boot/hvmloader" builder='hvm' memory = 512 shadow_memory = 8 vcpus=1 pae=1 acpi=1 apic=1 name = 'list-freebsd' vif = [ 'type=ioemu, bridge=eth0'] disk = [ 'phy:/dev/virt/list_root,ioemu:xvda,w', 'phy:/dev/virt/list_swap,ioemu:xvdb,w', 'file:/mnt/data/images/<BOOT-ISO-FILE.iso>,xvdc:cdrom,r' ] device_model = '/usr/lib64/xen-default/bin/qemu-dm' boot="dc" sdl=0 vnc=1 vnclisten="0.0.0.0" vncconsole=1 vncviewer=0 vncdisplay=0 vncpasswd='pass' serial='pty' stdvga=0 ne2000=0
Přepnutí pořadí bootovacích zařízení se provede úpravou parametru boot ('dc' - napřed z CD-ROM (d), potom z prvního disku (c)).
Jak zjistit číslo portu pro VNC
Vytvořit virtuální stroj a zjistit jeho PID:
xm create demo-debian ps xfa |grep demo-debian | grep vnc 23830 ? Sl 0:05 \_ /usr/lib64/xen-default/bin/qemu-dm -d 35 -domain-name list-debian -vnc 0.0.0.0:0,password ...
Zjistit otevřené porty daného procesu
netstat -lnpa | grep 23830 tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 23830/qemu-dm
Číslo port je 5900, použijeme tedy:
vnc 10.10.10.10:5900
Debian
- nainstalovat
- zavést síťovou kartu modprobe 8139cp
- upravit /etc/apt/sources.list
- apt-get install linux-image-2.6.26-2-xen-686 nebo linux-image-2.6.26-2-xen-amd64
- halt
- upravit konfiguracni soubor pro nativní virtualizaci (nastavit kernel, zrušit hvm, upravit emulace zarizeni)
- nastartovat virtuální stroj
Windows 7
Pro instalaci použít selský rozum.
Zprovoznění RDP
- Menu: Start -> control panel -> System and Security -> System -> Advanced system settings
- karta Remote: zvolit prostřední volbu Allow connection ... v boxu Remote Desktop
- zjistit aktuální IP adresu: Start -> spustit příkaz 'cmd' -> ipconfig
- na Linuxu: rdesktop <ip adresa>
Solaris
OpenSolaris
FreeBSD
Nefunguje na standardní kompilaci z distribuce Debian (je třeba vypnout parametr vmxassist), je třeba provést rekompilaci:
# make world vmxassist=n # make install Created new ramdisk and rebooted.
Pokud tomu tak není, pak je na obrazovku výpis registrů procesoru:
int=0000000d err=00000000 efl=00010046 eip=000090db eax=00050033 ebx=00002820 ecx=00000000 edx=0000a000 esi=00009701 edi=000d1f98 ebp=000d7bea esp=00001800 cs=0008 ds=0000 es=0000 fs=0000 gs=0000 ss=0010 cs:eip=0f 01 15 d0 96 00 00 66-ea e8 90 18 00 b1 20 8e d1 8e d9 8e c1 8e e1 8e-e9 48 0f 22 c0 ea fd 90 ss:esp=0a 69 6e 74 3d 30 30 30-30 30 30 30 64 20 20 65 72 72 3d 30 30 30 30 30-30 30 30 20 20 65 66 6c BTX halted
Odkazy
LVM
- http://www.abclinuxu.cz/clanky/system/lvm2-dynamicke-vytvareni-diskovych-oddilu
- http://www.abclinuxu.cz/clanky/system/lvm-1-uvod-vytvoreni-oddilu
Xen na Debianu
- http://xen-tools.org/index.html
- http://tusforyou.com/virtualization-with-xen-on-debian-lenny-amd64-p2/
- http://www.howtoforge.com/virtualization-with-xen-on-debian-lenny-amd64
- http://www.howtoforge.com/how-to-run-fully-virtualized-guests-hvm-with-xen-3.2-on-debian-lenny-x86_64
Ostatní
- http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=622 (Popis nefunčnosti FreeBSD a jeho řešení v standardní kompilaci Debianu)
O dokumentu
- Verze: 0.1 16.5.2009
- Autor: Michal Švamberg <svamberg@civ.zcu.cz>
- Účel: Konference EurOpen.CZ http://www.europen.cz/
- Licence: volně šiřitelné, pokud bude zachována informace o autorovi a účelu článku.