Virtualizace

Lukáš Bumbál, lukas.bumbal@gmail.com

Obsah

Prečo virtualizácia

Virtualizácia - Na jednom hardvéri nám umožňuje spúšťať viacero virtuálnych operačných systémov. Vďaka tomu sa ušetrí na finančných prostriedkoch za nákup nového hardvéru a elektrinu. Toto riešenie je vhodné najmä pre servery. Avšak virtualizácia je dostupná aj pre desktopy. Existuje niekoľko rôznych spôsobov ako virtualizovať PC.

Dôvody:

Ako to funguje?

Hostiteľský program emuluje (predstiera) niektoré hardvérové komponenty (harddisk, grafická a zvuková karta,...). Systém, ktorý beží ako virtuálny, sa na prvý pohľad správa podobne, akoby bol spustený na ozajstnom počítači. Ale všetky údaje, ktoré by ináč zapísal na fyzický harddisk, zapisuje do jediného súboru - virtuálneho disku (môže ich byť aj viac, ale to nie je podstatné).

Podobne je to napr. s grafickou kartou - hostiteľský program zachytí obraz virtuálneho systému a zobrazí ho v okne. Takto môžeme emulovať rozmanitý hardvér. Procesor sa však zvyčajne nepredstiera kvôli pomalosti takéhoto riešenia.

Úrovne virtualizácie

Virtualizácia má rôzne stupne v závislosti na tom, ako veľmi je hosťovaný systém nezávislý na hostiteľskom.

Pojmy:

Kontajnery

IMG

Chroot

Je to vlastnosť Linuxu izolovať nejaký proces od zbytku hierchickej štruktúry filesystému. V praxy sa táto vlastnoť využíva hlavne na zabezpečovanie chodu démonov ako apache prípadne proftpd a podobných dangerous procesov, kedže potencionálny útočník sa cez diery buď v aplikáciach alebo v dynamických web stránkach môže dostať poľahky k citlivým systémovým či iným dôležitým súborom, prípadne v extrémných situláciách vykonať operáciu vedúcu k zhodeniu celého serveru a pod. Tým, že tento proces uzavrieme v chroote, útožníkovy zostáva skrytá dôležitá časť systému a pod

+ bez straty výkonu

Jail

JPracuje na podobnom princípe ako chroot, len je to silnejšie. Jail má totiž všetky vlastnosti chrootu avšak pridáva niečo viac. Jailom si totižto môžte pomerne ľahko vytvoriť virtuálny server tak, že uživateľia a procesy v ňom budú úplne oddelený od zbytku systému, nebudú vidieť a ani môcť meniť procesy bežiace mimo jailu a pod. Tým pádom napríklad v jaile môžme ešte do vätčšej miery obmedziť v ňom bežiaci proces a pod.

Zakázané vytvárať blokové a znakové zariadenia, nahrávať moduly do jadra, mount/umount, modifikovať sieťovú konfiguráciu (interface, adresy, routovacie tabulky). Procesy v jednom jaily nevidia procesy v inom.

OpenVZ/Virtuozzo

Vychádza z virtuozzo, ktoré je proprietárne, avšak OpenVZ je pod GPL. Funguje podobne ako jail.

Projekt typu VServer - nie je úplne open source projektom, jeho kernel je vydaný pod GNU GPL, ale používateľské nástroje sú už pod obmedzenou licenciou. Podporuje len Fedoru a CentOS.

Navyše:

+ strata výkonu (1-3%)

- oba systémy musia byť linuxy (rôzne distribúcie povolené)

Emulácia HW

IMG

Tento spôsob virtualizácie emuluje celý hardware počítača. Každá inštrukcia sa prekladá pre emulovaný HW.

+ môžeme pustit OS určeny pre inú platformu, než je hardware fyzického stroja

- pomalé (10-20% výkonu hosťovaného systému)

QEMU (Quick EMUlator)

Je podobný projektu Bochs, no na rozdiel od neho používa dynamickú emuláciu, preto by mal poskytnúť vyšší výkon. Dynamická emulácia sa od interpretácie každej inštrukcie (ktorú používa Bochs) líši tým, že sa preloží viac inštrukcií naraz (napríklad celý cyklus) a tie sa potom natívne vykonajú. Aj keď je projekt open-source, jeho akceleračný modul, ktorý výrazne zvyšuje výkon emulátora, je žiaľ closed source so špeciálnou licenciou.

QEMU je virtualizačný softvér určený najmä pre tých, čo potrebujú emulovať rôzne hardvérové platformy - konkrétne x86, x86_64, ISA PC, PowerPC, Sparc, MIPS a ARM. Ponúka bohaté možnosti pre profesionálov - virtualizáciu USB, sieťové nastavenia, rôzne VGA BIOSy a pod.

Pracuje v dvoch módoch:

Existuje akcelerátor KQEMU (module pre kernel), ktorý urýchluje emuláciu (na 90% hostiteľského systému).

UML - User Mode Linux

Tento projekt vytvoril Jeff Dike. UML zastupuje strednú cestu medzi projektami typu VServer a projektami, ktoré emulujú hardware (Bochs). UML na rozdiel od VServera vytvára virtuálny hardvér, pod ktorým je možné spustiť ľubovolný OS, ktorý tento hardware podporuje, no v súčastnosti je to ,,len" kernel samotný. Výhodou je spustenie rôznych kernelov naraz - napríklad 2.4 a 2.6. UML označuje kernel, pod ktorým sa spúšťajú ostatné virtuálne kernely ako host kernel. (Virtuálne kernely budem označovať skratkou pre virtual machine - VM). VM používajú host kernel iba na emuláciu hardvéru, inak sú procesy v jednotlivých VM úplne izolované od ostatných VM ako aj od host kernelu. UML poskytuje lepšiu kontrolu zdrojov (CPU, pamäť, súborový systém) ako VServer. Veľmi dobrý článok o UML napísaný jeho autorom vyšiel v Redhat magazine. Ako perličku spomeniem to, že UML podporuje vnáranie (nesting), čiže ak si túto vlastnosť zakompilujete, tak pod jedným VM môžete spúšťať ďalšie VM ...

Výhody:

Nevýhody:

XEN

Je projektom univerzity v Cambdridge a sám seba pomenováva ako virtual machine monitor (VMM) alebo hypervisor. XEN vyžaduje modifikáciu (patchovanie) OS, ktorý chcete virtualizovať, a podobne ako UML vytvára pre VM virtuálny hardvér. Tento postup označuje pojmom paravirtualizácia .

XEN pomenúva VM ako domény (domains). Na rozdiel od UML XEN má vlastný privilegovaný kernel (nazývaný xen0), ktorý sa zavádza po zapnutí počítača z boot loadera (GRUB). Xen0 potom zavedie hlavnú doménu nazývanú ako domain0. Z hlavnej domény je potom možné spúštať a ovládať ostatné užívateľom definované domény (domainU). DomainU pristupujú k hardvéru počítača cez upravené volania do xen0. Xen0 potom používa ovládače Domain0, ktoré pristupujú k skutočnému hardvéru. Aj napriek tomuto zložitému systému prístupu k hardvéru sa jedná o efektívny spôsob a zníženie výkonu oproti nevirtualizovanému systému je v najhoršom prípade menej ako 10% (legenda k odkazu: L-systém bez virtualizácie, X-Xen, U-UML, V-VMWare).

Aj keď sa vo februári tohto roku objavili správy o zahrnutí XENu do zdrojového kódu linuxového kernelu a zatiaľ sa tak nestalo, stále sa o tom uvažuje.

XEN na svojej stránke potvrdzuje budúcu podporu pre systém okien od firmy zaoberajúcej sa mikrosoftvérom . Táto podpora bude len pre nové procesory s hardwarovou podporou virtualizácie. Firme XenSource zaobrejúcej sa komerčným využitím XENu sa už podarilo spustiť okná a tučniaka naraz na vzorke budúceho procesora Intel (viac informáci v poslednej časti, v odseku Budúcnosť je v CPU).

Výhody:

Nevýhody:

WMWare

Program VMware Workstation (častěji označován jen jako VMware) bývá mnohými označován za nejdokonalejší nástroj pro provozování více operačních systémů na jednom počítači bez nutnosti restartování z jednoho systému do druhého (tzv. virtuální počítač). Nejvíce úspěchů slaví na poli testování nasazení nových systémů nebo aplikací do stávajících podnikových struktur. Vždyť kdo by odolal možnosti spustit populární program na systému, který právě má na svém počítači...

Úplná virtualizácia

IMG

Používa virtuálny stroj (hypervisor) na komunikáciu medzi hosťovaným OS a HW.

+ Umožňuje virtualizovať nemodifikovaný OS

+ Výkon oveľa lepší ako v prípade HW emulácie, avšak nie 100% (niečo zožerie hypervisor)

- Nutná podpora HW (procesor, BIOS a doska musia podporovať virtualizáciu)

Novšie procesory intel a AMD podporujú virtualizáciu. Procesory intel používajú technológiu intel virtualization technology (vanderpool), procesory AMD používa označenie "pacifica". Či váš procesor podporuje virtualizáciu, zistíte pomocou /proc/cpuinfo. Intel používa príznak vmx a AMD svm.

root@machine:~># cat /proc/cpuinfo | egrep '(vmx|svm)'
root@machine:~># flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

Kernel-based Virtual Machine (KVM)

Podpora virtualizácie v kerneli (od verzie 2.6.20). Dostupné pod (L)GPL.

Skladá sa z:

Taktiež podporuje migráciu, ako aj funkcie suspend a restore. Celkom rýchlo sa vyvíja kedže je vyvíjané komunitou okolo jadra.

Porovnanie Softwarov:

Literatura