Portál AbcLinuxu, 1. května 2025 22:46
S virtualizacemi se poslední dobou jakoby roztrhl pytel. Obvykle při ní simulujeme činnost nebo funkčnost celého hardwaru - vytváří se virtuální stroj nebo speciální přístup k fyzickému stroji. Takový způsob s sebou však nese i vyšší režijní ztráty a malou míru sdílení zdrojů. Tento problém řeší virtualizace na úrovni jádra operačního systému (kernel-level virtualization).
Seriál, jehož první díl čtete, popíše dva nástroje virtualizace na úrovni jádra operačního systému - Linux-VServer a OpenVZ. Ukážeme si jejich instalaci a základní konfiguraci. OpenVZ se minulý rok stal součástí distribucí Debian a Mandriva a Linux-VServer je základem celoplanetárního gridu PlanetLab. I to ukazuje, že si pozornost zaslouží.
Co je vlastně virtualizace? Požadavky správců a uživatelů na víceúlohové a víceuživatelské operační systémy vedou k vývoji a zdokonalování metod souběžné obsluhy procesů a uživatelů, které využívají virtualizaci. Jedná se o mechanismus, pomocí něhož dosáhneme určitého stupně abstraktního stroje s abstraktním hardwarem. Pro hardwarový zdroj, který je v počítači obsažen pouze jako jedna fyzická instance, je možné vytvořit více virtuálních instancí, stejně jako zprostředkovat hardwarový zdroj, který se vyskytuje ve více fyzických instancích jako jedno virtuální zařízení. Přistupovat k hardwaru pak můžeme jednodušším způsobem, než jak je fyzicky zapojen a skryjeme tak pro uživatele nepodstatné informace.
Samotné metody abstrakce hardware směřují už od 60. let 20. století k vytvoření celých virtuálních strojů postavených na kombinaci hardwarových a softwarových technik. Jeden fyzický stroj by pak mohl obsluhovat řádově až stovky virtuálních strojů. Metoda kombinuje myšlenku sdílení systémových prostředků a izolovanosti jednotlivých virtuálních prostředí. Výhodou virtuálního stroje je možnost sestavení celého operačního systému na míru každému uživateli, který takový počítač používá, bez toho, aby se operační systémy vzájemně ovlivňovaly, a aby byla systémová režie příliš vysoká. Každý operační systém by měl být plně funkční bez jakéhokoliv omezení.
Běh virtuálních strojů vyžaduje vyřešení mnoha problémů. Vlastní virtualizační systém musí mít plánovač, který bude schopný spravovat požadavky operačních systémů. Zabezpečuje, aby činnost jednoho operačního systému nebyla ovlivněna činností ostatních systémů. Z pohledu virtualizačního nástroje dochází k přepínání kontextu celých OS. Algoritmus plánování přístupu k hardwaru řeší vícenásobný přístup k systémovým zařízením. Dalším problémem je ošetření komunikace mezi virtuálními stroji. Například správné doručování příchozích paketů z vnější sítě a jejich pohyb mezi běžícími systémy by mělo být rychlé, ale zároveň nesmí příliš snižovat výkon počítače.
Nejčastěji se virtualizace dosahuje zavedením softwarového rozhraní mezi vlastním OS a fyzickým hardwarem. Tato vrstva komunikuje s fyzickým a vytváří virtuální hardware pro běžící operační systémy a obsluhuje jejich požadavky. Existuje více metod, jak dosáhnout robustního systému, který bude schopen kvalitně plnit svoji funkci. Wikipedia uvádí tyto typy virtualizací:
Virtualizace na úrovni jádra operačního systému je společně s paravirtulizací považována za nejefektivnější typ virtualizace. Virtualizovaná prostředí běží nad společným jádrem, které má přímý přístup k fyzickému hardwaru, tudíž se nevytváří virtuální zařízení ani speciální přístupové API. Režijní ztráty jsou způsobeny pouze oddělením procesů, diskových prostorů a síťového provozu serverů.
V seriálu se zaměříme na využitelnost systémů pracujících na tomto principu a podíváme se na specifické vlastnosti, například dynamické změny omezení systémových zdrojů.
Paravirtualizační prostředí, zastoupené například systémem Xen, nabízejí plnou izolovanost virtuálně běžících OS. V případech, kdy provozujeme více stejných operačních systémů, se však stává celý systém neefektivním, protože některé části operačních systémů běží vícenásobně. Naproti tomu při virtualizaci na úrovni jádra běží všechny virtuální servery nad jedním jádrem. Celý mechanismus pouze rozšiřuje služby jádra OS tak, aby byly schopné odizolovat jednotlivé související skupiny procesů nazývané sekce nebo kontexty a k nim příslušné diskové souborové systémy. V systémech typu unix lze technologii považovat za rozšíření mechanismu chroot. Výhodou řešení je výrazné snížení režijních ztrát (např. pouze 1 - 3 % u OpenVZ) a nutnost upravit pouze jádro hostitelského systému.
Následující obrázek ilustruje princip úplné virtualizace, simulace a paravirtualizace.
Druhý obrázek ukazuje, jak pracuje virtualizace na úrovni jádra operačního systému.
Systém umožňuje měnit limity systémových prostředků za běhu virtuálních serverů, což bývá u paravirtualizace obtížné nebo často nemožné. Na rozdíl od systému Xen můžeme dynamicky zvyšovat i snižovat hodnoty hardwarového nastavení virtuálních serverů. Tyto nástroje alokují potřebné hardwarové prostředky již při startu serveru a následná změna by vyžadovala spolupráci virtualizovaného OS. Naproti tomu Linux-VServer a OpenVZ přistupují k serverům jako k procesům, kterým můžeme v Linuxu přidělení hardwarových prostředků snadno měnit. Nevýhodou je možnost provozovat pouze operační systémy stejného typu jako upravené jádro, avšak s různými knihovnami a popřípadě různé distribuce.
Virtuální stroje založené na virtualizaci na úrovni jádra jsou využívány pro testování software na různých distribucích. Programátor nemusí instalovat celý operační systém, stačí jen potřebné knihovny dané distribuce a programy nutné pro běh virtuálního serveru a testovaného programu. Změna OS je pak otázkou několika málo minut.
V samostatném prostředí může běžet antivirus a firewall nezávisle na uživatelském serveru. Bezpečnostní software pak není negativně ovlivněn procesy provozovanými uživateli. Technologii lze použít pro provoz gridů se stejnými, ale na míru upravenými OS.
Systém využívají také firmy poskytující provoz, pronájem a prodej serverů. Každý zákazník si upraví server podle svých představ bez ohledu na ostatní uživatele. Poskytovatel služby však může provozovat více virtuálních na jednom fyzickém serveru. Sníží značně náklady a správa takového systému je také podstatně jednodušší. Tento nepříliš náročný způsob virtualizace je výhodný pro výuku. Každý student má k dispozici vlastní server. Chybný úkon však neznamená poškození vlastního operačního systému nebo hardwaru.
Nyní již víme, co je virtualizace a virualizace na úrovni jádra OS, a v příštím díle se podíváme na instalaci Linux-VServeru.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.