Hlavní navigace

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

Adam Štrauch 3. 7. 2009

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:

$ 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ů.

Našli jste v článku chybu?

25. 9. 2010 15:37

maarty (neregistrovaný)

Zdravím,
mám doma stroj s 32-bitovými procesory a více než 4GB RAM. Používám bigmem kernel, abych mol využívat celou paměť. Chtěl bych se zeptat, zda mi XENovský kernel také dovolí využít celou šířku paměti?
Díky za případné reakce



11. 9. 2009 0:30

Daemon Raven (neregistrovaný)

jo free je, ale licence se generuje na rok, otázka je .. bude free i po roce ? Používám Debian + XEN a nemám žádný problém naopak mi přijde práce s xenem na debianu super, mám jak Gnu/linux v paravirt. Debin, Ubuntu, Mandriva, Suse … a plnou virtualizaci windows 2008, 2003, xp a spostu jinych produktu na jedné mašině.

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?