Virtualizace

Tomáš Heinrich, xheinric (at) fi.muni.cz

Obsah

Motivace

Historie

V 60. letech IBM vyvinula CP/CMS (Control Program / Cambridge Monitor System) operační systém. CP vytvářel virtuální stroj, CMS byl jednoduchý jednouživatelský operační systém. Každý uživatel tak měl prakticky svůj vlastní počitač. K systému byly k dispozici zdrojové kódy.
V současnosti virtualizace opět zažívá boom.

Typy virtualizace

Kontejnery

V rámci jednoho OS lze vytvořit více oddělených prostorů procesů, uživatel, oddělené /, ...
Příklady: chroot, BSD Jail, Linux-VServer

Emulace hardwaru

Veškerý hardware se softwarově emuluje. Možnost emulace libovolného podporovaného hardwaru. Nízký výkon.
Příklady: Bochs, qemu

Paravirtualizace

Hypervisor místo virtualizovaného hw rozhraní poskytuje rozhraní jiné, které usnadňuje virtualizaci. Guest i host OS musí být speciálně upraveny.
Systémy portované pro paravirtualizaci: Linux, FreeBSD, OpenSolaris
Příklady: Xen, VMware, UML

Plná virtualizace

Chování OS by mělo být identické jako nad fyzickým hardwarem. Není potřeba modifikovat OS.
Bez podpory hardwaru
Problém s privilegovanýma instrukcema - nutnost dynamického překladu. Nižší výkon.
Příklady: VMware
S podporou hardwaru ("Nativní virtualizace")
Spolupráce ze strany hardwaru (specialní privilegovaný mód cpu pro hypervisora, konfigurace volaní přerušení pro guesty, izolace paměti, ...)
Intel - Vanderpool (vmx flag v /proc/cpuinfo)
AMD - Pacifica (svm flag v /proc/cpuinfo)
Příklady: KVM, Xen

Formaty disku

Priklady

$ egrep "vmx|svm" /proc/cpuinfo

chroot

Změna kořenového adresáře. Procesy zde spuštěné nemají přístup mimo tuto adresářovou strukturu.

# chroot /mnt/chroot

UML (User Mode Linux)

Umožnuje spustit jádro Linuxu jako uživatelský proces jiného OS používajícího Linux. Implementováno jako další architektura podporovaná jádrem.

$ make defconfig ARCH=um
$ make menuconfig ARCH=um
$ make ARCH=um
$ ./linux ubd0=/cesta/k/souboru umid="jmeno"

Xen

Open source VMM, který vznikl jako výzkumný projekt na University of Cambridge. Místo OS běží přímo nad hardwarem "hypervisor", který se stará o přidělování paměti, IO operace, ... Nad ním pak běží ostatní OS, kterým tyto poskytuje. Jeden OS (doména) je označen jako dom-0, je mu umožněno přistupovat přímo k hardwaru, a je z něj možno spravovat ostatní guest OS, označované jako dom-U.
+-------+  +-----+ +-----+
| App   |  | App | | App |
+-------+  +-----+ +-----+
+-------+  +-----+ +-----+
| Dom-0 |  |Dom-U| |Dom-U|
+-------+  +-----+ +-----+
  ^  +-------------------+
  |  |   Xen Hypervisor  |
  v  +-------------------+
+------------------------+
|        Hardware        |
+------------------------+

$ xm create dom
$ xm list
$ xm console dom
$ xm shutdown dom

KVM (Kernel-based Virtual Machine)

Hypervisor je integrován přímo do jádra. Podporuje nativní virtualizaci založenou na technologiich Intelu a AMD, každá ma svůj vlastní jaderný modul. Skládá se z těchto částí: Virtualizovaný hardware je dostupny prostřednictvím /dev/kvm.
             +-----------+
             |    App    |
             +-----------+
             +-----------+
             |Linux guest|
             +-----------+
+-----+      +-----------+
| App |      |    qemu   |
+-----+      +-----------+
+------------+-----------+
|    Linux   | KVM module|
|            +-----------+
+------------------------+
+------------------------+
|        Hardware        |
+------------------------+

$ qemu-kvm -cdrom slax-6.0.7.iso -boot d

Literatura