- také známé jako Virtual machine monitor
- povoluje spuštění vícero OS
- jako kernel, který běží kernely
- zlepšuje hardware utilizaci
- OS-level sdílení je tricky
- izolace uživatele je často nedostatečná
- pouze
root může instalovat software
- hypervisor/OS rozhraní je jednoduché (s porovnáním OS-aplikační rozhraní)
- mnoho zdrojů je “virtuálních”
- fyzická paměť od MMU
- periferie od OS
- dělá resource management jednodušší
- povoluje izolaci komponent
- typ 1: bare metal (samostatný, microkernel-like)
- typ 2: hosted
- běží na normálním OS
- často potřebuje kernel support
- IBM z/VM
- Xen
- Microsoft Hyper-V
- VMWare ESX
- VMWare (Workstation, Player)
- Oracle VirtualBox
- Linux KVM
- FreeBSD bhyve
- OpenBSD vmm
x86 hw lacks virtual supervisor mode
- sw-only řešení možné od pozdních 90. let
- VMI v 2005 od VMWare
- alternativně Xen v 2006
- závisí na modifikace guest OS
- skoro native speed bez hw podpory
- 2005: virtualizační rozšíření na
x86
- 2008: MMU virtualizace
- nemodifikovaný guest až skoro native speed
- většina sw-only se staly obsolete
- speciální ovladače pro virtuální zařízení (network, rng, block storage)
- rychlejší a jednodušší než emulace (orthogonal k CPU/MMU virtualizaci)
- také jako Virtual Machines
- vše v pc je virtuální
- buď pomocí hw (VT-x, EPT)
- nebo sw (QEMU,
virtio,…)
- mnohem jednodušší na správu než hw
- CPU a RAM
- persistentní (block) storage
- síťové připojení
- console device
- stejné principy jako normální procesy
- v hypervisoru je scheduler (jednodušší, s jinými tradeoffs)
- privilegované instrukce jsou trapped
- velmi podobné ke standardnímu stránkování
- sw (shadow paging)
- nebo hw (second-level translation)
- fixní množství RAm pro každou VM
- guest system nemůže zpřístupnit MMU
- nastavení shadow table, neviditelné to the guest
- guest page tables jsou synchronizovány s sPT pomocí VMM
- gPT být read-only aby zapříčinila traps
- hw-asistované MMU virtualizace
- přidá guest-physical to host-physical layer
- velmi zjednodušuje VMM
- také velmi rychlejší než shadow page tables
- normálně paravirtualizovaný NIC
- přenáší rámce mezi guest and host
- často připojená k SW bridge in the host
- alternativy: routing, NAT
- jedna fyzická NIC je používána všemi
- často také paravirtualised
- často backed normálními soubory (možná ve speciálním formátu)
- ale může být reálné block device
- hlavně užitečné v desktop systémech
- GPU / grafický hw
- audio equipment
- printers, scanners, …
- proti-virtualizační technologie
- založeno na IO-MMU (VT-d, AMD-Vi)
- virtuální OS se může dotýkat reálného hw (pouze jeden OS zároveň)
- může být přiřazeno (pomocí VT-d) k jednomu OS
- nebo time-shared používáním native ovladačů (GVT-g)
- paravirtualizované
- sdíleno by other means (X11, SPICE, RDP)
- užitečné přes passthrough
- nebo standarním sdílením
- virtuální PCI, USB nebo SATA bus
- přeposílání skutečnému zařízení
- VM může být jednoduše zastaveno
- RAM zastavené VM může být zkopírován
- např. soubor v host filesystem
- s registry a další state
- a později také načten a resumed
- uložený stav může bát posláno přes síť
- a resumed na jiném hostu (do té doby, dokud je virtuální prostředí stejné)
- je to známo jako paused migrace
- používá asynchronní memory snapshot
- host copíruje stránky a nastaví je read-only
- snapshot je poslán až je to zkonstruováno
- změněné stránky jsou poslány na konci
- VM je pak pausnutá
- registry a posledních pár stránek je posláno
- VM je resumed na vzdáleném konci
- často v řádu několika milisekund
- jak dealokovat fyzickou paměť?
- často chtěné ve virtualizaci
- potřebuje speciální host/guest rozhraní
- OS-level virtualizace
- např. virtualizovaný network stack
- nebo omezený filesystem access
- není to kompletní virtulní počítač
- turbocharged processes
- VM trvá nabootovat
- každý VM potřebuje vlastní kernel
- toto se sečte při více VM
- jednodušší ke efektivnímu sdílení paměti
- jednodušší k oříznutí OS image
- vícero containers sdílí jeden kernel
- ale né user tables, process tables, …
- kernel musí explicitně povolovat
- další úroveň isolace (proces, uživatel, container)
- lehká VM trvá vteřinu/dvě
- container může trvat pod 50ms
- ale SM mohou být suspended a resumed
- ale většina VM zabírá mnoho místa
- hlavní část všech container systems
- není velmi sofistikované nebo bezpečné
- ale povoluje OS images pod jedním kernelem
- všechno ostatní je sdíleno
- process tables, síť, atd. je sdíleno
- super uživatel je také sdílený
- containers mají jejich vlastní view of the file system
- i s system libraries a utilities
- evoluce
chroot container
- přidává separaci uživatele a process table
- a virtualizovaný network stack (každý jail má vlastní IP adresu)
root v jailu má omezený power
- jako BSD jails ale na Linuxu (FreeBSD jails 2000, VServer 2001)
- není součástní hlavního kernelu
- jailed
root uživatel je částečně isolovaný
- viditelnost compartments v Linux kernelu
- virtualizace běžných OS zdrojů
- the filesystem hierarchy (včetně mountů)
- process tables
- networking (IP address)
- kontroluje alokaci hw zdrojů v linuxu
- CPU skupina je férová scheduling jednotka
- memory group nastavuje omezení na použití paměti
- převážně orthogonal to namespaces
- mainline Linux way to do containers
- založeno na namespaces a
cgroups
- poměrně nový (2008)
- feature set podobný k Vserver, OpenVZ, …
- na půlcesty mezi VM a containerem
- an early fully paravirtualised system
- Linux kernel běží jako proces na jiném Linuxu
- od verze Linux 2.6 v 2003
- velmi podobný k User-mode Linux
- od r 2007
- používá
libc oproti UML
- paravirtuální ethernet, storage a console
- jednodušší k bezpečnému nasazení
- použitím existujících zabezpečení
- pro host, převážně běžný proces
- kernel musí být ported (analogové k nové hw platformě)
- není široce podporováno, oproti hypervisors
- stav procesu je mnohem těžší serializaci (file descriptors, network, …)
- tradeoff s rychlým vypnutím/zapnutím
- disk image je “ztělesnění” VM
- virtualní OS musí být naistalováno
- image může být pouhý soubor
- nebo dedikované zařízení na host
- vytváření kopie image = snapshot
- může být uskutečněno výkonně: copy on write
- alternativa k OS instalaci
- vytvoření kopie k čerstvě instalovaném obrazu
- a spuští aktualizace po klonování obrazu