6.2 Virtualizačné techniky
6.2 Virtualizačné techniky
Pri virtualizácií výpočtovej platformy sa používajú nasledovné virtualizačné techniky:
- plná virtualizácia,
- paravirtualizácia,
- virtualizácia HW vrstvy,
- kontajnerová virtualizácie.
Počítačový systém bez virtualizácie
Na Obr. 7 je znázornený spôsob riadenia prístupu k hardvérovým zdrojom na počítačovom systéme s architektúrou x86 bez virtualizácie. CPU poskytuje OS na vykonanie kódu 4 úrovne ochrany nazývané Ring 0 až Ring 3. Jadro OS je spúšťané na úrovni Ring 0 a môže vykonávať inštrukcie priamo na hardvéri a spracovávať tzv. privilegované inštrukcie. Používateľské aplikácie bežia na úrovni Ring 3 (najmenej privilegovane). Úrovne Ring 1 a Ring 2 sa spravidla nevyužívajú.
Obr. 7 Počítačový systém bez virtualizácie
Plná virtualizácia
V prípade plnej virtualizácie je na hostiteľskom operačnom systéme spustený tzv. Manažér virtuálneho stroja, ktorý je podobný používateľskej aplikácii. Jedným zo spôsobov, ktorým Manažér virtuálneho stroja realizuje virtualizáciu je emulácia.
Obr. 8 Plná virtualizácia
Emulácia je pôsob virtualizácie, pri ktorom je celá hardvérová architektúra vytvorená softvérovo. Softvérovo sa replikuje funkcionalita hardvérového procesora aj súvisiacich hardvérových systémov. Emulácia poskytuje veľkú flexibilitu tým, že hosťujúci operačný systém nemusí byť upravený tak, aby fungoval na inak nekompatibilnej architektúre. Jej nevýhodnou je pokles výkonu, nakoľko každá inštrukcia hosťovaného systému musí byť preložená tak, aby jej hostiteľský systém rozumel. Emulácia používa techniku Trap and emulate, t.j. každá požiadavka na prístup k hardvéru je zachytená manažérom virtuálneho stroja a vykonaná softvérovou emuláciou na virtuálnom hardvéri (viď Obr. 9). Vďaka emulácií môžu všetky operačné systémy a aplikácie, ktoré môžu natívne bežať na hardvéri bežať aj vo virtuálnom stroji. Výhodou je tiež, že hosťujúci OS nemusí byť modifikovaný a nevie o existencií VM. Naviac, každý VM je nezávislý od ostatných VM.
Obr. 9 Princíp techniky zachyť a emuluj
Nevýhodou plnej virtualizácie je degradácia výkonu a chýbajúca podpora pre real-time OS. Tieto nevýhody sa snaží eliminovať tzv. binárny preklad žiadostí OS, pri ktorom manažér virtuálneho stroja beží na úrovni na Ring 0 a hosťovaný OS na Ring 1 (s vyššími právami ako aplikácie vykonávané v používateľskom priestore). Manažér virtuálneho stroja dynamicky prekladá privilegované inštrukcie hosťovaného OS na postupnosť inštrukcií schopných vykonania na reálnom hardvéri. Inštrukcie používateľskej úrovne vykonáva priamo (viď. Obr. 10).
Obr. 10 Virtualizácia s binárnym prekladom žiadostí OS
Paravirtualizácia
Pri paravirtualizácií sa vykonáva len čiastočná abstrakcia na úrovni virtuálneho počítača. Paravirtualizácia ponúka virtuálne prostredie, ktoré je podobné fyzickému, na ktorom sa VM prevádzkuje.
Obr. 11 Paravirtualizácia
Niektoré vlastnosti hosťovaného
OS môžu byť obmedzené a OS môže rozpoznať, že beží vo virtuálnom prostredí. Naviac,
pri paravirtualizácií sa vyžaduje modifikovanie jadra hosťovaného OS. Hosťovaný OS obsahuje modifikované
(paravirtualizované)
I/O ovládače pre hardvér. Na rozdiel od binárneho prekladu nemusí hypervízor
zachytávať a prekladať všetky inštrukcie privilegovanej vrstvy medzi hosťovaným
OS a hardvérom, lebo hosťovaný OS volá virtualizované I/O služby priamo
(viď. Obr. 12).
Obr. 12 Vykonávanie privilegovaných a neprivilegovaných inštrukcií pri paravirtualizácií
Hardvérovo asistovaná virtualizácia
Hardvérovo asistovaná virtualizácia nevyžaduje modifikovanie jadra hosťovaného OS, namiesto toho vyžaduje, aby bol hardvér navrhnutý pre virtualizáciu. V prípade Intel procesorov sa jedná o technológiu označovanú ako VT-x, v prípade AMD je to technológia AMD-V.
Obr. 13 Virtualizácia HW vrstvy
Procesory s podporou Intel
VT-x/AMD-V majú nove, rozširujúce inštrukcie umožňujúce beh hosťovaného OS
v Ring-0. Výhodou takéhoto riešenia je vyšší výkon, nevýhodou je, že sú
podporované len vybrané typy hardvéru (procesorov).
Obr. 14 Vykonávanie privilegovaných a neprivilegovaných inštrukcií pri hardvérovo asistovanej virtualizácií
Kontajnerová virtualizácia
Pri kontajnerovej virtualizáciu musia byť všetky hosťované VM rovnakého základného obrazu, ako hostiteľský počítač. Každý kontajner zdieľa jadro hlavného operačného systému, a niektoré zdroje, ako napríklad systémové knižnice a spustiteľné súbory, pričom používateľský priestor je plne izolovaný.
Obr. 15 Kontajnerová virtualizácia