Virtualizácia je technika, ktorá umožňuje súčasný beh viacerých operačných systémov (alebo aplikácií) na jednom fyzickom stroji izolovane zdieľajúc ten istý hardware.
Prakticky sa virtualizácia používa na efektívnejšie využitie hardwaru a pre zvýšenie bezpečnosti. Virtualizácia taktiež umožňuje prenos virtuálnych strojov medzi fyzickými (Load-balancing).
Virtualizáciu môžeme rozdeliť podľa toho na aké účely sa používa na:
Do tejto skupiny sa radia najmä techniky a utility, ktoré len upravujú správanie sa aplikácií v systéme.
chroot je užitočný príkaz, ktorý umožňuje spustiť program ktorému je nastavený ako koreňový adresár adresár predaný parametrom a tým staží v prípade kompromitácie systému prístup k zbytku systému.
test@proto10:/tmp/test$ pwd
Program pwd sa takto dostáva do ilúzie, že bol spustený z koreňového adresára pričom v skutočnosti bol spustený z toho istého miesta ako predtým ale vo vlastnom virtuálnom prostredí.
/tmp/test
test@proto10:/tmp/test$ sudo chroot /tmp/test pwd
/
Jail je mechanizmus, ktorý posúva možnosti chroot ďalej a umožňuje aby virtuálne prostredie nemalo ani prístup k procesom bežiacim na hosťovskom OS a vytvára až tzv. sandbox - prostredie v ktorom môžeme spúšťať programy bez obavy že by tieto programy mohli poškodiť hosťovský OS.
Ide o vrstvu ktorá umožnuje na rôznych platformách beh rovnakého programu bez úpravy. Využíva sa napríklad na riešenie problémov s kompatibilitou (Wine, JVM) a na riešenie prenositeľnosti programov na iné platformy.
Projekt wine si kladie za cieľ umožniť spúšťanie aplikácií určených pre Windows aj pod inými OS. Ide v podstate o zbierku knižníc ktorá implementuje API OS Windows.
Java Virtual Machine nie je v pravom slova zmysle virtuálny stroj ale plní funkciu prekladu aplikácií napísaných v Jave do inštrukcií zrozumiteľným pre platformu na ktorej beží.
Umožnuje beh nemodifikovaného OS (pre rovnaký CPU ako má hostiteľ) na hardvéri podporujúcom virtualizáciu v dostatočnom rozsahu.
Intel VT-x : technológia umožnujúca natívnu virtualizáciu na procesoroch od Intelu (dostupná na procesoroch Pentium 4 a novších s výnimkou niektorých modelov)
AMD-V : technológia umožnujúca natívnu virtualizáciu na procesoroch od AMD (dostupná na procesoroch Athlon 64, Turion 64 a novších s výnimkou niektorých starších modelov Athlon 64 a procesorov Sempron)
Detekcia podpory hardvérovej virtualizácie na procesore. V prípade vypísania riadku s vlajakmi procesora má daný procesor podporu pre hardvérovú virtualizáciu
test@ondrej-laptop:$ egrep "vmx|svm" /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts pni monitor vmx est tm2 xtpr pdcm
KVM je v súčasnosti modul pre linuxové jadro, ktorý sa postará o vytvorenie priestoru pre virtuálny stroj a pripojenie jeho grafického výstupu na hosťovský systém. Aby mohol byť KVM použitý je potrebná hardvérová podpora virtualizácie na procesore. KVM pre emulovanie zbytku hardvéru používa QEMU, takže väčšina parametrov KVM je zhodná s QEMU
Príklad spustenia virtuálneho stroja pomocou kvm.
test@ondrej-laptop:# kvm -hda xp-curr.img -m 512 -soundhw es1370 -no-acpi -snapshot -localtime -boot c -usb -usbdevice tablet -net nic,vlan=0,macaddr=00:00:10:52:37:48 -net tap,vlan=0,ifname=tap0,script=no
Vyžaduje špeciálne upravený hosťovaný systém. Do hosťovaného systému sa implementuje prístup k API tzv. hypervízora.
XEN je hypervízor, ktorí je tvorený mikrokernelom ktorý bootuje ako prvý pri štarte počítača a vytvára vrstvu pre prístup k hardvéru. Ďalšie systémy ktoré sa spúšťajú pod týmto hypervízorom pristupujú už k virtuálnej vrstve hardvéru ktorú spravuje ale zároveň môžu komunikovať aj s hypervízorom pomocou špeciálneho API.
Je najpomalšou formou virtualizácie avšak umožnuje emulovať aj hardvér, ktorý fyzicky nie je v počítači. Každú požiadavku virtualizovaného systému na prístup k hardvéru emuluje. Používa sa hlavne na testovanie programov na rôznych typoch procesorov, ktoré nie sú ľahko dostupné.
Poskytuje množstvo rôzneho hardvéru, ktoré je schopné emulovať a je základom pre ďalšie programy ako napríklad KVM alebo VirtualBox.