Virtualizácia

Milan Vraník, 359798 (na) mail.muni.cz

Obsah

Heslá a zkratky

	host		- poskytovateľ služieb
	guest		- software ktorý využíva virtualizované služby
	hypervizor	- priamy poskytovateľ služieb guestovi

Zmienka o histórií

Virtualizácia bola zmienená v roku 1960 v súvislosti s firmou IBM. Prvá hardwarová asistencia pre virtualizáciu existovala už v roku 1972 pre VM/370 od IBM System/370.

Motivácia

Využitím môže byť emulácia neexistujúceho alebo v systéme nenachádzajúceho sa kusu hardwaru. Tiež sprostredkovávanie služieb hardware cez pridanú vrstvu, čím sa dá docieliť prenášanie bežiacich virtualizovaných systémov medzi fyzickými strojmi alebo takýmto spôsobom umožniť beh viacerých inštancií inak súbežne nespustiteľných programov, ako napríklad OS. Tým sa dá za vhodných podmienok lepšie utilizovať výkon poskytovaný fyzickými zariadeniami (servermi). Ďalej umožňuje online zálohovanie celého systému (snapshot), či už kvôli zálohe, auditu alebo potrebe naklonovania bežiacej inštancie. Emulácia hardwaru môže pomôcť pri vývoji softwaru využívajúceho zariadenie ešte pred jeho existenciou, či pomôcť pri testovaní.

Čo je virtualizácia

Virtualizáciou v IT vo všeobecnosti myslíme emuláciu hardwaru alebo beh operačného systému vo virtualizovanom priestore. To znamená, že OS v zásade nie je prvotná inštancia s úplným vplyvom na hardware.

Formy virtualizácie

Kontajnery

Jednoduchou formou virtualizácie sú kontajnery, ktoré do rôznej miery uzavrú používateľa do samostatného (pod)priestoru. V linuxe to je napríklad chroot, ktorý zmení koreňový adresár pre práve bežiaci proces a jeho potomkov. V BSD je známy bsdjail, ktorý navyše umožňuje zmeniť aj prístupných užívateľov, skupiny či súbory a adresáre, pričom samotné jails v zásade nevedia o tom, že nebežia v "normálnom" režime.
software: chroot, bsdjail, OpenVZ (containers), Linux-VServer (security contexts)

Paravirtualizácia

Paravirtualizácia sa od plnej virtualizácie líši tým, že poskytuje guestovi špeciálne API, ktoré buď umožňuje modifikovaný prístup k hardwaru alebo možnosť vykonať niektoré operácie za virtualizovaný systém, spravidla v situáciách, v ktorých je daná operácia vo virtualizovanom priestore málo výkonná. Vyžaduje špeciálnu podporu na oboch stranách, guesta aj hosta.
software: Xen, VMWare

Emulácia hardware

V tomto prípade host emuluje konkrétny typ hardwaru pre guesta. Emulovať sa dá teoreticky čokoľvek, avšak tieto riešenia bývajú zvyčajne veľmi pomalé.
software: quemu, Bochs

Plná virtualizácie

Plnou virtualizáciou sa myslí emulácia celého systému. Vzhľadom na potrebu špeciálne ošetriť vykonávanie privilegovaných inštrukcií býva výkon do rôznej miery penalizovaný. Z pohľadu guesta (OS bežiaceho v plne virtualizovanom prostredí) by však všetka réžia a samotný fakt, že nebeží na ozajstnom hardwari, mala zostať skrytá.
software: VirtualBox, VMWare, QEMU

Hardwarová podpora virtualizácie

Pre plnú virtualizáciu, ktorá je veľmi významná, sa pre potrebu navýšenia výkonu vo virtualizovanom prostredí implementovali špeciálne funkcie do procesora, ktoré umožňujú zvýšiť výkon tým, že ošetrenie behu privilegovaných inštrukcií zastrešujú samé, hardwarovo. Iné vylepšenia zasa umožňujú virtualizovanému software pristupovať priamo k rôznym zariadeniam v systéme, čím rušia réžia na to potrebnú. To je vhodné najmä pre virtualizované systémy. Prvou skupinou sú inštrukčné sady VT-x u firmy Intel a AMD-V u firmy AMD. Druhou skupinou sú VT-d u Intelu a IOMMU u AMD, ktoré už ale potrebujú podporu nielen procesora, ale aj severného mostíka.

Ukážka

VirtualBox a CLI

Virtual box je jedným z najrozšírenejších nástrojov na virtualizáciu, avšak nie každý užívateľ vie, že okrem nastavení v GUI existujú aj ďalšie parametre, ktoré sú prístupné len cez príkazovú riadku. To aj v OS Windows, kde je potrebné aplikovať ich ako parametre pri spúšťaní VB, napríklad z odkazu.

Vytvorenie disku:

$ /usr/bin/VBoxManage createhd --filename Debian5.vdi --size 4000 --variant Fixed

Nastavenie sieťových prvkov:

$ /usr/bin/VBoxManage modifyvm Debian5 --nic1 bridged --cableconnected1 on --bridgeadapter1 eth0

Linux ako guest

Ak je hostovaným systémom Linux, je rozumné, najmä ak nemáme hardwarovú podporu virtualizácie, alebo ak máme slabší procesor, znížiť časovač jadra. Default je 250 Hz.

Nastavenie v kerneli:
CONFIG_HZ_100=y
CONFIG_HZ=100
Nastavenie deličky frekvencie pri štarte jadra:
linux /boot/vmlinuz root=/dev/sdaX ro quiet divider=N

Literatura