Virtualizace

Daniel Vrátil, dan.vratil@mail.muni.cz

Obsah

Co je virtualizace?

Virtualizace umožňuje vytvářet virtuální hardware, ať už jednotlivé komponenty nebo celé počítače. Jako první s ní experimentovala společnost IBM, která v 60. letech rozvíjela koncept virtuální paměti a stránkování. Poprvé pak byla virtualizace implementována před více než 30 lety, když IBM rozdělila své mainframy na virtuální části, což efektivně umožnilo zpracovávat více úloh najednou. V 80. a 90. letech byla virtualizace spíše v útlumu, a ožila opět až v roce 1998 se vznikem společnosti VMWare, která dodnes dodává přední komerční virtualizační řešení. V roce pak 2003 vzniknul open-source hypervizor Xen a v roce 2007 německý Innotek (později koupený Sunem, dnes vlastněný Oraclem) uvolnil pod licencí GPL velmi dnes populární VirtualBox.

Při virtualizaci rozlišujeme mezi tzv. hostitelským systémem (anglicky host) a hostem (anglicky guest).

Proč virtualizovat?

  1. Bezpečnost - virtualizace umožňuje bezpečně oddělit jednotlivé procesy nebo celé systémy do uzavřených kontejnerů.
  2. Škálovatelnost - v případě zvýšené zátěže lze snadno "naklonovat" virtuální systém a spustit jej ve více instancích.
  3. Snadné zálohování - většina virtualizačního software umožňuje vytvářet snapshoty virtuálních strojů. V případě havárie může být virtuální stroj velmi snadno vrácen do stavu z posledního snapshotu.
  4. Vývoj - lze vytvářet virtuální stroje s různými kombinacemi hardware, včetně různých plaforem a architektur procesorů, což umožňuje softwarovým vývojářům vyvíjet a testovat své produkty i pro hardware, ke kterému jinak nemají přístup.

Úrovně virtualizace

Úrovně virtualizace se liší "vzdáleností" virtualizovaného software od fyzického hardware.

Kontejnery

Na Linuxu se nejčastěji používá známý chroot, který umožňuje změnit kořenový adresář procesu. Na BSD systémech se používá BSD jail, který umí navíc omezovat i přístup k jiným zdrojům systému. Dalším podobným mechanismem je OpenVZ, které umožňuje fyzickému serveru spouštět více instancí operačních systému. Pro použití OpenVZ musí být ale speciálně upravené jádro hostitelského systému.

Emulace

Emulátory umožňují spouštět aplikace, které nejsou určeny pro aktuální platformu. Zpravidla se jedná o emulaci konkrétního hardware, v některých případech se emuluje přímo operační systém. Výhodou je tedy například možnost testovat software i na platformách nebo architekturách, ke kterým nemáme přímo fyzicky přístup, nevýhodou je poměrně vysoká režie.

Při emulaci procesorů se používá metody zvané binary translation, kdy emulátor překládá jednotlivé instrukce hosta do instrukcí hostitele. To je samozřejmě velmi drahá operace a způsobuje největší zpomalení. Proto se používá tzv. dynamické rekompilace, kdy si emulátor při prvním provedení kódu uloží přeloženou verzi (nebo její části) a při dalším vykonávání se pak nezdržuje překladem, ale používá rovnou překompilovaný kód.

Mezi nejznámější emulátory patří napříkad QEMU nebo Cygwin (emulátor Unixu pro Windows).

Paravirtualizace

Při paravirtualizaci se používá takzvaný hypervizor. Hypervizor představuje rozhraní, přes které hostované systémy vysílají požadavky a přijímají odpovědi od "hardware". Tento přístup vyžaduje, aby byl hostovaný operační systém upravený tak, aby dokázal s hypervizorem komunikovat. Režije u paravirtualizace je obecně velmi malá. Oblíbený Linuxový hypervizor je například Xen. Zajímavý je také projekt UserMode Linux, který umožňuje spouštět další jádra jako procesy hostitelského systému.

Plná virtualizace

Plná virtualizace spočívá v kompletní virtuální replikaci hardware hostitelského počítače. Pro plnou virtualizaci je potřeba podpory ze strany hostitelského procesoru, u procesorů Intel se tato technologie nazývá Intel VT-x, procesory AMD mají AMD-V. Pokud virtuální stroj má stejnou instrukční sadu jako hostitelský systém, umožňují některá virtualiznační řešení vykonávat kód přímo na hostitelském procesoru. Plnou virtualizaci podporuje například XEN, VirtualBox nebo KVM.

Přístup k VM

Přímo k operačnímu systému běžícímu ve virtuálním počítači se lze připojit všemi tradičními prostředky, SSH, VNC, atd. Na grafický výstup virtuálního počítače se lze připojit buď přes nativní protokol virtualizačního software (jako třeba ve VirtualBoxu) nebo přes nějaký remote desktop protokol, zpravidla VNC (třeba v Qemu), nebo RDesktop (používá se hlavně u Windowsích virtualizačních řešení). Novinkou v této oblasti je pak protocol SPICE vyvíjený společností Red Hat. Přístup přes SPICE v současnosti podporuje jenom Qemu.

Software

Qemu

Qemu je všestranný nástroj. Má dva módy, tzv. user mode a computer mode. V user mode umožňuje Qemu spouštět přímo na hostitelském systému procesy programů určených pro jinou architekturu (vhodné pro testovaní při cross-kompilaci), v computer mode pak může emulovat celý počítač. Dokáže emulovat procesory MIPS, SPARC, ARM, PowerPC a spoustu dalších. Qemu také obsahuje vestavěný Samba server a podporuje přesměrování portů, takže výměna dat mezi hostitelem a hostem je mnohem jednodušší. Další výhodou je, že pokud nepoužijete KVM, není k provozu virtuálních strojů potřeba práv roota. K virtuálním strojům se mimo zmíněného VNC a SPICE dá přistupovat i přes emulovanou sériovou linku.

KVM

KVM (Kernel-based Virtual Machine) je jaderný modul pro plnou virtualizaci. V současnosti podporuje kromě x86-kompatibilních architektur i PowerPC, AMD64 a ARM. Mezi zajímavé vlastnosti patří třeba KSM (Kernel Samepage Merging), kdy jádro slučuje stejné stránky různých virtuálních hostů do jedné, což vede k úspoře paměti (hlavně pokud je spuštěných více klientů se stejným systémem). Tato funkce je vhodná i pro použítí v nevirtualizovaných podmínkách. Další funkcí je možnost živé migrace, kdy je možné virtuální systém přenést na jiný fyzický počítač (dokonce je možnost přenášet i mezi Intelem a AMD) bez nutnosti vypínat virtuální stroj.

VirtualBox

Původně vyvíjený německou firmou Innotek, v roce 2007 uvolněný pod licencí GPL (s tím, že například podpora USB 2.0 a jiné, patenty zatížené technologie jsou dostupné pouze v uzavřeném balíčku), následně zakoupen firmou Sun, nyní tedy ve vlastnictví Oracle. VirtualBox podporuje všechny tři majoritní platformy a je velmi oblíbený pro svou jednoduchost, uživatelskou přívětivost a širokou podporu hostovaných systémů. Pro plnou podporu některých funkcí je do hostovaného systému potřeba nainstalovat speciální ovladače dodávané s VirtualBoxem. VirtualBox umí využívat Intel VM-x a AMD-V technologií, ale obejde se i bez nich. Navíc podporuje i virtuální disky jiných virtualizačních programů, včetně VMWare a Parallels.

VMWare

VMWare je firma, která se zaměřuje na komerční virtualizační řešení. Vývíjí řadu stejnojmenných virtualizačních programů, VMWare Workstation a VMWare Fusion pro tvorbu, správu a provoz virtuálních stanic a bezplatný VMWare Player pro spouštění virtuláních strojů vytvořených ve Workstation nebo Fusion. Pro enterprise sféru je pak určená řada VMWare ESX. Všechny produkty mají plnou podporu Linuxu (jak pro hostitele tak pro hosta). Při virtualizaci emuluje VMWare výhradně vlastní zařízení, ke kterým také dodává ovladače. Díky tomu je možné virtuální stroje neomezeně přenášet. Nicméně i přes to je potřeba do hostitelského systému nainstalovat několik ovladačů.

Díky tomu, že VMWare vzniklo ještě před tím, než se objevily technologie Intel VM-x nebo AMD-V, tak na nich nezávisí.

libguestfs

Knihovna libguestfs slouží k přístupu k virtuálním disků hostovaných systémů. Umožňuje tak ovlivňovat běh virtuálních systémů, pouštět skripty, kontrolovat a nastavovat kvóty, dělat zálohy atd. Zajímavá je také například možnost nastavovat hodnoty v registrech Windowsích hostů.

Literatura