Vytváříme XENovské hosty

14. 3. 2007
Doba čtení: 4 minuty

Sdílet

V předchozím článku jsme se prokousali suchou teorií virtualizace s pomocí Xenu a nyní se podíváme, jak si vytvořit nového hosta v paravirtualizaci i v plné virtualizaci. Vyzkoušíme si vše pomocí hezkého grafického průvodce a také to zkusíme z příkazové řádky. Vše navíc doplníme velkým množstvím obrázků a příkladů.

Podívejme se nejdříve na paravirtualizaci. Abychom mohli vůbec vytvořit nového hosta, musíme mít jádro s podporou XENU. Většina současných distribucí taková jádra již nabízí. Poznáte je podle toho, že mají v názvu text xen. Například balíček linux-image-2.6.18-4-xen-amd64 v Debianu, nebo kernel-xen-2.6.18-1.2798.fc6.i686.rpm pro Fedoru.

Poté, co nabootujeme do nového jádra, je již vytvoření nového hosta (angl. guesta) jednoduché. Použijeme na to grafický nástroj virt-manager.

xen1

Nejprve se musíme připojit k hypervisorovi (pokud nevíte co to je, tak si nejdříve přečtěte minulý článek). Obvykle je to náš vlastní stroj, ale může to být vzdálený počítač.

xen2

Takhle vypadá obrazovka po připojení. Zatím na stroji neběží žádný host. Jediné co je v provozu, je hostitelský OS neboli dom-0. Zobrazují se nám jeho statistiky, ale s tímto OS nemůžeme dále manipulovat (pozastavit, ukončit).

xen3

Vejdeme do menu a zvolíme File -> New machine a objeví se nám tento dialog. Zde si zvolíme, jak se má systém jmenovat. Tímto jménem bude pojmenován konfigurační soubor našeho XENu a bude nám sloužit jako indentifikátor v seznamech hostů. Až dokončíme průvodce, můžete tento konfigurační soubor nalézt v adresáři  /etc/xen/.

xen4

V tomto dialogu zvolíte, kde máte instalační médium a volitelně zadáte adresu kickstart souboru.

xen5

V posledním kroku už jenom vyberete, zda diskem má být skutečná partition (pak je možné OS bootovat jako questa i jako hosta), anebo zda jeho diskem bude soubor v současné adresářové struktuře.

xen6

Nyní vše zkontrolujeme a necháme si vytvořit guesta.

xen7

Dvojklikem na identifikátor XENu ve virt-managerovi se objeví grafická konzole guesta. Mnou zvolený instalátor nemá grafické rozhraní, takže grafická konzole není dostupná, Proto v menu otevřu View-> Serial console a dostanu tuto stránku, kde už probíhá instalace z kickstartu.

xen8

Průběh instalace v sériové konzoli.

xen9

Instalace dokončena, proběhl reset hosta. PyGrub je program, který se používá jako zavaděč. Běží ještě jako „normální“ program a vybere, kam se předá řízení. Dále už plnohodnotně běží host.

xen10

Nyní ve virt-manageru vidíme vedle původního hostitele i nového hosta a jeho statistiky. Vidíme, že hostitel přišel o jedno GB paměti, které jsme přidělili novému hostu.

xen11

A konečně závěr. V seriové konzoli na nás čeká login prompt.

Takže jsme zprovoznili paravirtualizaci v XENu. Nyní se podíváme na plnou virtualizaci. Ve virt-manageru se postupuje stejně. Pouze pokud máte CPU podporující plnou virtualizaci, na začátku uvidíte tento dialog:

xen13

a po odkliknutí plné virtualizace si již jen vyberete ISO, z kterého chcete bootovat:

xen14

Tahle cesta je pro nás opakováním a tudíž nezajímavá. Takže si pro změnu ukážeme, jak provést instalaci plně virtualizovaného hosta z příkazové řádky.

Pod rootem spustíme tento příkaz:

virt-install -n test -r 300 -f /var/xen/test.img -s 4 --hvm -c ./boot.iso --vnc –vncport=5900

Ten nainstaluje guesta pojmenovaného test, kterému dáme k dispozici 300 MB paměti, jako disk bude sloužit soubor /var/xen/test.img a velikost disku bude 4 GB. Guest se spustí pod plnou hardwarovou virtualizací a nabootuje do souboru boot.iso. Poslední volba je zajímavá. Intuitivně poznáte, že se má spustit VNC, ale proč?
Při plné virtualizaci jsou od sebe host a guesti odděleni a není boha, který by se dostal z jednoho do druhého. Tudíž nejde jednoduše přesměrovat ttyX na hostovu konzoli. Takže jediná možnost je se na questa přihlásit přes ssh (to je dost hloupé, když má dynamickou IP, a ještě hloupější, pokud teprve startujeme instalaci) nebo použít VNC. Xen toto umí. Při startu alokuje paměť, předhodí ji startovanému guestu jako framebuffer a data z tohoto framebufferu posílá ven pomocí VNC protokolu. Standardně se používá port 5900, ale doporučuji si při instalaci zvolit vlastní port, protože pokud budete mít více hostů, pak zbytečně musíte hledat, který volný port zabral druhý a další host. A takto vypadá grafická obrazovka instalátoru pod plnou virtualizací.

xen12

XENovské guesty můžete startovat a spouštět přímo z virt-manageru, ale neuškodí se naučit i ovládání z příkazové řádky.

#xm create Root-demo

Nastartuje našeho hosta, kterého jsme pojmenovali Root-demo. Pokud zadáme

#xm create -c Root-demo

tak se nastartuje host Root-demo a na naši konzoli se přesměruje jeho sériová konzole.

Následujicí příkaz nám vypíše, zda na stroji běží nějaké guesty a jaké (velmi vhodné spustit před resetem stroje, zda zde někdo nepracuje):

# xm list
Name                             ID Mem(MiB) VCPUs State   Time(s)
Domain-0                          0      504     2 r-----  18361.5
rhel4                             9      500     1 r----- 858089.2
s410to420                         7      700     1 -b----  17358.7

Pokud již máme běžícího guesta a chceme se dostat na jeho sériovou konzoli, stačí napsat:

# xm console Root-demo

A na ukončení guesta můžeme spustit:

xm destroy Root-demo

Xen toho umí mnohem více. Z pokročilých technik uložení a obnovení stavu, nebo například migraci zaživa:

#xm migrate Root-demo jinystroj.root.cz --live

Zkopíruje paměť guesta na jiného hosta (předpokládá se, že disk je sdílený) a poté se uspí, ještě jednou se přenesou pouze modifikované části paměti a následně se stroj oživí na druhém hostu. Takto je možné provádět migrace velkých strojů, kde downtime je pouze pár sekund. Migrovanému stroji zůstane stejná MAC adresa a IP, takže z vnější sítě nikdo nic nepozná.

ict ve školství 24

Kromě programu xm je možné pro manipulaci se XENem možno použít i program virsh, který je postaven nad knihovnou libvirt, takže bude možné ovládat nejenom XEN, ale i jiné virtualizační systémy (v CVS je už podpora pro QEMU a časem bude i pro KVM).

Opět děkuji Karlu Žákovi za jeho připomínky k tomuto textu.

Autor článku

Autor pro Root.cz psal převážně Softwarové sklizně. Dnes je zaměstnán ve firmě Red Hat, kde se věnuje vývoji nástrojů pro správce balíků.