Virtualizace

Eva Kučírková, eva.k@mail.muni.cz

Obsah

Proč virtualizace?

Typy virtualizace

Rozlišuje různé typy virtualizace, podle toho, nakolik je virtuální systém závislý na fyzickém. Řešením na úrovni operačního systému jsou kontejnery, následuje emulace hardwaru, paravirtualizace a plná virtualizace.

Kontejnery

Kontejnery jsou řešení na úrovni operačního systému, virtuální servery fungují nad hostitelským operačním systémem. Dochází k izolaci jednotlivých serverů od sebe navzájem. Aplikace se chovají jakoby běžely v samostatném systému. Pro implementaci hostitelského i hostovaných prostředí slouží jádro fyzického operačního systému. Tato metoda neumožňuje běh více různých jader naráz, ale je možné mít různé Linuxové distribuce v různých kontejnerech.

chroot

Linuxový příkaz a funkce která slouží ke změně kořenového adresáře procesu. Takto nastavený adresář bude použit ve všech cestách místo /. Tento kořenový adresář dědí všichni potomci aktuálního procesu. Nedochází k zavření používaných file descriptorů, takže těmi je možné referencovat i mimo chroot stromu. Používá se hlavně u serverů (ftp, Apache, BIND) - pokud se útočník dokáže nabourat do systému, nedostane se výše než je chrootovaný adresář.
Příkaz chroot může použít jen superuživatel.

BSD jail

Vylepšený chroot. Dochází k úplné izolaci procesu od okolního souborového systému, do jailu se nedá přidat proces z vnějšku, ani žádný proces z něj se nedostane ven. Je rovněž spouštěn s IP adresou, která se nedá zevnitř změnit. Root v jailu nemůže vytvářet nová zařízení, nemůže měnit spuštěné jádro ani nahrávat moduly, měnit síťová nastavení či připojovat/odpojovat souborové systémy. Je bezpečnější a složitější na nasazení než chroot.

Linux VServer

Jednotlivé servery spravuje upravené linuxové jádro. Serverům se říká bezpečnostní kontext, v nich se spouští virtuální server. Správa každého virtuálního serveru není závislá na ostatních. Systém využívá a rozšiřuje vlastnosti jádra - Linux capabilities, omezení výpočetních zdrojů, atributy souborů a chroot.

OpenVZ

Podobně jako u Linux VServeru je nutné jádro upravené o podporu provozu virtuálních systémů. Nevychází z Linux capabilities, ale přidává zcela nové rozhraní. Nepoužívá chroot, implementuje vlastní mechanismus fungující na stejném principu. Pro správu prostředků se používají dvouúrovňové diskové kvóty, plánovač CPU a přidělování systémových prostředků. Narozdíl od VServeru podporuje IPv6.

Emulace HW

Virtuální stroj napodobuje fyzický hardware. Hostovaný operační systém komunikuje s virtuálním strojem, který komunikuje s hardwarem. VS sleduje instrukce, které chce host vykonat, a v případě potřeby je nahrazuje alternativními. Tato metoda ale vyžaduje vysokou režii, a tak může být velice pomalá. Každá instrukce musí být přeložena na nativní hardware, tak je možno pozorovat i stonásobné zpomalení. Výhodou je možnost simulovat hardware - i jiný než je fyzicky přítomen.

Qemu

Jednoduchý a svobodný emulátor, který umí emulovat architektury x86, Sparc, ARM a PPC. Existuje k němu Qt frontend, který umožňuje editovat nastavení pohodlně z KDE (KQemu).

Paravirtualizace

Provádí částečnou abstrakci na úrovni virtuálního počítače - virtuální prostředí je podobné fyzickému. Je to umožněno díky tomu, že procesory Intel a AMD mají definovány 4 úrovně ochrany. Na nejvyšším stupni ochrany běží virtuální monitor, o jednu úroveň níže pak operační systém, aplikační procesy běží až na další úrovni. Pokud potřebuje OS provést instrukci, ke které nemá oprávnění, předá se řízení virtuálnímu monitoru.

User Mode Linux

Varianta jádra Linuxu, kterou je možné spouštět jako normální program z běžícího systému. Spouští se neprivilegovaným uživatelem, a z pohledu OS vypadá jako normální proces. Procesy uzavřené uvnitř UML se prakticky nemohou dostat do hostitelského prostředí.

Lguest

Jednoduchý x86 hypervizor, umoňuje běh několika různých kopií stejného 32 bitového jádra. Zavádí se jako jaderný modul:
modprobe lg
Je dostupný od jádra 2.6.23-git13. Zdrojový kód má pouze kolem 6000 řádků.

Xen

V prostředí Xen zajišťuje přístup k hardware virtuální monitor, nad ním jsou pak vytvářeny virtuální počítače. Jeden z nich - doména 0 (Dom0) má kontrolu nad ostatními, může je vytvářet, rušit, či modifikovat. Xen také dokáže zpřístupnit virtuálnímu počítači fyzický hardware.

VMWare Workstation, VMWare Server

Komerční řešení. Poskytuje hostům kompletní sadu virtualizovaného hardwaru, což zjednodušuje migraci virtuálním počítačů. Pomocí nástroje VMWare tools umožňuje na virtuální systém aplikovat potřebné ovladače, což má za následek výkon ne nepodobný nativnímu chodu nad hardwarem. VMWare poskytuje možnost zvolit si, jak dostat do virtuálního systému své internetové připojení a nastavit jeho chování.

Virtualbox

Od společnosti Sun, dostupný pod GPL. Umožňuje virtualizaci na architektuře x86. Je multiplatformní, ve virtuálním stroji je možné spouštět téměř jakýkoliv op. systém. Je na linuxu velice populární, což má za následek to, že na internetu je k nalezení odpověď na jakýkoliv problém. Zvládá práci s USB, umožňuje i bootování virtuálního stroje z USB.

Plná virtualizace

Při plné virtualizaci se používá hypervisor, který stojí mezi hardwarem a hostovanými operačními systémy. OS tedy neběží v privilegovaném režimu - pokud je potřeba provést privilegovanou instrukci, hypervizor ji odchytí a nahradí. Toto řešení je rychlejší než HW emulace, ale pomalejší než nativní chod OS. Při plné virtualizaci je třeba, aby byla podporována procesorem - u Intelů příznak vmx, u AMD svm.
cat /proc/cpuinfo |egrep '(vmx|svm)'

VMware ESX server

Otevřený většině známých platforem, vše je dostupné i v 64 bitech. Hypervisor je tenký klient nad HW, používá pouze nutné prostředky a neubírá zbytečně výkon. VMware ESX Server je základem komplexnějších produktů jako VMware Infrastructure nebo nově VMware vSphere 4.

XEN 3.3

Virtualizační hypervisor, podporuje řadu PC a chipsetů - od superpočítačů až po PDA. Realizuje virtualizace na platformách x64, IA64 a ARM. Podporuje architektury vícejádrových procesorů a umožňuje vyšší počty virtuálních CPU na jeden virtuální stroj.

KVM - Kernel Virtual Machine

Implementace virtualizace v Linuxovém jádře. Požívá hardwarovou podporu virtualizace, dává uživatelským programům rozhraní pro přístup k procesoru, alokování paměti atd. O ostatní hardware (grafická karta, síťová karta, řadič disku) se stará nějaký userspace virtualizační nástroj - QEMU. Ten je ale pomalý, proto se nověji používá knihovna virtio. Jedná se vlastně o jakési doplnění paravirtualizace do plné virtualizace.

Literatura