Virtualizace
Tomáš Heinrich, xheinric (at) fi.muni.cz
Obsah
Motivace
- Podpora specifického softwaru nebo hardwaru
- Efektivnější využívání hardwaru ("konsolidace serverů" - více virtualních severů na jednom fyzickém tak, aby plně využily jeho prostředky)
- Migrace virtualního systému na jiný fyzycký systém
- Rozdělení guestů podle zátěže
- Migrace z umírajícího hardwaru
- Možnost systém kdykoliv pozastavit a později znova spustit
- Klonování systémů
- Zálohy
- Offline audit bez nutnosti odstavení serveru
- Testovaní jadra, live cd, ...
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
- raw
- cow - formát UML
- qcow2 - formát qemu, podporuje kompresi, šifrování
- vmdk - formát VMware
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í:
- KVM jaderný modul
- KVM uživatelský modul
- qemu virtual cpu knihovna
- Linux user mode qemu emulátor
- soubory pro BIOS
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