Portál AbcLinuxu, 1. května 2025 22:46

Virtualizace na úrovni jádra operačního systému

31. 7. 2007 | Jaroslav Tomeček
Články - Virtualizace na úrovni jádra operačního systému  

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ží.

Virtualizace

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

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.

Úplná virtualizace/paravirtualizace

Druhý obrázek ukazuje, jak pracuje virtualizace na úrovni jádra operačního systému.

Virtualizace na úrovni jádra OS

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.

Seriál Virtualizace na úrovni jádra (dílů: 8)

První díl: Virtualizace na úrovni jádra operačního systému, poslední díl: Linux-VServer - správa výpočetních zdrojů.
Následující díl: Linux-VServer - instalace a spuštění

Související články

Jaderné noviny: KVM 15
Jaderné noviny: Vývoj KVM
Jaderné noviny: /dev/kvm
Jaderné noviny: Patche Xen
Jaderné noviny: Kontejnery procesů
Jaderné noviny: Připojení Linuxu k hypervisorům
Jaderné noviny: Virtualizační rozhraní VMI
Jaderné noviny: Kontejnery a odlehčená virtualizace
Jaderné noviny: API pro virtuální I/O: virtio
Jaderné noviny: Virtuální čas
Jaderné noviny: OpenVZ a checkpointing za běhu
Jaderné noviny: Zdroje: má dáti, dal
Chroot prostředí

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

Diskuse k tomuto článku

31.7.2007 12:04 polish
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Odpovědět | Sbalit | Link | Blokovat | Admin
tesim se na popis openvz
pit0 avatar 31.7.2007 12:39 pit0 | skóre: 8
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Odpovědět | Sbalit | Link | Blokovat | Admin
Pekny clanok a pripajam, sa k radujucim sa. Tesim sa na pokracovanie!
31.7.2007 15:13 skywaker
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Odpovědět | Sbalit | Link | Blokovat | Admin
niekde som cital ze dragonflybsd je prve bsdcko co podporuje Vkernel teda virtualkernel po vzoru KVM v linuxu...
31.7.2007 18:17 martink
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Odpovědět | Sbalit | Link | Blokovat | Admin
I linux-vserver je součástí Debianu, viz třeba http://packages.debian.org/stable/net/util-vserver a http://packages.debian.org/stable/admin/linux-image-vserver-686
1.8.2007 16:02 Jan Zapletal
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Ano, a na rozdil od OpenVZ se nemusi patchovat a kompilovat jadro (protoze jsou prislusne obrazy jader rovnou v archivu.) Z tohoto pohledu je tvrzeni, ze je OpenVZ soucasti Debianu pomerne usmevne.
pushkin avatar 1.8.2007 09:43 pushkin | skóre: 43 | blog: FluxBlog
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Odpovědět | Sbalit | Link | Blokovat | Admin
Jeden dotaz, týkající se QEMU: pokud samostatné QEMU, provozované bez akceleračního modulu spadá do oblasti simulace / emulace, jak je to s kombinací QEMU+kqemu?
🇺🇦 Pomoc pro obranu Ukrajiny | SOS Ukrajina | Web4Ukrajina | Web4Ukraine 🇺🇦
stativ avatar 1.8.2007 19:21 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
to je pak klasická virtualizace, jelikož už se pak neprovádí překlad instrukcí procesoru.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
1.8.2007 10:41 Jiri Bajer | skóre: 34 | blog: Sarimuv koutek | Praha
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Odpovědět | Sbalit | Link | Blokovat | Admin
Pekny clanek, mozna by stalo za to ho jeste doplnit o povidani o HW virtualizaci (nPar u HP, fPar u IBM, domeny od SUNu) popr. pseudo-HW virtualizaci (vPar u HP) apod...
Petr (DotaZ) Jakubec avatar 1.8.2007 13:43 Petr (DotaZ) Jakubec | skóre: 5
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Odpovědět | Sbalit | Link | Blokovat | Admin
pekny clanek, zajimavy... dika, urcite si prectu i pokracovani...

jeste by mne zajimalo, kdyz se vam to autore tak pekne podarilo rozskatulkovat, jake vyhody ci nevyhody vsechna ta reseni maji.
2.8.2007 15:57 Jaroslav Tomeček
Rozbalit Rozbalit vše Re: Virtualizace na úrovni jádra operačního systému
Já se odkazuji na wikipedii. Pouze jsem využil toho, co už někde je. Na wiki také naleznete výhody a nevýhody řešení.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.