Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Virtualizáció dr. Micskei Zoltán Operációs rendszerek (vimia219)
Virtualizáció Számítástechnika központi fogalma Virtualizáció: erőforrás tényleges fizikai tulajdonságainak elrejtése a felhasználója elől, pl. o egy erőforrást több logikaiként felajánlani, o több fizikai erőforrást összefogni egybe… Virtuális memória, virtuális fájlrendszerek… 2
Forrás: A virtualizáció buzzword alkalmazásai Kiforratlan terminológia! Teljes számítógép virtualizálása Teljes számítógép virtualizálása Alkalmazás becsomagolása Alkalmazás becsomagolása Vékony kliensek Egygépes termékek Tárolórendszer felépítésének elfedése Tárolórendszer felépítésének elfedése + OS szintű virtualizáció: elkülönített futási környezet kialakítása + OS szintű virtualizáció: elkülönített futási környezet kialakítása Életciklus, telepítés, automatizálás… (private cloud) 3
* taxonómia: tágabb ~ osztályozás tudománya. Szűkebb ~ fogalmak közötti kapcsolatot megadó struktúra Virtuális gép taxonómia* Forrás: J. Smith and Ravi Nair, “The architecture of virtual machines,” IEEE Computer, vol. 38, 2005, pp A VM egy ABI-t lát A VM csak egy hardvert lát Multiprog- ramozott OS Java,.NET… 4
Virtuális gép taxonómia (részletesebb) 5 Forrás: Scope Alliance, Virtualization: State of the Art, 2008.
Platform virtualizáció Platform virtualizáció: teljes számítógép virtualizálása, egy gépen több OS futtatása o Elnevezés még: szerver, számítógép, hardver virtualizáció… Elemek: o Gazda gép (host machine) = fizikai gép o Vendég gép (guest machine) = virtuális gép o Virtual Machine Monitor (VMM): a virtuális gépeket kezelő program 6
Platform virtualizáció története ~ IBM CP-40 rendszere o virtualizáció a mainframe termékvonal része x86 virtualizáció o Sokáig lehetetlennek tűnt o 1997: Stanford, Disco projekt o 1998: VMware megoldás o További megoldások Jelenleg: külön iparág alakult már 7
Miért jó a platform virtualizáció? Tesztrendszer kiépítése HW konszolidáció Régi rendszerek (legacy systems) On-demand architektúra Rendelkezésre állás, katasztrófa védelem Hordozható alkalmazások … 8
Platform virtualizáció architektúrái Kétféle megközelítés: Hardver Oprendszer Virt. szoftver App. OS App. Hardver Virt. szoftver Menedzsment OS Menedzsment App. OS App. Hosted Bare-metal Jellemzően desktop megoldások: VMware Workstation, Player, Sun/Oracle VirtualBox, MS VirtualPC, KVM Jellemzően szerver megoldások: VMware ESXi, Xen, MS Hyper-V HOST GUEST 9
További alkalmazás: mobil virtualizáció 10 Bring Your Own Device (BYOD) Funkciók elkülönítése
Elméleti alapok
Elméleti alapok - Követelmények Követelmények egy virtualizációs megoldástól: Azonosság: a virtuális gépen futtatott programok ugyanazt az eredményt adják Biztonságosság: a VMM kezeli az összes hardver erőforrást Hatékonyság: a vendég gép utasításainak nagy része beavatkozás nélkül fut Gerald J. Popek, Robert P. Goldberg: Formal Requirements for Virtualizable Third Generation Architectures. Commun. ACM 17(7): (1974) 12
Alapvető probléma Vendég gépektől védeni kell a rendszert Pl.: HLT (Halt) utasítás kiadása o Elvárt: csak a vendég álljon le o Ha végrehajtanánk: mindenki leáll Megoldás: VMM felügyelje a vendég utasításait o Privilegizált utasítások kezelése 13
Elméleti alapok CPU virtualizáció Memória virtulizáció I/O virtualizáció
Alapvető módszerek – Tiszta emuláció HW Emulátor Virtuális gép Virtuális HW Alkalmazás Virtuális HW állapota Előny: Más CPU is emulálható Hátrány: Lassú Előny: Más CPU is emulálható Hátrány: Lassú Teljes virtuális HW állapot eltárolása az emulátorban (regiszterek, flag-ek) Teljes virtuális HW állapot eltárolása az emulátorban (regiszterek, flag-ek) Minden utasítást megvizsgál a VMM Alkalmazza a hatását az emulátorban, átalakítja a hívást, végrehajtja Alkalmazza a hatását az emulátorban, átalakítja a hívást, végrehajtja 15
Alapvető módszerek – Trap and emulate Trap: hardveres kivételkezelő rutin ami után a végrehajtás folytatódhat HW Emulátor Virtuális gép Virtuális HW Alkalmazás Virtuális HW állapota A nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre A nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre A privilegizált műveletek trap-et váltanak ki, és a VMM veszi át a végrehajtást 16 HW támogatás szükséges: védelmi szintek (pl. x86-on ring) virtuális gép alacsony védelmi szinten privilegizált utasítások nem megfelelő szinten kiadva trap-et okoznak HW támogatás szükséges: védelmi szintek (pl. x86-on ring) virtuális gép alacsony védelmi szinten privilegizált utasítások nem megfelelő szinten kiadva trap-et okoznak
x86 virtualizáció korlátai Egyes architektúrák könnyen virtualizálhatóak, az x86 nem ilyen volt ~250 utasításból 17 megsérti a klasszikus feltételeket, pl. POPF utasítás: EFLAGS regisztert módosítja o Ha nem ring 0-n adjuk ki, akkor nem ír felül bizonyos biteket, és nem is dob kivételt Privilegizált állapot kiolvasható o Virtuális gép megtudhatja, hogy virtualizált 17 Következmény: nem használható a trap & emulate módszer a klasszikus x86 esetében
Megoldások az x86 CPU virtualizációra Binary translation (szoftveres) Paravirtualizáció Hardveres virtualizáció 18
Binary translation utasítások nagy része közvetlenül fut privilegizált utasítások átírása futás közben nem igényel forráskódot átírt változatot eltárolja vendég OS nem tud arról, hogy virtualizált 19
Binary translation – példa 20 vEPC mov ebx, eax cli and ebx, ~0xfff mov ebx, cr3 sti ret mov ebx, eax mov [VIF], 0 and ebx, ~0xfff mov [CO_ARG], ebx call HANDLE_CR3 mov [VIF], 1 test [INT_PEND], 1 jne call HANDLE_INTS jmp HANDLE_RET start Guest CodeTranslation Cache Forrás: Carl Waldspurger, Introduction to Virtual Machines
Paravirtualizáció Fejlesztők módosítják a vendég OS forrását Problémás utasítások lecserélése Hypercall: VMM-et hívja közvetlen 21
Hardveres virtualizáció ~2005: Intel Virtualization Technology (VT-x) és AMD AMD-V HW-es támogatás: root mode, VMCS o Utasítások, pl.: VMCALL, VMLAUNCH Működik a trap & emulate módszer 22
Melyik a legjobb/leggyorsabb módszer? Folyamatosan változik a válasz o környezettől, terheléstől is függ o HW virtualizáció kezdetben kiforratlanabb, mint a BT Megoldások több módszert használnak vegyesen 23 VMware ESX/ESXi Microsoft Hyper-V Xen Szoftveres (BT)+-- Paravirtualizáció- (már nem)+ (részben)+ Hardveres (Intel VT-x, AMD-V) +++
Elméleti alapok CPU virtualizáció Memória virtulizáció I/O virtualizáció
Ismétlés Hogy néz ki a virtuális memória -> fizikai memória leképezés lapszervezés esetén? 25
Memória virtualizálása - szoftveres VM1VM2 Vendég: virtuális memória Vendég: „fizikai” memória Gazda: fizikai memória Vendég laptáblák VM allokációs laptáblák Kétszeres címfordítás helyett: árnyék laptáblák GOND: szinkronizálás Kétszeres címfordítás helyett: árnyék laptáblák GOND: szinkronizálás 26
Memória virtualizálása - paravirtualizáció Árnyék laptáblák használata itt is Vendég OS forrását módosítják Ha a vendég módosítja a laptábláit, akkor értesítse a VMM-et is erről 27
Memória virtualizálása - hardveres HW támogatás az újabb CPU-kban o AMD Rapid Virtualization Indexing, Intel Extended Page Tables Beágyazott laptábla (Nested page table) o vendég fizikai -> gazda fizikai leképezés eltárolása o cím leképezési rutin ezt is bejárja TLB bejegyzések azonosítóval ellátása Nagy teljesítménynövekedés: o , KVM: MMU paravirtualization is deadMMU paravirtualization is dead o 2009., VMware: Performance Evaluation of AMD RVI Hardware Assist, akár 42%-os növekedés isPerformance Evaluation of AMD RVI Hardware Assist 28
Elméleti alapok CPU virtualizáció Memória virtulizáció I/O virtualizáció
I/O eszközök kezelése (szoftveres) VMM Virtuális gép Normál driver Emulált virtuális HW A teljes, valós kommunikáció emulálása A teljes, valós kommunikáció emulálása Vendég OS HW kezelő I/O eszköz 30
I/O eszközök kezelése (paravirt.) Speciális csomag telepítése szükséges a vendégben o VMware Tools, Virtual PC Additions o Mindig telepítsük a vendég gépen! VMM Virtuális gép Normál driver Emulált virtuális HW Vendég OS HW kezelő VMM Virtuális gép Paravirt. driver Vendég OS HW kezelő Egyszerűsített hívások, adatstruktúrák megosztása Egyszerűsített hívások, adatstruktúrák megosztása I/O eszköz 31
I/O eszközök kezelése (hardveres) Hardveres támogatás o Intel VT-d, AMD IOMMU o PCI szabvány kiegészítése: I/O Virtualization (IOV) I/O eszközök o megosztása virtuális gépek között o közvetlen hozzárendelése egy virtuális géphez 32
Megoldások, cégek, termékek
Játékosok 34
Játékosok – 2 ESXi, vSphere… nyílt forrású hypervisor XenServer, XenApp Hyper-V, System Center Solaris Containers, Oracle VM, VirtualBox Kernel based Virtual Machine (KVM) mainframe, powerVM … 35
DEMO Erőforráskészlet – korlátozások, garanciák VM térkép Teljesítmény mérése Live Migration – virtuális gépet futás közben átrakjuk másik gépre Központi menedzsment 36
Cloud computing 37 ???
Cloud computing 38 Cloud
Számítási felhők rétegei Virtuális gépet kapunk Amazon EC2, RackSpace… IaaS Futtatókörnyezetet kapunk Java konténer,.NET, adatbázis… MS Azure, Google AppEngine… PaaS Szolgáltatást érünk el Google Docs, SalesForce CRM… SaaS 39
Kitekintés: Mirage OS 40
További információ Szakirány: Informatikai technológiák szakirány, Rendszertervezés ágazat, (pl. Intelligens rendszerfelügyelet tantárgy)Intelligens rendszerfelügyelet Választható tárgy (ősz): Virtualizációs technológiák és alkalmazásaik Virtualizációs technológiák és alkalmazásaik Cikk: o Ole Agesen et al.: The evolution of an x86 virtual machine monitor, SIGOPS Oper. Syst. Rev. 44, 4 (December 2010)The evolution of an x86 virtual machine monitor 41
Összefoglalás Virtualizáció: növekvő jelentőségű Ellentmondásos terminológiák Versengő technológiák, rengeteg gyártó Operációs rendszerek o Funkciók megvalósítása a hypervisor-ban o Kisebb jelentőség? 42