\"/
\"/ \"/    

Virtualizace výpočetního prostředí

Luděk Matyska, FI MU, ÚVT MU
Ročník XVII - číslo 2, prosinec 2006
Citace: L. Matyska. Virtualizace výpočetního prostředí. Zpravodaj ÚVT MU. ISSN 1212-0901, 2006, roč. XVII, č. 2, s. 9-11.
verze pro tisk: PDF
Tematické zařazení: Různé, Software obecně - principy, tvorba
Článek je součástí seriálu Virtualizace výpočetního prostředí
 předchozí článek | následující článek 

V poslední době se v odborné i laické informatické literatuře stále častěji vyskytuje slovo virtualizace, zpravidla v souvislosti s procesory, případně s úložným prostorem. Až příliš často je virtualizace, zejména v polo-odborné literatuře, prezentována jako nový koncept, který pomůže vyřešit když ne všechny, tak velkou část praktických problémů, které jsou spojeny s nasazením počítačů. Jaká je ale realita?

Pojem virtualizace se začal ve větší míře objevovat již v šedesátých letech. Svým způsobem představuje první kolo reakce na sdílení počítačů, které má vedle pozitivních i řadu negativních rysů. První počítače byly v podstatě osobní - jejich kapacita (výpočetní možnosti, velikost paměti) i způsob práce s nimi vyžadovaly, že v daném okamžiku s konkrétním počítačem vždy pracoval jeden člověk (resp. jedna skupina, řešící stejný problém). S postupným růstem výkonu počítačů začalo být možné, aby počítač současně zpracovával dva a více programů1. Od toho byl již jen krůček k tomu, aby ty současně zpracovávané programy nepatřily stejnému uživateli - dochází k prvnímu souběžnému sdílení počítačů. Každé sdílení má však svá rizika - program jednoho uživatele může (omylem nebo záměrně) poškodit data nebo program druhého, zhroucení jednoho programu může vést ke zhroucení celého počítače (a tedy i programů ostatních uživatelů), náročné požadavky na paměť či výkon procesoru mohou vést k faktické uzurpaci počítače jedním uživatelem apod.

Virtualizace je jedním z konceptů, který se snaží výše zmíněné problémy vyřešit. Virtualizace v podstatě představuje iluzi, v níž nějaký zdroj (např. paměť, procesor, disk a další periferie) zmnožíme (tedy vytvoříme řadu kopií) a každý uživatel dostane jednu nebo více z těchto kopií k dispozici. Protože kopie vznikají pouze jako koncepty, hovoříme o virtuálních objektech - máme virtuální paměť, virtuální disk a samozřejmě také virtuální procesor. V konečném důsledku tak můžeme uživateli nabídnout celý virtuální počítač, který je tvořen z virtuálních komponent. Uživatel má tak pocit naprosté kontroly (vlastnictví), reálně přitom sdílí konkrétní fyzické zdroje s dalšími uživateli.

Ne všechny součásti počítače lze snadno virtualizovat. Zatímco v případě paměti je to natolik snadné, že už si ani neuvědomujeme, že při práci s pamětí pracujeme prakticky vždy pouze s její virtualizovanou formou, v případě procesorů je to mnohem obtížnější. Virtualizace paměti vyžadovala relativně jednoduchá a snadno realizovatelná rozšíření hardware, který s pamětí pracuje (rozdělení paměti na stránky, podpora mapování virtuálních a fyzických stránek, souvislé adresování virtuální oblasti, jejíž stránky mohou být libovolně ne-souvisle mapovány na fyzickou paměť, odkládání nepoužívaných stránek na disk a vytvoření iluze mnohem větší paměťové kapacity než je skutečně dostupná). V případě disků zase pomohly hierarchické systémy souborů, v nichž uživatel dostane "svůj" prostor a v něm má již prakticky plnou volnost (včetně svobody volit jména souborů, rozhodovat o tom, zda je může vidět či s nimi manipulovat někdo další atd.). V tomto případě sice nejde o plnou virtualizaci, pokud by byla třeba, je možné vytvořit speciální soubor (v systému souborů), který se bude chovat jako plnohodnotný virtuální disk.

Každý proces, který je v počítači spuštěn, pracuje automaticky s iluzí "vlastního" procesoru. Plná virtualizace však předpokládá, že tuto iluzi má ne pouze jeden proces, ale všechny procesy, které tvoří operační systém a uživatelské programy dohromady. Jako první tuto vlastnost začala nabízet firma IBM koncem šedesátých let minulého století na svých sálových počítačích (mainframes) vybavených operačním systémem OS/370. Ten dovoloval rozdělit jeden fyzický počítač na několik virtuálních strojů, přitom v každém virtuálním stroji běžel plnohodnotný operační systém (případně různý v různých strojích) a uživatelské programy.

Virtualizace v OS/370 stála na tzv. hypervizoru, neboli virtuálním monitoru (virtual monitor). Takto se do dnešních dnů označuje programová vrstva, která přímo komunikuje s fyzickým vybavením počítače a která zajišťuje virtualizaci všech součástí. Virtuální počítače (virtual machines) se pak spouští jako procesy tohoto virtuálního monitoru, přitom tyto "procesy" mají charakter plných virtuálních počítačů. Uživatel (resp. správce) může v každém virtuálním počítači instalovat samostatný operační systém a v něm následně spouštět programy. Při plné virtualizaci ani operační systém, ani programy si nejsou vědomy toho, že běží ve virtuálním, nikoliv fyzickém počítači a není třeba je jakkoliv modifikovat. V principu dokonce nemusí ani používat instrukční sadu fyzického procesoru, virtuální monitor může zajistit plnou emulaci konkrétního procesoru (v takovém případě však samozřejmě ztrácíme podstatnou část výkonu fyzického procesoru).

Přestože virtualizace v rámci OS/370 byla pro řadu zákazníků zajímavá, vyžadovala velmi rozsáhlou hardwarovou podporu, která zvyšovala cenu. Ostatní výrobci počítačů proto plnou virtualizaci zpravidla nenabízeli a zájem o ni prakticky zmizel v souvislosti se zavedením osobních počítačů (ty totiž nabídly mnohem více fyzických počítačů než byla tehdejší technologie schopná nabídnout počítačů virtuálních, a to za mnohem lepších cenových i provozních podmínek). S růstem výkonu osobních počítačů a jejich nasazením v podobě serverů využívajících stejné procesory i základní architekturu se však virtualizace znovu vrátila do hry.

Hnací silou nového nástupu virtualizace byla potřeba důkladného oddělení vývojových prostředí. Při vývoji software určeného pro široký trh je třeba ověřit jeho vlastnosti v prostředí nejrůznějších operačních systémů resp. jejich konfigurací. Instalace, správa a provoz odpovídajícího počtu fyzických počítačů je velmi drahá, zejména pokud si uvědomíme, že zpravidla je v daném okamžiku využíván jeden nebo jen malá skupina takovýchto strojů. Alternativa, kdy na jeden počítač postupně bootujeme různé verze operačních systémů je zase časově příliš náročná (je třeba vždy čekat, než je aktuální verze zastavena a nastartuje se další v pořadí). Nasazení virtuálních počítačů umožňuje rozmanitým verzím operačních systémů sdílet jediný fyzický počítač, přitom způsob práce garantuje, že nedochází k jeho přetížení.

Stabilní řešení tvorby vývojového virtualizovaného prostředí však umožnila jejich využití i v dalších oblastech. Poskytovatelé různých internetových služeb zjistili, že mohou provozovat jednotlivé služby v dedikovaných virtuálních počítačích - tím zajistí maximální vyladění výpočetního prostředí (operačního systému) pro konkrétní službu - a přitom tyto dedikované servery (zejména v případě služeb s malým zatížením procesoru) je možné i nadále provozovat na jednom fyzickém počítači. Na jednom počítači je tak možné provozovat virtuální počítač s operačním systémem Linux a v něm webový server Apache, a současně další virtuální počítač, v němž jsou nainstalovány např. Windows XP a Internet Exchange.

Virtualizace počítačů však umožňuje jít ještě dále. Např. v oblasti webových serverů (třeba IS MU) je obvyklé, že takový server je fyzicky tvořen množinou (clusterem) počítačů, které společně obsluhují uživatelské požadavky. V nevirtualizovaném prostředí je předem dána velikost clusteru - v případě nízkého zájmu je řada počítačů nevyužita, přesto může ve špičkách docházet k přetížení celého systému a pomalé reakci. Pokud však provozujeme dva či více webových serverů, které jsou zatíženy v jinou dobu, můžeme při zatížení zvyšovat počet virtuálních strojů obsluhujících konkrétní webovou aplikaci a při snížení zájmu počet virtuálních strojů snižovat (uvolněný výkon využije např. druhá webová aplikace).

Na stejném principu lze ale sdílet i fyzická prostředí se zcela rozdílným primárním využitím, např. webové servery (ve dne pro rychlé obsloužení zákazníků) a databázové aplikace (v noci pro rozsáhlé operace nad databází). Každá aplikace přitom má plně přizpůsobené prostředí (konkrétní operační systém a jeho konfigurace, knihovny, pomocné programy, velikost paměti atd.) a aplikace se naprosto nemohou ovlivňovat (běží ve zcela různých virtuálních strojích).

Virtualizace tak umožňuje naplnit jeden ze slibů informatiky - plnou individualizaci prostředí při vysoce efektivním využití zdrojů. ÚVT MU, resp. jeho Superpočítačové centrum, se proto rozhodlo zahájit virtualizaci prostředí náročných výpočtů a distribuovaného výpočetního prostředí. V dalších příspěvcích ukážeme možnosti, které tím vznikají, a podrobněji si popíšeme technické zázemí, na němž moderní virtualizace stojí.

setting
1 "Současně" v tomto kontextu znamená, že počítač má rozpracované dva či více programů a mezi nimi vhodným způsobem přepíná. V každém daném konkrétním okamžiku samozřejmě zpracovává pouze jeden jediný program.
... zpět do textu
Zpět na začátek
ÚVT MU, poslední změna 14.11.2011