Virtualizácia

Matej Hašuľ, hasis ((at)) mail dot muni <dot> cz

Obsah

Prečo virtualizácia

Virtualizácia - proces ked v jednom operačnom systéme spustíme pomocou virtalizačného systému iný OS.

Dôvody:

Úrovne virtualizácie

Virtualizácia má rôzne stupne v závislosti na tom, ako veľmi je hosťovaný systém nezávislý na hostiteľskom.

Pojmy:

Kontajnery

+----------+----------+            +----------+
|  Private |  Private |            |  Private |
|  server  |  server  |    ...     |  server  |
|          |          |            |          |
+----------+----------+------------+----------+
|               Operating system              |
+---------------------------------------------+
|                   Hardware                  |
+---------------------------------------------+

Chroot

+ bez straty výkonu

Jail

Pracuje na podobnom princípe ako chroot, len je to silnejšie.

  1. Virtualizácia - každý jail má vlastné súbory, procesy, užívateľov a superužívateľa
  2. Bezpečnosť - jednotlivé jaily su od seba oddelené
  3. Delegácia - Superužívateľ môže delegovať spravovanie jednotlivých jailov (apache)

Zakázané vytvárať blokové a znakové zariadenia, nahrávať moduly do jadra, mount/umount, modifikovať sieťovú konfiguráciu (interface, adresy, routovacie tabulky). Procesy v jednom jaily nevidia procesy v inom.

OpenVZ/Virtuozzo

Vychádza z virtuozzo, ktoré je proprietárne, avšak OpenVZ je pod GPL. Funguje podobne ako jail.

Navyše: + strata výkonu (1-3%)
- oba systémy musia byť linuxy (rôzne distribúcie povolené)

Emulácia HW

+----------+----------+----------+
|   Apps   |   Apps   |   Apps   |
+----------+----------+----------+   ...
| Guest OS | Guest OS | Guest OS | 
+----------+----------+----------+------------+
|     Hardware VM A   |    Hardware VM B      |
+---------------------+-----------------------+
|                   Hardware                  |
+---------------------------------------------+

Tento spôsob virtualizácie emuluje celý hardware počítača. Každá inštrukcia sa prekladá pre emulovaný HW.

+ môžeme pustit OS určeny pre inú platformu, než je hardware fyzického stroja
- pomalé (10-20% výkonu hosťovaného systému)

QEMU (Quick EMUlator)

Pracuje v dvoch módoch

Existuje akcelerátor KQEMU (module pre kernel), ktorý urýchluje emuláciu (na 90% hostiteľského systému).

Paravirtualizácia

+----------+----------+
|   Apps   |   Apps   |
+----------+----------+               +------+
| Modified | Modified |      ...      |      | 
| Guest OS | Guest OS |               | Mgmt |
+----------+----------+               |      |
|          |          |               |      |
+----------+----------+---------------+------+
|                Hypervisor (VMM)            |
+--------------------------------------------+
|                   Hardware                 |
+--------------------------------------------+

Vyžaduje modifikovaný hosťovaný systém aby mohol spolupracovať so hypervisorom.

User-mode Linux (UML)

Umožňuje spustiť linuxový systém v inom linuxovom systéme. Nachádza sa niekde medzi jailom a plnou virtualizáciou.

- len pre linuxy (ale rôzne verzie jadra, distribúcie, virtuálny HW)

VMware

kopa software, komerčný, VMware Tools gpl

XEN

Narozdiel od UML má vlastný privilegovaný kernel (XEN0), ktorý sa zavádza z boot loadera. XEN0 potom zavedie hlavnú doménu - domain0. Z hlavnej domény sa potom zavádzajú užívateľom definované domény, nazývané domainU. DomainU pristupujú k HW cez XEN0, ten používa ovládače Domain0, ktoré pristupujú k samotnému HW.

Migrácia

Prenos hosťovaného systému medzi dvomi hostiteľmi (fyzickými strojmi). Pamäť virtuálneho stroja sa iteratívne kopíruje na druhý stroj. Po určitom čase sa na 60 - 300ms zastaví kvôli synchronizácii. Po uplynutí tejto doby sa systém spustí na druhom stroji a migrácia končí.

+ dosahuje vysoký výkon (90% hostiteľského systému)
- nutné modifikovať hosťovaný operačný systém aby spolupracoval s hypervisorom, čo nie vždy je mozné (Windows)

Úplná virtualizácia

+----------+----------+
|   Apps   |   Apps   |
+----------+----------+               +------+
|          |          |      ...      |      | 
| Guest OS | Guest OS |               | Mgmt |
|          |          |               |      |
+----------+----------+---------------+------+
|                Hypervisor (VMM)            |
+--------------------------------------------+
|                   Hardware                 |
+--------------------------------------------+

Používa virtuálny stroj (hypervisor) na komunikáciu medzi hosťovaným OS a HW.

+ Umožňuje virtualizovať nemodifikovaný OS
+ Výkon oveľa lepší ako v prípade HW emulácie, avšak nie 100% (niečo zožerie hypervisor)
- Nutná podpora HW (procesor, BIOS a doska musia podporovať virtualizáciu)

Novšie procesory intel a AMD podporujú virtualizáciu. Procesory intel používajú technológiu intel virtualization technology (vanderpool), procesory AMD používa označenie "pacifica". Či váš procesor podporuje virtualizáciu, zistíte pomocou /proc/cpuinfo. Intel používa príznak vmx a AMD svm.

root@machine:~># cat /proc/cpuinfo | egrep '(vmx|svm)'
root@machine:~># flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

Kernel-based Virtual Machine (KVM)

Podpora virtualizácie v kerneli (od verzie 2.6.20). Dostupné pod (L)GPL.

Skladá sa z

Taktiež podporuje migráciu, ako aj funkcie suspend a restore. Celkom rýchlo sa vyvíja kedže je vyvíjané komunitou okolo jadra.

Formáty virtuálnych diskov

virtual disk - qcow, vmware format, raw disk

Príklad pomocou XENu

Najskôr treba získať jadro s podporou XENu pre hosťovaný systém.

Vytvoríme virtuálny systém

server1:~# xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide \ > --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force \ > --dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xen \> --debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

Spustenie systému

xm create /etc/xen/xen1.example.com.cfg

Do systému sa prihlásime pomocou xm console xen1.example.com alebo cez ssh.

Literatúra