Linux/Virtualizace v Linuxu
Virtualizace se používá z mnoha různých důvodů, například kvůli:
- Testování a přípravě distribucí či jiných operačních systémů.
- Provozu aplikací vyžadujících zastaralý OS.
- Bezpečnosti - kdy je pro každou službu vyhrazen samostatný virtuální stroj.
- Ochraně proti selhání HW - neboť je možná živá migrace virtuálních strojů mezi fyzickými hosty.
- Šetření zdroji - virtuální hosting umožňuje konsolidaci serverů a snižování nákladů na energie, prostory, atd..
V současné době se používá několik různých virtualizačních technologií.
Kontejnerová virtualizace
editovatO kontejnerové virtualizaci se hovoří tehdy, když se v rámci jednoho operačního systému OS, vytváří vzájemně oddělená prostředí - kontejnery. Lze tak na jednom stroji provozovat kupř. několik webových serverů, aniž by bylo nutné mít pro každý z nich nainstalovaný kompletní systém.
+-------+ +-------+ | App | | App | +-------+ +-------+ +------------------+ | Linux | +------------------+ +------------------+ | Hardware | +------------------+
Výhody:
- menší náročnost na systémové prostředky
- menší technická náročnost - kontejnery se vytváří v rámci jedné instalace
- nad hardware běží pouze jedno jádro - kontejnery využívají společnou MM, power management, scheduler, ..
Nevýhody:
- nejde o opravdovou virtualizaci - používá se stejný kernel, stejný OS a oddělení není úplné.
- problém s technologiemi jako SELinux, AppArmor
Příklady:
- chroot - Změna kořenového adresáře procesu. Root v chrootu ale může stále přistupovat k systémovým prostředkům
- OpenVZ - podobné Solaris Zones, každý kontejner má svoje uživatele, svého roota, svůj /proc, /sys Vyžaduje patch pro kernel
- BSD Jail
- Solaris Zones
Softwarová virtualizace
editovatPři softwarové virtualizaci se emuluje celá hardwarová platforma, na které běží virtualizovaný systém.
+-----+ +-----------+ +-----------+ | | | App | | App | | | +-----------+ +-----------+ | App | | GuestOS | | GuestOS | | | +-----------+ +-----------+ | | | Virt. App | | Virt. App | +-----+ +-----------+ +-----------+ +---------------------------------+ | Linux | +---------------------------------+ +---------------------------------+ | Hardware | +---------------------------------+
Výhody:
- Možnost emulace nedostupného hardware - včetně architektury procesoru
Nevýhody:
- Velmi nízký výkon virtuálních strojů
Příklady:
- QEMU (bez modulů jako KVM-Qemu nebo KQEMU)
Paravirtualizace
editovatParavirtualizací se rozumí technika virtualizace, kdy se prostředí pro virtualizovaný stroj neemuluje úplně, ale část instrukcí se zpracovává přímo prostřednictvím reálného prostředí. To však předpokládá spolupráci virtualizovaného stroje s hostitelem. Podmínkou pro paravirtualizaci tedy je odpovídajícím způsobem nakonfigurované jádro hostitele resp. zavedené moduly které komunikaci mezi virtuály a jádrem zprostředkují.
+-----+ +-----------+ +-----------+ | App | | App | | App | +-----+ +-----------+ +-----------+ | | | GuestOS | | GuestOS | | | +-----------+ +-----------+ | | | Virt. App | | Virt. App | | | +-----------+ +-----------+ | +---------------------------+ | Linux s podporou virtualizace | +---------------------------------+ +---------------------------------+ | Hardware | +---------------------------------+
Výhody:
- Vysoký výkon - to je dáno tím, že většinu výpočetního výkonu realizuje skutečný procesor a emulovaný virtuální HW se výkonem od skutečných zařízení zas tolik neliší.
Nevýhody:
- Nelze virtualizovat úplně odlišný hardware (například jinou architekturu procesoru)
- Pro dosažení vyššího výkonu je třeba upravit kód virtualizovaného systému, což přináší problémy tam kde není přístup ke zdrojovým kódům, popř. neexistují pro virtualizovaný systém příslušné ovladače.
Příklady:
- QEMU (s jaderným modulem KQEMU)
- VMware Workstation
- VMware Server (dříve GSX)
- VirtualBox
- XEN (pro paravirtualizaci vyžaduje upravený hostitelský systém)
K tomuto typu virtualizace by se dal přiřadit i UML, který má podporu přímo v jádře, ovšem ten je čistě linuxovou záležitostí a jiné systémy linuxové pod ním provozovat nelze.
+-----+ +----------+ +----------+ | App | | App | | App | +-----+ +----------+ +----------+ | | | Linux | | Linux | | | +----------+ +----------+ | +-------------------------+ | Linux s podporou UML | +-------------------------------+ +-------------------------------+ | Hardware | +-------------------------------+
Plná virtualizace
editovatPlná virtualizace vyžaduje podporu ze strany procesoru. Jelikož se procesorové instrukce u AMD liší od těch na Intelu, používají i virtualizační nástroje jiný kód podle typu procesoru. U procesorů Intel se nazývá virtualizační technologie Vanderpool, její přítomnost indikuje u vlastností procesoru příznak vmx, zatímco technologie používaná u AMD se nazývá Pacifica, ta má příznak svm.
Rozdělování systémových prostředků tak neřeší hostitelský systém, ale tzv. hypervizor (u KVM funguje jako hypervizor linuxové jádro), který pro každý virtualizovaný systém vytváří vlastní sadu virtualizovaných prostředků. Systém v Dom0 většinou obsahuje nástroje pro práci s hypervizorem, tj. není přímo hypervizorem samotným. (jak už bylo zmíněno - výjimkou je KVM)
+---------+ +---------+ +---------+ | App | | App | | App | +---------+ +---------+ +---------+ | GuestOS | | GuestOS | | GuestOS | +---------+ +---------+ +---------+ | Dom0 | | DomU | | DomU | +---------+ +---------+ +---------+ +----------------------------------+ | Hypervizor | +----------------------------------+ +----------------------------------+ | Hardware s podporou virtualizace | +----------------------------------+
Výhodou je, že není třeba žádné modifikace virtualizovaného OS. Nevýhodou je nutnost emulovat kompletní hardware virtualizovaného stroje a tedy o něco nižší výkon oproti paravirtualizaci.
Příklady:
- KVM (Hypervizor je obsluhován přes QEMU skrze jaderným modul KVM-Qemu)
- XEN
- VMware ESX server
Závěr
editovatPokud máme k dispozici stroj který nemá v jádře podporu hardwarové virtualizace, můžeme použít buďto některý z produktů VMware, Virtualbox nebo - v případě že chceme hostovat pouze linuxové stroje - Xen.
Pokud chceme spustit systém stažený pomocí dd do obrazu disku, nebo otestovat iso nějakého liveCD, lze využít Qemu.