Virtualizace

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Přidáno srovnání se simulací a emulací API, zdroje na konec)
(Proč virtualizovat?: Přidán obrázek úspory výkonu.)
 
(Není zobrazeno 7 mezilehlých verzí od 1 uživatele.)
Řádka 2: Řádka 2:
 
<div class="Motto">
 
<div class="Motto">
 
;Motto
 
;Motto
: Virtuální hospoda?  
+
Virtuální hospoda? Konferenční hovor na Skype a basa lahváčů :-D
: Konferenční hovor na Skype a basa lahváčů :-D
+
: Petr Juřena, bývalý žák OA
:: Petr Juřena, bývalý žák OA
+
 
</div>
 
</div>
  
== O virtualizaci obecně ==
+
== Co znamená „virtuální“ ==
  
 
=== Slovíčko „virtuální“ v oblasti výpočetní techniky ===
 
=== Slovíčko „virtuální“ v oblasti výpočetní techniky ===
# programy, emulující činnost hardware
+
# Zajištění nezávislosti SW na HW
#* virtualization
+
#* Virtualizace HW (platformy)
# simulace reálného života
+
#** SW je spouštěn v prostředí, díky kterému je nezávislý na konkrétním HW
#* virtuální realita
+
#** 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&nbsp;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&nbsp;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
+
# 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 &mdash; schůzka či konference, při které je každý účastník jinde a&nbsp;komunikaci zabezepčuje software.
 +
# Náhrada jedné věci jinou, která se na venek chová stejně
 +
#* virtual private network (VPN)
  
=== Virtualizace (Virtualization) ===
+
 
 +
 
 +
== Virtualizace (Virtualization) ==
 
; Pojem virtualizace obecně:
 
; Pojem virtualizace obecně:
Odstínění programu od HW či SW, na kterých je závislý.
+
* Odstínění programu od HW či SW, na kterých je závislý.
; Již znáte z předchozího studia:
+
* Program běží v&nbsp;prostředí, které zajišťuje veškeré jeho požadavky místo odpovídajícího HW.
* virtuální stroj Javy
+
 
* virtualizaci paměti (OSY 3)
+
; Z&nbsp;předchozího studia již znáte:
* virtuální CD mechanika
+
* virtuální stroje ve VirtualBoxu
; Lze
+
* virtuální stroj Javy (JVM)
* Virtualizace HW (platformy)
+
** Překladem Javy vzniká bytecode, který je prováděn speciálním virtuálním počítačem.
** SW je spouštěn v prostředí, díky kterému je nezávislý na konkrétním HW
+
** Instrukce JVM neodpovídají žádnému reálnému HW &mdash; nejde o&nbsp;napodobení konkrétního HW, ale o&nbsp;to, že implementace JVM existují pro různé HW platformy: ''bytecode &rarr; JVM &rarr; libovolný HW, na kterém běží JVM''
** Touto variantou se zabýváme dále.
+
* virtuální paměť &mdash; viz [[Přístup procesů do paměti]]
* Virtualizace úložného prostoru.
+
 
* Virtualizace SW
+
*: operační systém: wine (viz dále)
+
* Virtual Private Network
+
* Application virtualization.
+
  
 
=== „Historie virtualizace“ ===
 
=== „Historie virtualizace“ ===
Řádka 41: Řá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čů. Viz také [[Mooreův zákon]].
+
[[File:virt_historie.png]]
  
== Virtualizace OS (platform virtualization) ==
+
Virtualizace je možná i&nbsp;díky růstu výkonu počítačů.
Někdy také označováno jako ''virtualizace hardware''.
+
  
=== Srovnání s podobnými přístupy ===
+
== Nezaměňujte pojmy ==
; Virtualizace HW × simulace:
+
; Virtualizace HW × simulace HW
 
* Při simulaci vybíráme pouze podstatné vlastnosti simulovaného systému.
 
* Při simulaci vybíráme pouze podstatné vlastnosti simulovaného systému.
 
* Simulovaný HW nelze použít jako náhradu skutečného.
 
* Simulovaný HW nelze použít jako náhradu skutečného.
  
* Příklady simulace: Cisco Packet Tracer, simulátor automobilu v autoškole,...
+
<div class="Priklad">
 +
Příklady simulace: Cisco Packet Tracer, simulátor automobilu v autoškole či letadla pro výuku pilotů,...
 +
* Zařízení v&nbsp;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&nbsp;žádnému přenosu dat sítí nedochází.
 +
* Simulátor automobilu v&nbsp;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  
 
; Virtualizace HW × emulace API  
* Při emulaci API běží proces normálně v operačním systému.
+
* API &mdash; aplikační rozhraní operačního systému &mdash; sada funkcí, které operační systém nabízí aplikacím pro přístup k&nbsp;HW.
* Emulátor API pouze přijímá systémová volání (volání API) a překládá je na volání API hostujícího systému.
+
* Ve většině operačních systémů nemůže aplikace pracovat s&nbsp;HW přímo, ale pouze prostřednictvím služeb API operačního systému.
* Emulaci API lze použít pouze pro programy stejné platformy, programy přímo přistupují k hostujícímu HW (nejedná se o virtualizaci v našem slova smyslu).
+
* 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&nbsp;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&nbsp;procesoru počítače (překládají se pouze volání API při přístupu k&nbsp;HW &mdash; běžné instrukce se provádí přímo).
  
* Příklad emulace API: WINE,...
+
<div class="Priklad">
 +
Příklad emulace API: nástroj Wine
 +
* Jedná se o&nbsp;nástroj pro Linux, který umožňuje spouštět aplikace Windows v&nbsp;Linuxu.
 +
* Nejedná se ale o&nbsp;virtualizaci HW &mdash; každé volání API Windows se realizuje prostřednictvím volání API Linuxu.
 +
* Aplikace &rarr; (API Win32) &rarr; Wine &rarr; (API Linuxu) &rarr; Linux &rarr; hardware
 +
* Přitom API Win32 a&nbsp;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&nbsp;nich realizovat softwarově.
 +
</div>
  
=== Přístupy k virtualizaci počítače ===
+
 
* full virtualization (úplná virtualizace)
+
 
* paravirtualization (paravirtualizace)
+
== Virtualizace OS (platform virtualization) ==
* hardware-assisted virtualization (virtualizace s podporou HW)
+
* Někdy také označováno jako ''virtualizace hardware''.
 +
* To je to, co známe z&nbsp;VirtualBoxu.
 +
* Virtualizační nástroj (hypervizor) přijímá požadavky od aplikace a&nbsp;provádí je.
 +
Aplikace &rarr; Virtuální OS &rarr; Hypervizor &rarr; (Hostující OS &rarr;) 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&nbsp;VirtualBoxu),
 +
** fungovat jako samostatný operační systém a&nbsp;běžet přímo nad hardware (XEN, Windows Server, VMware,...).
  
 
=== Proč virtualizovat? ===
 
=== Proč virtualizovat? ===
# spouštění programů pro různé operační systémy na jednom počítači
+
; Co virtualizace nabízí?
# spouštění zastaralého SW
+
# Spouštění programů pro různé operační systémy na jednom počítači
# testování konfigurace
+
#* Všechny operační systémy mají běžet zároveň.
# úspora prostředků za HW a energii
+
# Spouštění SW, který vyžaduje starší nebo netypický HW
# snazší správa
+
# Testování prostředí bez rizika poškození hlavního systému
# efektivnější využití výkonu
+
#* Jednoduché vyzkoušení alternativní konfigurace OS
# vývoj operačních systémů
+
#* Testování nastavení
# vývoj programů, které musí fungovat na různých platformách
+
#* Nastavení vyšších oprávnění pro jiné uživatele &mdash; aniž by mohli poškodit hlavní systém
 +
#* Vývoj operačních systémů
 +
# Úspora prostředků za HW a&nbsp;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&nbsp;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&nbsp;opakovanému ukládání stejných dat.
 +
#* Třicet virtuálních strojů s&nbsp;OS Windows bude zabírat samo o&nbsp;sobě cca 600&nbsp;GB místa &mdash; přitom se většina kódu bude opakovat třicetkrát.
 +
 
 +
<div class="Poznamka">
 +
; 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ě &mdash; 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&nbsp;virtualizovaným operačním systémem.
 +
** Předpoklad: virtualizovaný operační systém musí umět pracovat s&nbsp;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&nbsp;tím, že pokud virtuální operační systém potřebuje pracovat s&nbsp;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&nbsp;hostitelská platforma musí být stejné.
 +
** (+) Většina kódu aplikace se provádí přímo v&nbsp;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&nbsp;hostitelská platforma musí být stejné.
 +
** (-) Náš procesor musí mít zabudovánu podporu virtualizace (dnes ji běžně procesory střední a&nbsp;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&nbsp;hardware.
 +
 
 +
=== Kontejnery ===
 +
* Cíl &mdash; 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&nbsp;potřebné knihovny, které aplikace vyžaduje.
 +
* Ostatní knihovny a&nbsp;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&nbsp;klasické virtualizace HW.
 +
 
  
=== HW požadavky ===
+
== HW požadavky ==
# Dostatek paměti pro hostitelský OS i pro virtuální OS
+
# Dostatek paměti pro hostitelský OS i&nbsp;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
Řádka 84: Řádka 159:
 
#* 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 ==
 
== Zdroje ==
 
* [http://en.wikipedia.org/wiki/Virtualization en.wikipedia.org > Virtualization]
 
* [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 &lt;http://en.wikipedia.org/wiki/Virtual_computing&gt;.
+
* 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 &lt;http://en.wikipedia.org/wiki/Virtual_computing&gt;].

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

Co znamená „virtuální“

Slovíčko „virtuální“ v oblasti výpočetní techniky

  1. 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.
  2. Simulace reálného života, kterou nám zprostředkovává počítač
    • virtual reality (VR)
    • virtual world
  3. 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.
  4. Náhrada jedné věci jinou, která se na venek chová stejně
    • virtual private network (VPN)


Virtualizace (Virtualization)

Pojem virtualizace obecně
Z předchozího studia již znáte


„Historie virtualizace“

Jak moc byl v historii SW závislý na konkrétním HW?

Virt historie.png

Virtualizace je možná i díky růstu výkonu počítačů.

Nezaměňujte pojmy

Virtualizace HW × simulace HW

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

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)

Aplikace → Virtuální OS → Hypervizor → (Hostující OS →) hardware

Proč virtualizovat?

Co virtualizace nabízí?
  1. 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ň.
  2. Spouštění SW, který vyžaduje starší nebo netypický HW
  3. 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ů
  4. Úspora prostředků za HW a energii
    • Proč? Virtualizace sama přece část výkonu spotřebuje...
  5. Snazší správa
    • Rychlé vytváření konfigurací podle šablony.
    • Kopírování stávající konfigurace.
  6. Efektivnější využití výkonu
    • Proč? Virtualizace sama přece část výkonu spotřebuje...
  7. 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
  1. 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).
  2. 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í
  1. 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šší!)
  2. A obdobně — jak může vést virtualizace k úspoře energie???

Virt vyhody.png

Přístupy ke zrychlení virtualizace

Kontejnery


HW požadavky

  1. 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í.
  2. 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.
  3. 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

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje