Virtualizace
Z MiS
- Motto
Virtuální hospoda? Konferenční hovor na Skype a basa lahváčů :-D
- Petr Juřena, bývalý žák OA
Obsah |
Co znamená „virtuální“
Slovíčko „virtuální“ v oblasti výpočetní techniky
- Zajištění nezávislosti SW na HW
- Virtualizace HW (platformy)
- SW je spouštěn v prostředí, díky kterému je nezávislý na konkrétním HW
- Touto variantou se zabýváme dále.
- Emulace API (viz dále)
- Virtualizace úložného prostoru
- Disková pole, kde více fyzických disků spojíme do jednoho virtuálního úložiště a naopak jedno fyzické úložiště můžeme rozdělit na více virtuálních.
- Virtualizace síťových zařízení
- Jeden velký a rychlý router/switch/jiné zařízení lze rozdělit na více virtuálních.
- Virtualizace HW (platformy)
- Simulace reálného života, kterou nám zprostředkovává počítač
- virtual reality (VR)
- virtual world
- Počítačová náhrada něčeho, co se běžně řeší bez počítačů
- virtual community
- virtual library
- virtual conference — schůzka či konference, při které je každý účastník jinde a komunikaci zabezepčuje software.
- Náhrada jedné věci jinou, která se na venek chová stejně
- virtual private network (VPN)
Virtualizace (Virtualization)
- Pojem virtualizace obecně
- Odstínění programu od HW či SW, na kterých je závislý.
- Program běží v prostředí, které zajišťuje veškeré jeho požadavky místo odpovídajícího HW.
- Z předchozího studia již znáte
- virtuální stroje ve VirtualBoxu
- virtuální stroj Javy (JVM)
- Překladem Javy vzniká bytecode, který je prováděn speciálním virtuálním počítačem.
- Instrukce JVM neodpovídají žádnému reálnému HW — nejde o napodobení konkrétního HW, ale o to, že implementace JVM existují pro různé HW platformy: bytecode → JVM → libovolný HW, na kterém běží JVM
- virtuální paměť — viz Přístup procesů do paměti
„Historie virtualizace“
Jak moc byl v historii SW závislý na konkrétním HW?
Virtualizace je možná i díky růstu výkonu počítačů.
Nezaměňujte pojmy
- Virtualizace HW × simulace HW
- Při simulaci vybíráme pouze podstatné vlastnosti simulovaného systému.
- Simulovaný HW nelze použít jako náhradu skutečného.
Příklady simulace: Cisco Packet Tracer, simulátor automobilu v autoškole či letadla pro výuku pilotů,...
- Zařízení v Packet Traceru se na venek chovají stejně jako skutečná zařízení. Nemůžeme ale použít Packet Tracer jako náhradu skutečného routeru, protože ve skutečnosti k žádnému přenosu dat sítí nedochází.
- Simulátor automobilu v autoškole se chová stejně jako skutečný automobil. Ale nemůžeme ho využít pro cestu do práce, protože ve skutečnosti nikam nejede, jen se obraz promítá na virtuální čelní sklo.
- Virtualizace HW × emulace API
- API — aplikační rozhraní operačního systému — sada funkcí, které operační systém nabízí aplikacím pro přístup k HW.
- Ve většině operačních systémů nemůže aplikace pracovat s HW přímo, ale pouze prostřednictvím služeb API operačního systému.
- Při emulaci API aplikaci spustíme tak, že všechny požadavky na API operačního systému se předávají ve skutečnosti emulátoru API.
- Emulátor API přijímá systémová volání od aplikace a převádí je na odpovídající volání API hostujícího operačního systému.
- Emulaci API lze použít pouze pro programy stejné HW platformy, protože instrukce aplikací se provádí přímo v procesoru počítače (překládají se pouze volání API při přístupu k HW — běžné instrukce se provádí přímo).
Příklad emulace API: nástroj Wine
- Jedná se o nástroj pro Linux, který umožňuje spouštět aplikace Windows v Linuxu.
- Nejedná se ale o virtualizaci HW — každé volání API Windows se realizuje prostřednictvím volání API Linuxu.
- Aplikace → (API Win32) → Wine → (API Linuxu) → Linux → hardware
- Přitom API Win32 a Linuxu nenabízí ekvivalentní služby, takže některé služby je třeba realizovat jako volání několika jiných služeb Linuxu, nebo část z nich realizovat softwarově.
Virtualizace OS (platform virtualization)
- Někdy také označováno jako virtualizace hardware.
- To je to, co známe z VirtualBoxu.
- Virtualizační nástroj (hypervizor) přijímá požadavky od aplikace a provádí je.
Aplikace → Virtuální OS → Hypervizor → (Hostující OS →) hardware
- Hypervizor může:
- být aplikace, která sama potřebuje ke spuštění jiný (hostující) operační systém (tak, jak to znáte z VirtualBoxu),
- fungovat jako samostatný operační systém a běžet přímo nad hardware (XEN, Windows Server, VMware,...).
Proč virtualizovat?
- Co virtualizace nabízí?
- Spouštění programů pro různé operační systémy na jednom počítači
- Všechny operační systémy mají běžet zároveň.
- Spouštění SW, který vyžaduje starší nebo netypický HW
- Testování prostředí bez rizika poškození hlavního systému
- Jednoduché vyzkoušení alternativní konfigurace OS
- Testování nastavení
- Nastavení vyšších oprávnění pro jiné uživatele — aniž by mohli poškodit hlavní systém
- Vývoj operačních systémů
- Úspora prostředků za HW a energii
- Proč? Virtualizace sama přece část výkonu spotřebuje...
- Snazší správa
- Rychlé vytváření konfigurací podle šablony.
- Kopírování stávající konfigurace.
- Efektivnější využití výkonu
- Proč? Virtualizace sama přece část výkonu spotřebuje...
- Vývoj programů, které musí fungovat na různých platformách
- Vývoj SW, který musí běžet na více operačních systémech a testovat na mnoha HW zařízeních je nepraktické
- Problémy
- Hypervizor sám spotřebuje část výpočetního výkonu (různý podíl podle způsobu virtualizace, ale vždy nějaký výkon potřebuje).
- Pokud provozujeme více virtuálních strojů, dochází k opakovanému ukládání stejných dat.
- Třicet virtuálních strojů s OS Windows bude zabírat samo o sobě cca 600 GB místa — přitom se většina kódu bude opakovat třicetkrát.
- Náměty k zamyšlení
- Jak může vést virtualizace k úspoře nákladů na HW???
- Veškeré běžící aplikace přece musí běžet stále! Sice nyní poběží na jednom počítači, ale ten musí být o to výkonnější!
- (A naopak dokonce část výpočetního výkonu spotřebuje správa virtuálních strojů, takže celkový nutný výpočetní výkon je dokonce vyšší!)
- A obdobně — jak může vést virtualizace k úspoře energie???
Přístupy ke zrychlení virtualizace
- Full virtualization (plná virtualizace)
- Veškerá činnost hardware virtuálního stroje je prováděna hypervizorem (softwarově).
- (-) Pomalé, náročné na výpočetní výkon.
- (+) Lze virtualizovat jakoukoli platformu nezávisle na platformě hostitelského počítače.
- Paravirtualization (paravirtualizace)
- Předpokládá spolupráci mezi hostitelským a virtualizovaným operačním systémem.
- Předpoklad: virtualizovaný operační systém musí umět pracovat s informací, že teď běží na virtuálním stroji.
- Spouštím běžný výpočet přímo ve (fyzickém) procesoru hostitelského počítače s tím, že pokud virtuální operační systém potřebuje pracovat s HW, tak ví, že má oslovit hypervizor.
- (-) Lze použít pouze pro operační systémy, které tento způsob virtualizace podporují (GNU/Linux).
- (-) Virtualizovaná a hostitelská platforma musí být stejné.
- (+) Většina kódu aplikace se provádí přímo v hardware.
- (+) Virtuální stroje mohou za některých okolností sdílet některé systémové knihovny apod.
- Hardware-assisted virtualization (virtualizace s podporou HW)
- Využívá rozšiřující instrukční sady moderních procesorů.
- (-) Virtualizovaná a hostitelská platforma musí být stejné.
- (-) Náš procesor musí mít zabudovánu podporu virtualizace (dnes ji běžně procesory střední a vyšší třídy mají).
- (+) Na rozdíl od paravirtualizace lze virtualizovat libovolný operační systém.
- (+) Většina kódu aplikace se provádí přímo v hardware.
Kontejnery
- Cíl — omezení opakujícího se kódu pro velké množství virtuálních strojů (úspora místa na disku, zjednodušení běhu).
- Místo kompletního virtuálního operačního systému vytváříme jen „kontejner“, který obsahuje aplikaci a potřebné knihovny, které aplikace vyžaduje.
- Ostatní knihovny a zbytek operačního systému je společný pro všechny kontejnery (je na serveru jen jednou).
- Riziko: menší míra oddělení mezi jednotlivými aplikacemi. Havárie, chyba či záměrný útok ze strany jedné aplikace má větší šanci ovlivnit činnost celého systému než u klasické virtualizace HW.
HW požadavky
- Dostatek paměti pro hostitelský OS i pro virtuální OS
- V současnosti (2010) musí být obvykle operační paměť pro virtuální stroj vyhrazena trvale v celé velikosti, bez ohledu na aktuální využití.
- Dostatek místa na pevném disku
- Virtuální pevné disky lze omezit, aby zabíraly jen tolik místa, kolik je na nich aktuálně zapsáno dat.
- Pro některé přístupy vyžadují sadu instrukcí pro HW-podporu virtualizace:
- Intel VT-x
- AMD V
- Úkol: Najděte příklad tří typů procesorů s podporou virtualizace OS.
Zdroje
- en.wikipedia.org > Virtualization
- Virtual (computing). In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 22 November 2009 at 20:34, last modified on 22 November 2009 at 20:34 [cit. 2010-09-18]. Dostupné z WWW: <http://en.wikipedia.org/wiki/Virtual_computing>.