Virtualizácia

Adam Saleh,učo 386774, adamthecamper at gmail dot com

Obsah

Čo je to virtualizácia

Virtualizácia je spúšťanie operačného systému ako aplikácie v rámci iného operačného systému. Môže ísť aj o emuláciu hardwaru ako aplikácie. Dôvody prečo by sme chceli spúšťať na jednom pc viac operačných systémov sú v zásade dva:

  1. Potreba spustiť program, ktorý pod iným os/hadwarom než ktorý je práve k dispozícii.
  2. Zjednodušenie správy serverov.

Prvý dôvod často nastane nastáva pri vývoji aplikácií, ked je potrebné testovať aplikácie vyvíjané pre viac platforiem, alebo pre platformu, na ktorej nieje priamy vývoj dosť dobre možný. Týmto spôsobom napríklad funguje SDK pre operačný systém Android, kde ak nemáte k dispozícii telefón s týmto os, môžete testovať aplikáciu vo virtualizovanom Android OS pod qemu. Podobne je s qemu prepojený PokyLinux build systémom pre embedded zariadenia.

Okrem vývojárov začínajú v čoraz väčšom množstve využívať aj bežní uživatelia. Pre tých ktorí používajú Linux, alebo MacOs X je virtualizácia populárnym spôsobom ako spúštať aplikácie vyvíjané výlučne pre operačný systém Windows. Medzi populárne programy na takúto uživatelskú virtualizáciu patrí napr. VirtualBox, alebo Parallels. Windows od verzie 7 používajú virtualizáciu na podporu zastaralých aplikácií, ktoré vyžadujú buď Windows XP, alebo Internet Explorer 6.

Pre administrátorov však vie virtualizovanie operačných systémov priniesť

Virtualizovaná inštancia os je väčšinou špecializovaná na poskytovanie jednej služby, čo je výhodné z hladiska bezpečnosti. A pretože z pohľadu hosťovského systému je ten virtualizovaný väčšinou reprezentovaný len niekoľkými súbormi, je jednoduché aj zálohovanie.

Prostriedky

V tejto časti sa zameriam na rôzne prostiredky virtualizácie, hlavne z pohľadu nasadenia na x86 linuxový server. Základné pojmy:

host
systém bežiaci priamo na hardwari zodpovedajúci za virtualizáciu
guest
virtualizovaný systém
hypervizor
jednotka ktorú host používa na virtualizáciu

Jail/Chroot

Pri unixovom chroote sa nejedná o virtualizáciu, z hľadiska administrátora však ide o menej náročný spôsob ako docieliť lepšie oddelenie služieb poskytovaných na jednom serveri. To sa docieli zmenou umiestnenia koreňového folderu filesystému pre uväznený proces. Tomu potom vieme obmedziť prístup len k tým súborom, ktoré potrebuje.

BSD Jail na rozdiel od chrootu obmedzuje prístup nielen k filesystému,ale aj k sieťovým rozhraniam a separuje od seba aj procesy a uživateľov. Uväznený proces sa teda nedostane z Jailu ani ak by mal root-ove práva. Pre Linux existuje Linux Container.

Paravirtualizácia

Ak využívame paravirtualizáciu, guest operačný systém musí vedieť s hostom spolupracovať. To je väčšinou vyriešené tak, že guest systém beží s upravným kernelom. Vďaka spolupráci vie guest využívať na operácie ktoré by boli na virtualizáciu náročné služby hosta. Teoreticky by sme za paravirtualizáciu mohli považovať aj BSD Jail.

UserMode Linux:
možné spustiť linuxový kernel ako bežný proces. Podpora pre hostovanie je prítomná v jadre, guest kernel sa väčšinou dá nájsť v balíčkovacom systéme a na oficiálne stránke je prívetivé howto.Ak si chcete skompilovať guest jadro, nezabdnite špecifikovať ARCH=um.
XEN:
Systém tvorí vlastný hypervizor, riadiaci guest systém (dom0) a ostatné guest systémy (domU). Ako guest vie bežať NetBSD,FreeBSD, OpenSolaris, NovelNetware a Linux. Linux má pre domU podporu v kerneli od verzie 2.6.24 Hlavnou nevýhodou Xenu je, že patche pre Linux, aby mohol byť dom0 guest niesú začlenené do kernelu a momentálne existuje niekoľko verzií, najnovšia pre kernel 2.6.32.

Klasická Virtualizácia

Tento druh virtualizácie sa líši tým, že guest operačný systém nemá ako rozlíšiť, či je hardware na ktorom beží skutočný, alebo virtualizovaný. Na jej použitie na x86 platforme je vhodné mať podporu virtualizácie na procesore, aj bez nej ale vedia niektoré systémy celkom efektívne pracovať.

XEN:
Xen poskytuje aj toto riešenie, pri ktorom nieje potrebné žiadnym spôsobom upravovať guest systém. To umožňuje napríklad spúštanie os Windows pod týmto systémom. Na stránke však varujú že môže byť pomalšie než para-virt riešenie.
VirtualBox:
ide o virtualizačné riešenie od Oracle (predtým Sun). Podporuje veľké množstvo systémov a je obľúbený pri použití na desktopoch kvôli jendoduchej inštalácii.Vie využívať podporu virtualizácie v procesore, ale nezávisí od nej.
KVM:
Hypervízor zabudovaný priamo v jadre linuxu, používa sa v kombinácii s Qemu. V tejto kombinácii dosahuje Qemu takmer natívnej rýchlosti.Nevýhodou je nutnosť podpory virtualizácie v procesore.Medzi hlavnú výhodu patrí dlhý zoznam podporovaných guest os

Administrácia

Libvirt

K všetkým týmto spôsobom je možné pristupovať pomocou knižnice Libvirt. Tá sa snaží byť zastrešujúcim projektom nad rôznymi virtualizačnými systémami, a poskytuje k nim API a základné nástroje na administráciu. Api je pre jazyk C, takže sú už k dispozícii hooky aj pre iné jazyky, ako napr. Python, alebo Java. Libvirt momentálne podporuje Kvm, Xen, VMWare, Virtualbox, UserModeLinux, LinuxContainer, a ďalšie.

Virsh

Základným nástrojom na administráciu je virsh. Okrem nastavovania vlastností samotných inštancií virtuálnych strojov sa zaoberá aj nastavovaním virtuálnych sietí. Nastavenie stroja je uložené definičnom xml súbore, podobne je riešené aj nastavenie jednotlivých virtuálnych sietí. Nainštalovanie os potom spočíva vo vytvorení systému v image-súbore, (načastejšie ide o raw loop file, ale podporovaných formátov je veľa), a v napísaní definičného domain.xml súboru. V definičnom súbore sa nastavuje cesta k image-súboru, príslušnosť k virtuálnej sieti aj druh virtualizácie (kvm, qemu, xen,...). Na inštaláciu je možné použiť aj program virt-install, ktorý tieto kroky rieši za vás. Nastavenie siete je riešené obdobnými príkazmi len s predponou net (net-define, net-start ...). K používaniu virsh by som okrem manuálovej stránky virsh a samotnej stránky libvirtu odporúčil aj dokumentáciu k Fedore 13.

Literatura