CIV:Granty/Rozvoj Xen virtuálních strojů/HowTo Xen - EurOpen.CZ Tutoriál

Z HelpDesk

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

Xen na Debianu

Ostatní

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.