Virtualizace

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(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:
Nadřazené stránky:
+
[[Category:VSE]][[Category:Informatika]][[Category:Virtualizace]][[Category:OSY]]
[[Category:VSE]]
+
<div class="Motto">
[[Category:Informatika]]
+
;Motto
[[Category:OSY]] [[OSY4]]
+
Virtuální hospoda? Konferenční hovor na Skype a basa lahváčů :-D
<br />
+
: Petr Juřena, bývalý žák OA
Související stránky:  
+
</div>
[[Virtualizace_ukoly|Úkoly k virtualizaci]]
+
  
== Motto ==
+
== Co znamená „virtuální“ ==
: Virtuální hospoda?
+
: Konferenční hovor na Skype a basa lahváčů :-D
+
:: Petr Mařen Juřena
+
 
+
== O virtualizaci obecně ==
+
  
 
=== Slovíčko „virtuální“ v oblasti výpočetní techniky ===
 
=== Slovíčko „virtuální“ v oblasti výpočetní techniky ===
: Viz: 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>.
+
# Zajištění nezávislosti SW na HW
# programy, simulující činnost hardware
+
#* Virtualizace HW (platformy)
#* virtualization
+
#** SW je spouštěn v prostředí, díky kterému je nezávislý na konkrétním HW
# simulace reálného života
+
#** Touto variantou se zabýváme dále.
#* virtuální realita
+
#* 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) ==
 +
; Pojem virtualizace obecně:
 +
* Odstínění programu od HW či SW, na kterých je závislý.
 +
* Program běží v&nbsp;prostředí, které zajišťuje veškeré jeho požadavky místo odpovídajícího HW.
 +
 
 +
; Z&nbsp;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 &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''
 +
* virtuální paměť &mdash; viz [[Přístup procesů do paměti]]
  
=== Virtualizace (Virtualization) ===
 
: Viz: en.wikipedia.org > Wiki > Virtualization <http://en.wikipedia.org/wiki/Virtualization>
 
Odstínění programu od HW či SW, na kterých je závislý.
 
; Již znáte z předchozího studia:
 
* virtuální stroj Javy
 
* virtualizaci paměti. <#Freemind_Link_239384615>
 
* virtuální CD mechanika
 
; Lze
 
* Virtualizace HW
 
** SW je spouštěn v prostředí, díky kterému je nezávislý na konkrétním HW
 
* 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 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čů. Viz také [[Mooreův zákon]].
+
[[File:virt_historie.png]]
 +
 
 +
Virtualizace je možná i&nbsp;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&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
 +
* 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.
 +
* 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.
 +
* 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).
 +
 
 +
<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>
 +
 
 +
 
  
 
== Virtualizace OS (platform virtualization) ==
 
== Virtualizace OS (platform virtualization) ==
 +
* 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,...).
  
=== Princip funkce virtuálního stroje ===
+
=== 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 &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é
  
=== Proč virtualizace? ===
+
; Problémy
# Chci spustit program, pro který nemám správný OS
+
# 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).
# Zkoušení
+
# Pokud provozujeme více virtuálních strojů, dochází k&nbsp;opakovanému ukládání stejných dat.
# Virtualizace serveru
+
#* 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.
## úspora prostředků za HW a energii
+
## snazší správa
+
## efektivnější využití výkonu
+
  
=== HW požadavky ===
+
<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ě &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 ==
 +
# 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
#* Virtuální pevné disky mohou zabírat jen tolik místa, kolik je na nich aktuálně zapsáno dat.
+
#* Virtuální pevné disky lze omezit, aby zabíraly jen tolik místa, kolik je na nich aktuálně zapsáno dat.
# Někeré procesory mají hardwarovou podporu virtualizace:
+
# 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.
  
== Oracle VirtualBox ==
 
 
=== O VirtualBox-u ===
 
* Vydává firma Oracle
 
** (původně vyvinut firmou Sun, ta později koupena společností Oracle)
 
* Edice
 
*# OSE edice pod licencí GPL 2.0
 
*# komerční edice: pro akademické účely, osobní použití a vyzkoušení zdarma
 
 
; Komerční edice nabízí navíc:
 
# USB support
 
#: připojení USB zařízení k virtuálnímu stroji
 
# RDP server
 
#: možnost připojit se k běžícímu virtuálnímu stroji vzdáleně
 
#: OSE edice má místo toho VNC server.
 
# USB over RDP
 
; Pro operační systémy (Host OS)
 
: Windows, Linux, OpenSolaris i MacOS X
 
; Operační systémy, které lze provozovat virtuálně (Guest OS)
 
: Windows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7), DOS/Windows 3.x, Linux (2.4 and 2.6), Solaris a OpenSolaris a OpenBSD
 
  
=== Alternativy VirtualBox-u ===
+
== Zdroje ==
# VMware
+
* [http://en.wikipedia.org/wiki/Virtualization en.wikipedia.org > Virtualization]
#* VMware ESX Server
+
* 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;].
#* VMware Workstation 6
+
# Windows Virtual PC
+
# (Windows XP mode)
+
#: Ve Windows 7 Professional
+
# KVM
+
#* Open source, pouze pro Linux
+
#* moduly do jádra Linuxu
+
#* využívá Intel VT-x či AMD V
+
#* i virtualizace serveru
+
#* vnořená virtualizace
+
#* memory aggregation
+
#** sdílení paměťových bloků mezi více virtuálními stroji, jsou-li stejné
+
#* live migration
+
#* PCI passthrough
+
#** přiřadí konkrétní PCI zařízení konkrétnímu hostu
+
# QEMU
+
# Hyper-V (Microsoft)
+
#* virtualizace serverů
+
# Wine
+
#* Implementace API Win32 pro Linux.
+
#* Aplikace pro Windows pak lze spouštět pod Linuxem (v rámci prostředí Wine).
+

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