MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
•P
%, \J/
&
Porovnání virtualizačních technik BAKALÁŘSKÁ PRÁCE
Lukáš Nový
Brno, 2007
Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Vedoucí práce: Mgr. Jan Kasprzak 11
Poděkování Na tomto místě bych chtěl poděkovat všem lidem, kteří přispěli k dokončení této práce aťjiž radami nebo jen psychickou podporou. Mé díky patří mimo jiné panu Janu Kasprzakovy, pod jehož vedení jsem práci psal, společnosti Red Hat, pro kterou je práce vypracována, společnosti Previa za zapůjčení hardware a Linusi Torvadsovi a komunitě za skvělý operační systém.
m
Shrnutí Cílem práce je seznámit čtenáře s problematikou virtualizace operačních systémů pod operačním systémem Linux. Práce rozebírá metody a způsoby jak běhu operačních systémů dosáhnout a představuje jednotlivé produkty a nástroje virtualizačního trhu. Součástí práce je též srovnání těchto nástrojů z hlediska výkonu, požadavků a schopností.
IV
Klíčová slova virtualizace, emulace, simulace, IA32, x86-64, Linux, hypervisor
Obsah 1
2
3
4
5
Úvod 1.1 Obsah práce 1.2 Základní pojmy 1.3 Důvody pro virtualizaci Techniky virtualizace 2.1 Emulace a simulace 2.2 Plná/nativní virtualizace 2.3 Paravirtualizace 2.4 Virtualizace na úrovni OS Nástroje 3.1 Xen 3.2 QEMU 3.3 VMWare 3.4 VirtualBox 3.5 UML 3.6 Linux-VServer 3.7 OpenVZ 3.8 Čestná zmínka: DOSBox 3.9 Přehled Srovnávací testy 4.1 Hardware 4.2 Metodika a výsledky Závěr
2 2 3 5 7 7 7 8 9 10 10 12 14 16 17 18 19 19 20 21 21 21 26
1
Kapitola 1
Úvod V současné době pronikají počítače a informační technologie stále více do každodenního života, výkon počítačových systému se dle Moorova zákona zdvojnásobí každých 18 měsíců a většina dnešních aplikací je schopna tento potenciál využít. Existují však oblasti, kde by alokace celého výkonu počí tače pro jedinou aplikaci nebo službu byla ekonomicky nevýhodná. Virtualizační techniky, které tato práce rozebírá, nám umožňují nejen vyřešit tento problém, ale nabízejí i mnoho další pozitiv. 1.1
Obsah práce
Záběr této práce zasahuje od virtualizace celých počítačových architektur až po virtualizaci na úrovni operačního systému, jako hostující operační systém byl zvolen Linux na platformách IA32 a x86-64. V první kapitole rozebírá metody jak virtualizované prostředí vytvořit a jaká jsou pozitiva a negativa jednotlivých přístupů. Následující kapitola srovnává dostupné nástroje pro provoz těchto prostředí. Ve třetí kapitole dojde na srovnání výkonu popsaných nástrojů syntetickými benchmarky a reálnou aplikací Apache.
2
1. ÚVOD
1.2
Základní pojmy
I když tato práce míří, co se odbornosti týče, spíše do vyšších sfér a pro pochopení je třeba, aby se čtenář v oblasti informačních technologií dobře orientoval, pokusím se zde vysvětlit několik základních pojmů. Virtualizace V oblasti informačních technologií je pojem virtualizace nejčastějí vykládán jako abstrakce počítačových prostředků. Otevřená encyklopedie Wikipedia definuje virtualizaci následovně: Jako virtualizace se v prostředí počítačů označují postupy a tech niky, které umožňují k dostupným zdrojům přistupovat jiným způsobem, než jakým fyzicky existují, jsou propojeny atd. Virtualizované prostředí může být mnohem snáze přizpůsobeno potřebám uživatelů, snáze se používat, případně před uživa teli zakrývat pro ně nepodstatné detaily (jako např. rozmístění hardwarových prostředků). Virtualizovat lze na různých úrov ních, od celého počítače (tzv. virtuální stroj), po jeho jednotlivé hardwarové komponenty (např. virtuální procesory, virtuální paměť atd.), případně pouze softwarové prostředí (virtualizace operačního systému).[2] Dle elaborátu pánu Popeka a Golberga[3] musí virtuální prostřední spl ňovat následující podmínky: 1.
Věrohodnost. Software běžící ve virtualizovaném prostředí musí mít pocit, že beží na fyzickém hardware.
2.
Výkonnost. Drtivá většina instrukcí virtualizovaného stroje je prová děná přímo v hardware.
3.
Bezpečnost. Virtualizovaná prostředí se nemohou vzájemně ovlivňovat ani přistupovat k fyzickému hardware.
Jak je později v této práci popsáno, architektury IA32 a x86-64 nemají přímé prostředky pro tvorbu virtualizovaných prostředí, která by splňovala tyto kritéria. 3
1. ÚVOD
Platformy IA32 a x86-64 Trhu osobních počítačů a serverů dnes dominuje platforma IA32 (Intel Ar chitektuře, 32-bit), své prvenství však v nejbližších letech pravděpodobně předá platformě x86-64. Kromě velice podobné (zpětně kompatibilní) in strukční sady sdílí x86-64 s IA32 také režimy práce procesoru: •
reálný režim (běh zastaralých OS, start počítače a zavedení moderního OS)
•
režim Virtual 8086 (zastaralé OS v režii moderních OS)
•
chráněný režim (moderní OS).
Architektura x86-64 označuje tyto režimy jako skupinu Legacy mode a při dává režimy 64-bit a režim kompatibility (skupina Long mode), velikost adresního prostoru je potom rozšířena z 32 bitů na 64 bitů. Obě architektury jsou řazeny mezi CISC (Complex Instruction Set Computer). Chráněný režim procesoru poskytuje 4 stupně oprávnění: ring 0 (nej vyšší oprávnění) - ring 3 (nejnižší oprávnění). Současné operační systémy používají ring 0 pro běh kódu jádra a ring 3 pro aplikace. Technologie IVT a AMD-V Architektury IA32 a x86-64 nebyly od začátku navrhovány pro provoz virtualizovaných prostředí. Na základě virtualizačního boomu posledních let přišla společnost AMD s rozšířením architektury x86-64 o instrukce umož ňující tzv. hardwarově asistovanou virtualizaci označované jako AMD-V (AMD's Virtualization). Krátce na to implementovala společnost Intel tech nologii IVT (Intel Virtualization Technology) fungující na podobném prin cipu. Procesory s těmito technologie lze považovat za virtualizovatelné podle kriterií Popeka a Goldberga. Technologie IVT a AMD-V rozšiřují standardní stupně oprávnění (ring 0-ring 3) o další dva režimy. •
Režim hostitele (Host mode). Na této úrovni beží hypervizor, který se stará o vytváření jednotlivých virtuálních strojů, definici přístupových práv a přepínání do režimu hosta.
•
Režim hosta (Guest mode). Tento režim je určen pro běh virtualizovaných systémů. Privilegované instrukce mohou, ale nemusí (dle oprávnění přidělených hypervizorem) vyvovat návrat do režimu hostitele. 4
1. ÚVOD
Jak v režimu hosta i hostitele jsou k dispozici standardní stupně opráv nění. Hypervizor Hypervizor, též označovaný jako Virtual Machine Monitor (VMM), je soft warové vybavení umožňující běh virtualizovaných prostředí. Rozeznáváme 2 základní typy[l]: •
Typ 1 hypervizor beží přímo na hardware počítače. Všechny systémy (hostované i „hostující") tedy beží s nižším stupněm oprávnění než má hypervizor.
•
Typ 2 hypervizor je software běžící v hostujícím operačním systému.
Linux Linux je jádro moderního POSIX-kompatibilního operační systému UNIXové typu šířené pod licencí GPL (General Public Licence). Za jeho vznikem stojí Linus Torvalds, který se v roce 1991 jako student Helsinské Univerzity pokusil vytvořit nekomerční náhradu operačního systému Minix. Původně byl vyvíjen pro platformu IA32, ale díky nadšení tisíců hackerů z celého světa jej dnes můžeme používat na více než dvacítce dalších architektur. Rozsah jeho použití sahá od nejmenších embedded systémů, přes osobní počítače až po nejvýkonnější počítačové clustery na světě. V současné době je Linux považován za nejvýraznější příklad svobodného software. 1.3
D ů v o d y pro virtualizaci
Existuje několik základních důvodů proč techniky virtualizace nasadit. Již v úvodu jsem zmínil důvody ekonomické. Pokud aplikace není schopna využít celý potenciál počítače, je vhodné několik takových aplikací kon solidovat a nechat je výkon počítače sdílet. Mnoho společností vsadilo na dnešní trend pronájmu procesorového času nebo celých virtuálních strojů. S konsolidací souvisí i pojem separace, je totiž vhodné aplikace izolovat ať již z důvodu bezpečnosti nebo vzájemné nekompatibility. Obrovskou výhodou, kterou virtualizace přináší jsou prostředky pro správu takto virtualizovaných prostředí. Lze sem zahrnout možnosti jako migrace mezi fyzickými počítači (ať již z důvodu selhání hardware nebo optimalizace výkonu), oddělení úložiště dat od výkonné části hardware, vzdálenou správu a sledování dostupnosti. 5
1. ÚVOD
Naproti serverovému prostředí přináší nasazení virtualizace na stolní počítači například možnosti běhu několika různých operačních systému současně. Existují naneštěstí aplikace, které nejsou dostupné pro operační systém, který je nasazen na počítači primárně, bez virtualizace by si použití takovéto aplikace vyžádalo změnu operačního systému nebo samostatný hardware pro každý operační systém. Na virtualizovaném hardware je možno testovat nové aplikace a ope rační systémy. Nabízí se i možnost vývoje software pro zatím fyzicky nee xistují hardware a podobně.
6
Kapitola 2
Techniky virtualizace Při výběru virtualizační techniky je třeba zvážit několik faktoru. Základnímy kritérii výběru je hostovaná aplikace či operační systém, jejich kom patibilita s hostujícím prostředím, možnost úpravy a případné rekompilace, nároky na výkon hostovaného systému a režie virtualizační techniky 2.1
Emulace a simulace
Emulace patří mezi nejstarší techniky virtualizace. Princip fungování je za ložen na vytvoření celého virtuálního stroje softwarovými prostředky hos tujícího systému. Díky tomu není nutné hostovaný systém nijak upravovat a je možné takto provozovat i aplikace pro jinou architekturu než má hostující systém. Nevýhodou je obrovská režie tohoto přístupu. Každou instrukci je nutno buď interpretovat stavovým automatem představující virtuální pro cesor nebo přeložit do instrukční sady kompatibilní s hostujícím systémem (dynamická rekompilace). Stejný princip je použit i pro simulaci periférii a operační paměti. 2.2
Plná/nativní virtualizace
Při plné virtualizaci nedochází k interpretaci strojového kódu hostovaného systému, namísto toho je kód vykonáván přímo v procesoru hostujícího systému. Toto s sebou nese požadavek kompatibility instrukční sady hos tovaného a hostujícího systému. Ze zřejmého důvodu však není hostovanému systému povolen přístup k fyzickému hardware, hostující systém se tedy musí postarat o jeho dosta tečnou simulaci. Na architekturách IA32 a x86-64 s podporou hardwarově asistované virtualizace je dosažení plné virtualizace relativně snadné, hos tované operační systémy jsou spuštěny v režimu hosta a hypervizor běžící v režimu hostitele se postará o simulaci privilegovaných instrukcí. Pokud chceme provozovat virtualizovaná prostředí na stroji s proceso7
2. T E C H N I K Y V I R T U A L I Z A C E
rem bez technologií IVT a AMD-V, je k dozažení plné virtualizace potřeba využít sofistikovanějších technik. Jak již bylo zmíněno v popisu architektur IA32 a x86-64, běžící kód má vždy přidělen stupeň oprávnění. O kód běžící v ring 3 se ve většině případů není třeba starat a je jej možno spouštět přímo. Mohlo by se zdát, že pro virtualizaci kódu jádra (ring 0) hostovaného sys tému by stačilo jej nechat běžet v ring 3, privilegované instrukce pak vedou k porušení bezpečnosti a jsou předány hypervizoru k simulaci. Toto však na architekturách IA32 a x86-64 není možné: •
Existují instrukce, které ač jsou určeny pro privilegovaný režim, ne vyvolají porušení bezpečnosti — lze sem zařadit například instrukce provádějící čtení stavu procesoru.
•
Některé instrukce se chovají jinak v ring 0 a ring 3. Příkladem je in strukce popf (nastavení stavu procesoru ze zásobníku). V privilegova ném režimu lze takto nastavit IF (interrupt flag), pokud se pokusíme nastavit IF v ring 3, je toto tiše ignorováno.
•
Porušení bezpečnosti je velice drahé.
Většina virtualizačních nástrojů toto řeší buď emulací veškerého kódu v ring 0 nebo jeho dynamickou rekompilací na kód simulující původní činnost a používající pouze neprivilegované instrukce. Stejně jako u emulace není potřeba hostovaný operační systém upravo vat a výkonostní režie tohoto principu je relativně nízká. 2.3
Paravirtualizace
Další mylnou představou je, že plná virtualizace s hardwarovou asistencí moderních procesorů je výkonostně to nejlepší, čeho lze na architekturách IA32 a x86-64 dosáhnout. I když bylo dosaženo minimální režie, co se vyko návání kódu týče, stále bylo nutno v předchozích metodách pro hostovaný systém simulovat ostatní hardware. Metoda paravirtualizace žádnou simu laci neprovádí. Namísto toho je hostovaný systém upraven tak, aby místo přístupu k hardware pouze přímo kontaktoval hostující operační systém a sdělil mu své požadavky. Jedinou nevýhodou tohoto přístupu tedy zůstává nutnost hostovaný systém upravit, z toho plyne, že jeho implementace na systém bez pří stupných zdrojových kódů je téměř nemožná. Moderní nástroje proto tuto metodu kombinují s plnou virtualizaci. O virtualizaci procesoru se postará plná virtualizace a většinu hardware díky paravirtualizaci není třeba simu lovat. 8
2. T E C H N I K Y V I R T U A L I Z A C E
2.4
Virtualizace na úrovni OS
Poslední zde popisovaná virtualizační technika se od ostatní poměrně vý razně liší. Při virtualizaci na úrovni operačního systému nedochází k virtualizaci ani simulaci celého virtuálního stroje. Z tohoto faktu plyne mimo jiné to, že zde souběžně nebeží dva operační systémy, ale dochází pouze k virtu alizaci prostředí pro běžící aplikace. O separaci procesů a prostředků se zde stará jádro hostujícího operačního systému. Režie této metody je prakticky neměřitelná.
9
Kapitola 3
Nástroje Cílem práce je srovnání virtualizačních nástrojů, vybral jsem proto několik zástupců virtualizačního trhu, pokusím se srovnat jejich vlastnosti a popsat principy, na kterých jsou založeny 3.1
Xen
Projekt Xen byl vytvořen výzkumným týmem na Univerzite v Cambridge pod vedenín lana Pratta. Později Ian Pratt založil společnost XenSources, Inc., která se v dnešní době stará o vývoj a podporu toho volně šířitelného projektu. Podporované techniky Hypervizor Xen se zařazuje mezi typ 1, beží tedy i „nad" hostujícím ope račním systémem. Mezi podporované platformy patří IA32, x86-64, IA-64 a PowerPC. Primárně Xen podporoval pouze paravirtualizaci, s příchodem podpory hardwarově asistované virtualizace podporuje od verze 3.0 i nativní virtualizaci. V případě paravirtualizace beží hypervizor v ring 0, hostující a hosto vané operační systémy (v terminologii Xen nazývané domény) beží v ring 1-3. Při nativní virtualizaci mají hostující i hostovaný systém k dispozici všechny ringy. Operační systémy Hostující operační systémy označuje Xen jako domO (doména 0), hostované jako domU (neprivilegovaná doména). Většinu unixových systému s otevřeným kódem je možno použít jako domU, mezi podporované systémy patři Linux, OpenBSD, NetBSD, FreeBSD, Pian 9, Minix, OpenSolaris, Netware a GNU/Hurd. Jako domO lze 10
3. NÁSTROJE
použít Linux, na OpenBSD a FreeBSD podpoře se pracuje. V případě použití hardwarově asistované virtualizace je možné v domU provozovat libovolný neupravený operační systém.
Virtuální hardware Samotný hypervizor XEN obsluhuje jen velice malou část hardwarového vybavení počítače a zbytek hardware ponechává systému v domO. Do jeho režie spadá řízení procesoru, operační paměti a přístupu k periferiím. Dále poskytuje prostředky pro komunikaci jednotlivých domén mezi sebou. O veškerý ostatní hardware se stará hostující systém v domO, ten kromě obsluhy těchto zařízení poskytuje i virtuální hardware pro ostatní domény. Jako diskové úložiště lze pro hostované operační systémy použit libo volný „soubor" s blokovým přístupem (tedy i diskové oddíly a podobně). Virtuální síťové karty jsou propojeny do hostujícího systému na odpoví dající virtuální zařízení, je tedy možný jak přístup přes nat tak i bridge a podobně.
Nástroje pro správu Kromě dodávaných Xen Tools existuje pro Xen mnoho dalších Konzolí pro správu (Management Consoles): Enomalism, MLN, HyperVM, ConVirt a virt-manager. Jednou z klíčových výhod Xen jako hypervizoru schopnost migrace bě žících virtuálních strojů. Stav virtuálního stroje je na pozadí zkopírován na cílový fyzický hardware a při finálním přepnutí dojde k výpadku přibližně v rozmezí 60-300 ms. Stejné principy jako při migraci požívá Xen i pro uspání virtuálního stroje. 11
3. NÁSTROJE
3.2
QEMU
Projekt QEMU sám sebe označuje jako emulátor a virtualizér s otevřeným kódem. Původním cílem projektu Fabrice Bellarda bylo vytvoření emulá toru procesoru, během vývoje se k tomuto přidala emulace celého virtuál ního počítače a schopnost plné virtualizace (bez hardwarové asistence). Podporované techniky QEMU používá techniku dynamické rekompilace a dokáže pracovat ve dvou režimech: •
režim emulace uživatelského režimu Tento režim umožňuje spuštění binárních souborů určených pro jinou platformu. V případě kombinace toho přístupu s projektem Wine je možné takto spouštět aplikace pro OS Windows na víceméně libovolné platformě.
•
režim emulace celého virtuálního stroje V tomto režimu dochází k emulaci celého počítače a je tedy možno provozovat libovolný neupravený operační systém.
Přestože je projekt zařazován mezi emulátory, existuje pro něj nadstavba KQEMU — akcelerátor umožňující běh uživatelského kódu hostovaného systému bez nutnosti emulace (pro jádro a periferie se stále používá emu lace). Tento princip lze označit za kombinaci mezi plnou virtualizací a emu lací. QEMU dokáže emulovat tyto architektury: IA32, x86-64 (pouze v re žimu emulace celého systému), ARM, SPARC, PowerPC a MIPS. Na mnoha dalších se pracuje. Nároky na hostující procesor jsou kompatibilita s IA32, x86-64 nebo PowerPC (další ve vývoji). KQEMU akcelerátor lze použít na platformě IA32 i x86-64.
Operační systémy Jako hostující OS si můžeme při použití QEMU zvolit jak většinu UNIXových systému tak i OS Windows a vzhledem k možnosti emulace celého počítače lze pod QEMU provozovat prakticky libovolný operační systém. 12
3. NÁSTROJE
Virtuální hardware Ve virtualizovaném prostředí jsou k dispozici standardní vstupně /výstupní periferie jako je PS/2 klávesnice, myš a grafická karta kompatibilní s VESA nebo Cirrus CLGD 5446 PCI — tyto jsou standardně propojeny SDL do prostředí hostujícího systému, existuje možnost vstup/výstup přesměrovat přes VNC nebo jej úplně zakázat. Disková úložiště jsou přístupná přes 2 IDE kanály, nechybí ani pod pora pro disketovou mechaniku, zvukovou kartu (Creative SoundBlaster 16, ENSONIQ AudioPCI ES1370, Adlib) a virtuální USB hub. Emulovat lze síťové karty kompatibilní s NE2000, RealTek 8139, AMD Lance a SMC91clll. Hostovaný systém lze takto propojit do sítě v několika režimech: •
tuntap vytvoří ethernetový segment mezi mezi virtualizovanou síťo vou kartou a zařízením tapX hostujícího systému. Pro použití toho režimu je nutné mít oprávnění uživatele root. Příklady použití: -
bridge s fyzickou síťovou kartou — virtuální stroj má plný pří stup na fyzickou síť.
-
nat do fyzické sítě — např. pomocí nástroje iptables lze povolit přístup do venkovní sítě překladem adres.
-
host-only networking — oba systémy sdílí stejný segment sítě, který není z fyzické sítě přístupný.
•
usermode net (slirp) vytvoří na straně hostující systému SLIP tunel a přístup do venkovní sítě je pak umožněn přes integrovaný nat router. Tento přístup nevyžaduje žádná speciální oprávnění a další nastavení na straně hostujícího systému.
•
socket režim umožňuje propojení vytvořením ethernetového seg mentu mezi více virtualizovanými systémy. Tento přístup taktéž ne vyžaduje speciální oprávnění.
Nástroje pro správu Základní ovládaní virtuálních strojů se provádí přes příkazovou řádku, krom toho je k dispozici „pouze" konzole umožňující zastavení procesoru a uspání. Migraci na jiný fyzický hardware je nutno provádět ručně. 13
3. NÁSTROJE
3.3
VMWare
Produktová řada společnosti VMWare Inc. je všeobecně považována za vedoucího v oblasti virtualizace na platfomách IA32 a x86-64. Většina pro duktů této společnosti je komerčního rázu a zdrojové kódy nejsou k dispo zici. Portfolio VMWare čítá několik produktů: •
VMWare Workstation Tento produktu se zaměřuje na provoz virtuálních strojů na desktopových systémech s operačnímy systémy Linux, Windows a *BSD. Mezi významné vlastnosti patří schopnost vytváření „snímků" (snapshots) virtuálních strojů — toto umožňuje uložit stav virtuálního stroje v li bovolném okamžiku a pak se k němu vrátit, dále pak podpora pro 3D akceleraci nebo připojení USB zařízení.
•
VMWare Fusion VMWare, Inc. takto označuje produktovou řadu svých nástrojů pro MacOS X na počítačích s procesory IA32 a x86-64 společnosti Apple. Mezi zajímavé vlastnosti patří možnost běhu systémů instalovaných pomocí Boot Camp a podpora pro 3D akceleraci hostovaného systému.
•
VMWare Player Tento zdarma šířený produktu umožňuje spuštění virtuálních strojů vytvořených jinýmy nástroji portfolia, tímto však jeho možnosti končí.
•
VMWare Server (dříve VMWare GSX Server) Další zdarma šířený produktu se vyznačuje client-server architektu rou umožňující snadnou vzdálenou správu. V porovnání s VMWare Workstation je ochuzen o možnosti jako je připojení USB zařízení, 3D akcelerace a možnosti klonování virtuálních strojů.
•
VMWare ESX Server Tato platforma využívající silně upravenou Linuxové distribuci Red Hat Enterprise Linux. Toto semknutí s operačním systémem umož ňuje velice dobrou kontrolu nad přiřazováním prostředků jednotli vým virtuálním strojům. Servisní konzole (Service Console, COS nebo také vmnix) zde obstarává veškeré možnosti správy ať již přes CLI, webový přístup nebo vzdálenou konzoli podobně jako u VMWare Server. 14
3. NÁSTROJE
•
VMWare Virtual Infrastructure Balík produktů označovaný jako VMWare Virtual Infrastructure do sebe zahrnuje produkty VMWare ESX Server, VMWare Virtual Center (monitorování a správa), Virtual SMP (podpora virtualizace multiprocesorového systému), VMotion (migrace virtuálních strojů) a také služby jako VMWare High Availability, VMWare Distributed Resource Scheduler a VMWare Consolidated Backup.
Podporované techniky Produkty VMWare byly první na platformě IA32 umožňující plnou virtualizaci, dnes dokáží využít i hardwarově asistované nativní virtualizace. Podporovanými architekturami jsou IA32 a x86-64. Operační systémy Jako hostující operační systém je vyžadován Linux, Windows, MacOSX nebo některá varianta BSD systému. Ve virtuálním prostředí lze provozovat prakticky libovolný systém odpovídající architektury. Virtuální hardware Virtuálnímu stroji je nabídnuta standardní sestava vstupně/výstupních za řízení, ty jsou v závislosti na produktu buď propojeny do prostředí hos tujícího systému přímo nebo přes upravený protokol VNC přivedeny na vzdálenou konzoli. Disková úložiště lze provozovat přes IDE i SCSI, v serverových pro duktech jsou podporovány i vzdálená uložitě jako FC SAN, iSCSI a NFS. Ze strany hostujícího systému lze takto poskytnout fyzické disky a média, virtuální disky v souborech a ISO obrazy optických médii. Podpora pro síťové karty umožňuje několik režimu provozu: •
bridged networking — virtuální síťová karta je propojena s fyzickým segmentem sítě
•
nat networking — virtuálnímu segment sítě je umožněn přístup do venkovní sítě přes integrovaný nat router
•
host-only networking — sdílený síťový segment mezi hostujícím a hostovaným strojem, který není z venku přístupný
Desktopové produkty umožňují též propojení fyzických USB zařízení do virtuálních strojů. 15
3. NÁSTROJE
Nástroje pro správu Základním administrativním rozhraním je u těchto produktů GUI obalu jící virtuální obrazovku, u serverových produktů je k dispozici vzdálená konzole se stejnou funkcionalitou. VMWare ESX Server, jak již bylo zmí něno v představení produktu, umožňuje správu přes CLI, konzoli, webové rozhraní a aplikací VirtualCenter. Služba VMotion umožňuje transparetní přesun virtuálního stroje mezi fyzickými počítači a dosáhnout tak nulového výpadku. 3.4
VirtualBox
Produkt společnosti InnoTek šířený primárně pod komerční licenci (exis tuje i ochuzená verze s GPL licencí) používá ve svém jádru dynamický rekompilátor z projektu QEMU. V porovnání s ostatnímy produkty nabízí VirtualBox vzdálenou správu přes protokol RDP, vzdálené disky iSCSI a vzdálené připojení USB zařízení. Podporované techniky Pro většinu kódu používá VirtualBox plnou virtualizaci, kód jádra hosto vaného systému se snaží spustit v ring 1 a pokud toto selže přichází ke slovu dynamická rekompilace. Jelikož je dynamická rekompilace relativně drahá, v některých případech VirtualBox místo rekompilace kód upravuje a spouští nativně. Využitím kombinace těchto technik je dosaženo velmi malé režie. Současné verze produktu dokáží využít i hardwarově asistova nou virtualizaci. V současné době podporuje VirtualBox pouze architekturu IA32, na x8664 se pracuje. Operační systémy Na straně hostujícího systému je podporován Linux a Windows, jako hos tované systémy lze použít Linux, Windows, OS/2, OpenBSD a FreeBSD. Virtuální hardware Simulované prostředí poskytuje standardní vstupně /výstupní periferie tj. klávesnici, myš, VESA kompatibilní grafickou kartu a zvukovou kartu In tel ICH AC'97. Vstupně /výstupní operace je možnost připojit přimo do 16
3. NÁSTROJE
prostředí hostujícího systému nebo provozovat vzdáleně přes integrovaný RDP server. Virtuální disky jsou uloženy v souborech formátem VDI (Virtual Disk Images) nebo je lze připojit přes iSCSI. Přistup k síti je umožněn přes AMD PCNet síťovou kartu, na výběr je integrovaný nat router nebo propojení přes tapX zařízení hostujícího systému. Produkt umožňuje též připojení USB zařízení do virtuálního stroje a to jak lokálně tak i přes RDP tunel. Nástroje pro správu Správu virtuálních strojů lze provádět pouze přes GUI zaobalující virtuální obrazovku. Volně šířitelná verze Mimo původní komerční verze byla v lednu 2007 uvolněna pod GPL i verze označovaná VirtualBox Open Source Edition. Při nasazení této verze je uživatel kromě technické podpory ochuzen i vzdálenou správu přes RDP, podporu USB zařízení, sdílené složky s hostujícím systémem a podporu pro disky iSCSI. 3.5
UML
Technika UML (User-mode Linux), jak již název napovídá, umožňuje spuš tění Linuxového jádra jako samostatné aplikace pod obecným systémem Linux. Podporované architektury jsou IA32 a x86-64. Podporované techniky Techniky, které UML používá lze zařadit mezi paravirtualizaci a toto si vyžádá úpravu hostovaného jádra. Vzhledem k tomu, že UML spouští jádro systému v uživatelském režimu, není potřeba mít pro spuštění virtuálního počítače práva uživatele root. Virtuální hardware Vstupně/výstupní operace hostovaného systému mohou být přivedeny na standardní vstup a výstup procesu v hostujícím systému, přesměrovány do xterm terminálu nebo do socketu. 17
3. NÁSTROJE
Diskovým úložištěm se může stát libovolný „soubor" umožňující blo kový přistup — tedy obyčejný soubor nebo blokové zařízení. Zapojení hostovaného systému do sítě pak probíhá přes tuntap, slirp nebo přes speciálního switch-démona (umožňuje vytvářet i složité síťové konfigurace). Nástroje pro správu Veškeré nastavení lze provádět pomocí parametrů příkazové řádky při spuš tění hostovaného systému. 3.6
Linux-VServer
Produktem VServer se dostáváme do oblasti virtualizace na úrovni operač ního systému. Linux-Vserver je patch linuxového jádra umožňující izolaci procesů, původní projekt Jacquese Gélinase je nyní spravován Herbertem Pötzlem a je šířen pod licencí GPL. Virtualizovaný systém beží přímo pod jádrem hostujícího systému a ten se stará o separaci, to přináší tyto výhody: •
Minimální režie. Vzhledem k tomu, že virtualizovaný i hostující systém používají stejná volají jádra, není potřeba simulovat žádný hardware.
•
Společný systém souborů. Není zapotřebí pro každý hostovaný systém vytvářet samostatný virtuální disk.
•
Sdílení paměti a zdrojů.
•
Přímý přístup k síti. Není potřeba virtualizovat síťový hardware, je zajištěna pouze izolace. Emulace na úrovni operačního systému však přináší i své nevýhody:
•
Úprava jadra hostujícího systému.
•
Sdílení jádra a prostředků. Všechny systémy sdílí jedno jádro, nelze takto testovat nová jádra a při objevení chyby v jádře hostujícího systému jsou postiženy všechny hostované systémy.
•
Síť není virtualizována. Hostované systémy nemohou například vytvá řet vlastní routovací tabulky nebo firewallová pravidla. 18
3. NÁSTROJE
Virtualizované prostředí Každý hostovaný systém má k dispozici svoji hiearchii procesu, samostatné uživatele včetně uživatele root a podobně. Přístup k diskovému úložišti se podobá unixovému nástroji chroot, vir tualizované prostředí má jako kořenový adresář k dispozici podstrom ad resářové struktury hostujícího systému. Podobný princip funguje i při přístupu do sítě — jednotlivým proce sům je dovoleno naslouchat a odesílat pakety pouze n a / z přidělených IP adres (ách). 3.7
OpenVZ
OpenVZ patří podobně jako Linux-VServer do kategorie virtualizačních nástrojů na úrovni operačního systému. Je šířen pod licencí GPL, o jeho vývoj se stará komunika s přispěním společnosti SWsoft, která ho používá jako základ svého komerčního virtualizačního řešení Virtuozzo. Virtualizované prostředí Prostředí OpenVZ poskytuje podobné prostředky pro hostovaný systém jako Linux-VServer. Narozdíl od VServeru umožňuje navíc řídit samostatné uživatelské quoty, procesorový čas, v / v prostředky a tzv. User Beancounters (UBC). UBC poskytují možnost omezit hostovaný systém ve využití různých prostředků jádra a zamezit tak monopolizaci celého stroje jedním virtuálním prostředím. OpenVZ implementuje od května 2006 i online migraci mezi fyzickými stroji a ukládání stavu. 3.8
Čestná zmínka: DOSBox
DOSBox jsem do této práce zařadil, jelikož pro něj mám (a nejen já) slabost. Tento komunitní projekt šířený pod licencí GPL poskytuje virtualizované prostředí operačního systému DOS. Používá techniku emulace celého počí tače architektury IA32. Díky emulaci všemožného hardware od grafických karet (CGA, EGA, VGA, VESA...) přes zvukové karty (AdLib, GUS, Sound Blaster...) až po síťové karty umožňuje spuštění drtivé většiny starých her určených právě pro operační systém DOS, který v sobě má zakomponován.
19
3. NÁSTROJE
3.9
Přehled
Pro snadnější orientaci jsem vlastnosti jednotlivých nástrojů upravil do ta bulky 1. Podpora IA32 Podpora x86-64 Podpora SMP Technika Režie Vzdálený přístup Licence Online migrace Libovolný OS Limity zdrojů
XEN
VMWare
VirtualBox
QEMU
VServer
OpenVZ
UML
Ano Ano Ano P,N 1,2 Ano GPL Ano Ne, Ano Ano
Ano Ano Ano F, N 2,2 Ano Prop. Ano Ano Ano
Ano Ne Ne F,N 2,2 Ne GPL/Prop. Ne Ano Ne
Ano Ano Ne E, F 3,2 Ano GPL Ne Ano Ne
Ano Ano Ano O 0 Ano GPL Ne Ne Ne
Ano Ano Ano O 0 Ano GPL Ano Ne Ano
Ano Ano Ano P 1 Ano GPL Ne Ne Ne
Vysvětlivky: Technika: P=Paravirtualizace, N=Nativní virtualizace, F=Plná virtua lizace, E=Emulace, O, Virtualizace na úrovni OS Režie: 0 — neznatelná, 3 — vysoká
20
Kapitola 4
Srovnávací testy Součástí zadání této bakalářské práce bylo i vypracování srovnávacích testů, pokusil jsem se tedy jednotlivé produkty nasadit a provést měření. I když některé nástroje vytrvale odolávaly a autoři by se někdy mohli soustře dit více na dokumentaci, drtivou většinu se mi jich podařilo zprovoznit. Smutnou výjimkou je bohužel projekt UML. 4.1
Hardware
Všechny testy probíhaly na počítači této konfigurace: •
Základní deska MSI K9N NEO-F, S.AM2, nForce 550, FSB1000HT, GLAN, SATAII, PCIE
•
Procesor AMD Athlon(tm) 64 X2 Dual Core 4600+
•
Operační paměť2xlGB DDR2 533Mhz
•
Pevný disk WD 2x320GB/7200rpm, SATA/300,16MB cache
•
Grafická karta Sapphire Radeon X1050 128MB
4.2
Metodika a výsledky
Jako hostující i hostovaný systém byl vybrán Gentoo Linux v konfigu raci 2007.0/server. Jelikož jednotlivé virtualizační nástroje podporují jádra pouze určitých verzí, bylo by takřka nemožné najít verzi jádra, na které by bylo možno otestovat všechny nástroje. Rozhodl jsem se proto testovat každý nástroj na nejaktuálnější stabilní verzi. V každém vytvořeném virtuálním prostředí byly provedeny microbenchmarkové testy AIM9 a testy sady ab (Apache Benchmark) pro server Apache. Na fyzickém hardware běžel vždy pouze hostující OS a jedno virtuální testované prostředí. Sada benchmarků AIM9 je koncipována pro 21
4. SROVNÁVACÍ TESTY
jednoprocesorové stroje, proto nemělo význam testy opakovat na vícepro cesorové konfiguraci, naproti tomu server Apache dokáže více procesorů využít. Z celkem 60 testů, které balík AIM9 poskytuje jsem se pokusil vybrat několik, které by charakterizovali výkon systému. Význam jednotlivých hodnot v tabulkách 2 a 3: •
add double — Tisíce operací sčítání v plovoucí destinné čárce za sekundu.
•
add long — Tisíce operací celočíselného sčítání za sekundu.
•
div double — Tisíce operací dělení v plovoucí destinné čárce za sekundu.
•
div long — Tisíce operací celočíselného dělení za sekundu.
•
page test — Alokace stránky paměti za sekundu.
•
brk test — Alokace paměti za sekundu.
•
fork test — Vytvoření nového procesu za sekundu.
•
link test — Link/unlink za sekundu.
•
creat-clo — Vytvoření a uzavření souboru za sekundu.
Pří měření ab byly parametry nastaveny takto: 16 konkurenčních poža davků na statickou stránku velikosti 1500 bytů, 500000 požadavků celkem, měřené hodnoty ukazují časy odpovědí serveru, tj. kolik procent požadavků se vrátilo v daném čase. AIM9, architektura x86-64 Hardware Hostitel Host add double add long div double div long page test brk test fork test link test creat-clo
2.6.20
— 1204795 4819180 229270 32874 246160 2540659 5628 26842 175024
VMWare
XEN
VServer
OpenVZ
QEMU
2.6.20 2.6.16 2.6.20 2.6.16 827172 1202997 4766467 4813186 179041 229200 24790 32874 115708 149280 1177966 883116 1024 2225 24941 27834 195904 127145 Tabulka 2.
2.6.20
2.6.18
— 1202997
— 1204795
4819180 229270 32931 266633 2949950 5874 25181 169000
4819180 229570 32907 214540 2037962 29820 26471 175700
2.6.20 2.6.20 177690 422619 66268 11451 18907 139121 195 801 6779
Podle očekávání mají nejmenší režii nástroje provádějící virtualizaci na úrovni operačního systému těsně následované produktem XEN. Naopak nejhůř dopadl nástroj QEMU, což je ale vzhledem k jeho přístupu omluvi telné. 22
4. SROVNÁVACÍ TESTY
AIM9, Architektura IA32 Hostitel Host add double add long div double div long page test brk test fork test link test creat-clo
Hardware
VMWare
2.6.20
2.6.20 2.6.20
— 1201198 4767696 229640 58652 294995 3087200 8030 39102 192907
— — — — — — — — —
XEN 2.6.16 2.6.16 1204200 4813186 229270 58562 300429 3087200 3872 48995 262337 Tabulka
VServer
OpenVZ
QEMU
VirtualBox
2.6.20
2.6.18
— 1201231
— 1201814
2.6.20 2.6.20 180532 418347 67121 17516 21348 17343 265 1024 8157
2.6.20 2.6.20
4764348 229532 58652 284555 3077500 8035 38493 232534 3.
4767596 229640 58652 284565 3085300 8030 37538 224731
— — — — — — — — —
Data z měření produktů VMWare a VirtualBox naprvní pohled nebyla správná, po bližším přezkoumání vyšlo najevo, že na platformách IA32 ne dokáže OS Linux v těchto produktech spolehlivě udržovat systémový čas. Ač jsem se snažil tento neduh jakkoliv obejít, data vždy vypadala velice po dezřele (mnohem větší výkon virtuálního stroje než má fyzický hardware) a proto jsem se rozhodl je do přehledu nezahrnout. Situace z pohledu režie je obdobná jako na architektuře x86-64. Apache Benchmark, Architektura IA32, jeden procesor Tabulky 4-7 zobrazují přehled doby odpovědi serveru (časy jsou v ms). Výsledky mluví samy za sebe, jasným vítězem jsou virtualizační techniky na úrovni OS. 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
HW 0 2 3 4 5 5 5 6 6 6 15
Xen 2 4 6 6 7 7 7 9 9 10 16
VMWare 0 3 4 4 5 6 7 8 9 11 16
VirtualBox 1 5 8 10 11 12 13 13 14 16 27
VServer 1 3 4 4 5 5 5 6 6 6 16
OpenVZ 1 3 4 4 5 5 5 6 6 6 16
QEMU 15 154 158 159 160 160 161 162 164 168 181
Tabulka 4.
23
4. SROVNÁVACÍ TESTY
Apache Benchmark, Architektura IA32, dva procesory
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
HW 0 2 2 2 2 2 2 3 3 3 8
Xen 3 4 5 5 5 5 6 6 6 6 13
VMWare 0 1 2 2 2 3 3 4 5 10 132
Vserver 0 2 3 3 3 3 3 3 4 4 15
OpenVZ 0 2 3 3 3 3 3 3 4 4 15
Tabulka 5. Apache Benchmark, Architektura x86-64, jeden procesor
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
HW 0 2 2 3 4 4 5 5 5 5 12
Xen 1 4 5 5 6 6 7 8 8 8 15
VMWare 0 3 4 4 5 6 7 8 9 10 15
VServer 0 3 3 4 4 4 5 5 5 5 14
OpenVZ 0 3 3 4 4 4 5 5 5 5 14
QEMU 13 150 153 154 155 156 157 158 160 163 176
Tabulka 6.
24
4. SROVNÁVACÍ TESTY
Apache Benchmark, Architektura x86-64, dva procesory
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
HW 0 2 2 2 2 2 2 2 3 3 11
Xen 2 4 4 5 5 5 5 5 6 6 12
VMWare 0 1 2 2 2 3 3 4 5 10 128
VServer 0 2 2 2 2 2 2 2 3 3 14
OpenVZ 0 2 2 2 2 2 2 2 3 3 14
Tabulka 7.
25
Kapitola 5
Závěr Virtualizace je oblast, ve které v současné době probíhá bouřlivý vývoj, z výsledků testů je vidět, že některé nástroje jsou již velice vyspělé, na druhou stranu, jsou oblasti, kde je vždy co zlepšovat. Cílem práce bylo seznámit čtenáře s technikami virtualizace a se součas ným virtualitačním trhem. Srovnávací testy potvrdili očekávání nastíněné v popisu technik a proto věřím, že práce splnila svůj účel.
26
Literatura [1] Otevřená encyklopedie Wikipedia http://en.wikipedia.org/wiki/hypervisor.
—
Hypervizor
[2] Otevřená encyklopedie Wikipedia http://cs.wikipedia.org/wiki/virtualizace.
—
Virtualizace
[3] R. P. Goldberg G. J. Popek. Formal requirements for virtualizahle third generation architectures.
27