Prostředí pro virtuální systém za méně než hodinu

3. 7. 2009
Doba čtení: 7 minut

Sdílet

Když potřebujete opravdu rychle vytvořit prostředí pro několik virtuálních serverů, tak existuje jednoduché řešení, které je ověřeno léty praxe. Jmenuje se XEN a i přes to, že ho některé distribuce vytlačují, pořád dokáže být pro administrátora pohodlnější než např. libvirt.

Jednou z distribucí, která XEN ještě nezavrhla, je Debian Lenny. Má podporu i dalších virtualizačních technologií a když už se rozhodneme vyzkoušet XEN, Debian nebude mít nic proti. O XENu už bylo na rootu něco napsáno, ale spíše pro klikací adminy. Pokud máte na správu raději příkazovou řádku, potřebujete virtuální servery a nevadí vám Debian, bude se vám dnešní návod hodit.

XEN patří do rodiny paravirtualizace. Neodděluje tedy virtualizované prostředí úplně od hardwaru jako tomu je u plné virtualizace, ale víceméně propojuje oba systémy na úrovni jádra tak, aby ten virtualizovaný měl také svoje prostředky. Hostující i hostovaný systém mají společný hardware i procesor a mezi oběma systémy stojí virtuální monitor, který rozděluje přístup k reálnému hardwaru. Paravirtualizace sice nedosahuje možností té plné, ale je jednodušší ji implementovat a neztrácí se tolik výkon. Více se o paravirtualizaci dočtete v článku Úvod do virtualizace pomocí XENu.

Dnes se už některé distribuce od XENu odvracejí. Zatímco dřív se dal na Ubuntu velmi jednoduše nasadit, dnes už to tak lehké není. Oficiální jádro je ve verzi 2.6.18, kterou dnes používají jen opravdu enterprise distribuce. Jiné distribuce nějakým způsobem vytahují patche z tohoto jádra a upravují je pro ty novější. Ostatní se spíše soustředí na KVM, které se pravděpodobně stane budoucností virtualizace na Linuxu. Je to asi škoda, protože vytvořit obraz systému pro libvirt a KVM rozhodně není tak jednoduché jako tomu je se XENem. Dalo by se říct, že pokud chcete rychle nahodit virtualizaci,  nejjednodušší je nainstalovat na stroj Debian Lenny, nainstalovat pár balíčků začínajících nebo končících na „xen“, restartovat, nastavit pár hodnot, vytvořit obrazy systémů a nahodit je. Když máte dobré připojení k Internetu, tak tohle zvládnete do hodiny. Nezávislost na hardwarové podpoře může být v některých nasazeních také velkým plusem. V mnoha oblastech kde se Linux používá, stačí slabší hardware, ale oddělení některých aplikací, případně uživatelů je kriticky důležité.

Libvirt vs. XEN

XEN není jen virtualizace sama o sobě, je to také balík nástrojů, díky kterým dosáhnete svého cíle rychle a spolehlivě. Když se podíváte na náš článek o libvirt, zjistíte, že něco přidat/změnit/od­stranit není tak jednoduché. Libvirt se ve velké míře konfiguruje pomocí XML, a to pro člověka není nejšťastnější způsob. XEN má konfigurační soubory jednodušší a založené na pythoním kódu. Když se podíváte na oba konfigurační soubory vedle sebe, v XENu se budete orientovat hned, u libvirt se dokumentaci nevyhnete.

Kdybych byl donucen používat KVM, asi bych si libvirt nevybral a postaral se o jeho práci svými skripty. Ač k němu existuje „klikátko“ a do něj přispívá i Red Hatem, nevyhovuje mi po žádné stránce.

Instalace XENu do Debianu Lenny

Předpokladem pro další řádky tohoto článku je nainstalovaný Debian Lenny. Když si ho nainstalujete na LVM nebo alespoň máte LVM volume group k dispozici, stanou se virtuální systémy ještě více flexibilními a nebudou se plést někde uprostřed hostujícího systému.

Začneme instalací nezbytných balíků:

  • linux-modules-2.6.26–2-xen-686
  • linux-image-2.6.26–2-xen-686
  • xen-hypervisor-3.2–1-i386
  • xen-shell
  • xen-tools
  • xen-utils-3.2–1

Případně si zamněte koncovku architektury, pokud je pro vás jiná.

Po instalaci se vám přidají do /boot dvě nová jádra. Jedno je určeno pro hostovaný a druhé pro hostující systém. Také jste si nainstalovali nástroje pro vytvoření virtualizovaného systému a jeho ovládání.

Nastavení sítě

Než budeme pokračovat, musíme si vytvořit nějaký bridge, do kterého se zapojí všechny hostované systémy. Budou tak sdílet stejný síťový segment. Nastavení známe již z minulých článků. Do /etc/network/in­terfaces přidáme:

auto br0
iface br0 inet static
        address 10.0.0.2
        netmask 255.255.255.240
        gateway 10.0.0.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off 

Dále zakomentujeme vše, co souvisí s eth0, a necháváme jen samotný bridge a loopback. Označení síťové karty a adresy si upravte podle svého prostředí.

Poté restartujeme síť:

$ /etc/init.d/network restart 

Nastavení XENu

Začneme řešit samotný XEN. U něj toho moc nastavovat nemusíme, pravděpodobně bude všechno fungovat, jak chceme, aniž bychom se podívali na jeho konfigurační soubory. Můžeme v nich ovlivnit nastavení sítě, VNC server, port na kterém služba xend naslouchat a několik dalších parametrů. Pro větší přehled je lepší všechno dávat do konfiguračních souborů jednotlivých virtuálních strojů.

Největší síla XENu je jednoduché vytvoření virtuálního systému. Pokud se použije lokální cache s balíčky, je nový systém připraven během několika minut. Nejdříve je potřeba xen-tools nakonfigurovat a to uděláme v souboru /etc/xen-tools/xen-tools.conf.

lvm = xdisk         # Jaká VG v LVM se má použít
install-method = debootstrap    # instalační metoda
size   = 10Gb           # velikost disku
memory = 256Mb          # velikost paměti
swap   = 512Mb          # velikost swapu
fs     = ext3           # souborový systém
dist   = lenny          # distribuce
image  = full           # typ obrazu
dhcp = 1            # použít DHCP
passwd = 1          # Nabídnou nastavení hesla roota
kernel      = /boot/vmlinuz-`uname -r`      # jaké jádro se má použít
initrd      = /boot/initrd.img-`uname -r`   # Jaký initrd se má použít
arch=i386   # Architektura
mirror = http://ftp.cz.debian.org/debian/ # Zrdcadlo s balíčky
ext3_options   = noatime,nodiratime,errors=remount-ro   # parametry Ext3
ext2_options   = noatime,nodiratime,errors=remount-ro   # Parametry Ext2
xfs_options    = defaults               # Parametry XFS
reiser_options = defaults               # Parametry ReiserFS 

Konfigurační soubor je v originále bohatě okomentován, takže změnit některou z hodnot je hračka. Změnou instalační metody a mirroru lze instalovat i RPM distribuce. Je čas vytvořit náš první systém:

$ xen-create-image --lvm=xdisk --size=10G --hostname=x1 --role udev 

Nástroj xen-create-image přebírá povětšinou stejné parametry jako najdeme v konfiguračním souboru xen-tools.conf. Poslední rozhodnutí se tedy dělá zde. Pomocí hostname nastavíme název virtuálního systému, se kterým se bude dále pracovat, proto si ho zvolte dobře. Posledním parametrem je –role. Pokud nám něco v nainstalovaném systému chybí, můžeme to doplnit pomocí parametru –role. V tomto případě se doplní do systému udev, bez kterého bychom se ani nepřihlásili, ale jsou k dispozici i další role a nic nám nebrání si napsat svoje. Můžeme si vytvořit roli pro LAMP server, poštovní server atd. Již vytvořené najdeme v /etc/xen-tools/role.d/.

Když se všechno provede, podíváme se na nově vytvořený konfigurační soubor /etc/xen/x1.cfg:

kernel      = '/boot/vmlinuz-2.6.26-2-xen-686'
ramdisk     = '/boot/initrd.img-2.6.26-2-xen-686'
memory      = '256'
root        = '/dev/sda2 ro'
disk        = [
        'phy:/dev/xdisk/x1-swap,sda1,w',
        'phy:/dev/xdisk/x3-disk,sda2,w',
                ]
name        = 'x1'
dhcp        = 'dhcp'
vif         = [ 'mac=00:16:3E:CA:25:7B','bridge=br0' ]
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart' 

Oproti již zmíněnému libvirt je konfigurační soubor virtuálního systému mnohem jednodušší a přehlednější. Můžeme tu ovlivnit základní parametry nebo třeba i nastavení sítě. Není problém přidat nový disk, případně síťovou kartu. Lze si také nakonfigurovat, co se stane po událostech jako je pád, restart nebo vypnutí virtuálního systému. Pokud jsme se dostali až sem, stačí nám už jen virtuální systém spustit a začít ho používat.

$ xm create -f /etc/xen/x1.cfg 

Pokud chceme virtuální systém vypnout, použijeme:

$ xm shutdown x1 

Dále se nám může hodit vylistování běžících systémů:

xena:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   491     1     r-----   1127.8
x1                                           4   256     1     -b----      3.3
x2                                           5   256     1     ------      0.8 

Tím XEN se svými možnostmi nekončí. Dokáže systémům dynamicky měnit množství přidělené paměti, a to včetně hostujícího operačního systému. Ten má nastavené určité minimum, které najdeme v konfiguračním souboru /etc/xen/xend-config.sxp. Hostující operační systém má při bootu maximální možné množství přidělené paměti. Když vytvoříme nový virtuální systém, tato paměť se zmenší a přidělí se tomu novému. U nového virtuálního systému můžeme paměť zmenšit, případně zvětšit, ale jen do nastaveného maxima.

xena:~# xm mem-set Domain-0 700
xena:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   700     1     r-----   1137.2
x2                                           5   256     1     -b----      5.8
xena:~# xm create -f /etc/xen/x1.cfg
xena:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   491     1     r-----   1140.0
x1                                           6   256     1     -b----      5.8
x2                                           5   256     1     -b----      5.8 

Když se něco nepovede se sítí nebo i se systémem, bude se nám hodit přímá konzole na systém. K ní se dostaneme opět přes utilitku xm:

ict ve školství 24

$ xm console x1 

Návrat do původního systému provedeme klávesovou zkratkou Ctrl+].

Závěr

XEN si svůj vrchol již zažil, ale pravděpodobně tu s námi ještě nějaký čas bude. Všechno závisí na velkých distributorech jak budou ochotni XEN dále udržovat. Naštěstí existuje snaha o zařazení XENu do hlavní větve jádra. Díky nástrojům v balíku xen-tools je XEN velmi jednoduché nasadit. Konfigurační soubory nejsou tak komplikované jako u libvirt a spolehlivost může potvrdit velká skupina firem, která na XEN vsadila ve své nabídce virtuálních serverů.

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.