Virtualizace
Z MiS
(Rozdíly mezi verzemi)
(Práce s VirtualBox-em do samostatné stránky) |
(→Proč virtualizovat?: Přidán obrázek úspory výkonu.) |
||
(Není zobrazeno 13 mezilehlých verzí od 1 uživatele.) | |||
Řádka 1: | Řádka 1: | ||
− | + | [[Category:VSE]][[Category:Informatika]][[Category:Virtualizace]][[Category:OSY]] | |
− | [[Category:VSE]] | + | <div class="Motto"> |
− | [[Category:Informatika]] | + | ;Motto |
− | [[Category: | + | Virtuální hospoda? Konferenční hovor na Skype a basa lahváčů :-D |
− | < | + | : Petr Juřena, bývalý žák OA |
− | + | </div> | |
− | + | ||
− | == | + | == Co znamená „virtuální“ == |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== Slovíčko „virtuální“ v oblasti výpočetní techniky === | === 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. | ||
+ | # Simulace reálného života, kterou nám zprostředkovává počítač | ||
+ | #* virtual reality (VR) | ||
#* virtual world | #* virtual world | ||
− | # | + | # Počítačová náhrada něčeho, co se běžně řeší bez počítačů |
#* virtual community | #* virtual community | ||
#* virtual library | #* virtual library | ||
− | #* virtual conference | + | #* 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“ === | === „Historie virtualizace“ === | ||
Řádka 46: | Řádka 47: | ||
Jak moc byl v historii SW závislý na konkrétním HW? | 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čů. | + | [[File:virt_historie.png]] |
+ | |||
+ | 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. | ||
+ | |||
+ | <div class="Priklad"> | ||
+ | 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. | ||
+ | </div> | ||
+ | |||
+ | ; 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). | ||
+ | |||
+ | <div class="Priklad"> | ||
+ | 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ě. | ||
+ | </div> | ||
+ | |||
+ | |||
== Virtualizace OS (platform virtualization) == | == 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. |
− | + | ||
− | + | ||
− | + | ||
− | === HW | + | <div class="Poznamka"> |
− | # Dostatek paměti pro hostitelský OS i pro virtuální OS | + | ; 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??? | ||
+ | </div> | ||
+ | |||
+ | [[Image:virt_vyhody.png]] | ||
+ | |||
+ | === 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í. | #* 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 | # Dostatek místa na pevném disku | ||
− | #* Virtuální pevné disky | + | #* 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 | #* Intel VT-x | ||
#* AMD V | #* AMD V | ||
#* Úkol: Najděte příklad tří typů procesorů s podporou virtualizace OS. | #* Úkol: Najděte příklad tří typů procesorů s podporou virtualizace OS. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | == Zdroje == |
− | + | * [http://en.wikipedia.org/wiki/Virtualization 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_%28computing%29 <http://en.wikipedia.org/wiki/Virtual_computing>]. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Aktuální verze z 24. 11. 2021, 22:42
- Motto
Virtuální hospoda? Konferenční hovor na Skype a basa lahváčů :-D
- Petr Juřena, bývalý žák OA
Obsah[skrýt] |
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>.