Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Hasonló dokumentumok
Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Utolsó módosítás:

Virtualizáció. egy hardveren több virtuális rendszer működik egyszerre, virtuális gépekben futó önálló vendég (guest) operációs rendszerek formájában

UNIX / Linux rendszeradminisztráció

Utolsó módosítás:

Hogyan működtethető a telefonrendszer virtuális környezetben? Mészáros Tamás Műszaki fejlesztési vezető

Memória és perifériák virtualizációja. Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Utolsó módosítás:

Utolsó módosítás:

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

Könyvtári szervervirtualizáció Oracle Virtual Machine platformon

Virtualizációs technológiák és alkalmazások. Házi feladat. A Virtualbox. készítette: Andrus Tamás

VIRTUALIZÁCIÓ KÉSZÍTETTE: NAGY ZOLTÁN MÁRK EHA: NAZKABF.SZE I. ÉVES PROGRAMTERVEZŐ-INFORMATIKUS, BSC

Utolsó módosítás:

Az operációs rendszer szerkezete, szolgáltatásai

Operációs rendszerek. Bemutatkozás

Operációs rendszerek az iskolában

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Szalai Ferenc

Felhő alapú hálózatok (VITMMA02) Virtualizáció

Felhő alapú hálózatok (VITMMA02) Virtualizáció

Operációs Rendszerek MSc

Bevezetés a számítástechnikába

Szerver virtualizációs technológiák

Operációs rendszerek. Az NT folyamatok kezelése

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Virtualizáció szabad szoftverekkel. Mátó Péter

Dr. Schuster György október 30.

Operációs rendszerek III.

Számítógépes virtualizáció

Operációs rendszerek Folyamatok 1.1

Virtualizációs technológiák és alkalmazásaik (VIMIAV89) Házi feladat: Intel VT-d (IOMMU) technológia részleteinek megismerése

Mobil operációs rendszerek. Készítette: Kisantal Tibor

Alkalmazások típusai Szoftverismeretek

LOK Virtualizáció. szabad szofverekkel. Mátó Péter

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Operációs rendszerek. Windows NT. A Windows NT

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Alkalmazás és megjelenítés virtualizáció

Számítógépek felépítése

Virtualizációs technológiák Linux alatt (teljesítményteszt)

VIRTUALIZÁCIÓ. 2006/2007. tavaszi félév Tanulmány Esettanulmány: a XEN VMM KÉSZÍTETTE: BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM

IBM felhő menedzsment

SUSE Linux Enterprise Server 12 Hargitai Zsolt

.NET (Dot-NET) #1 (Bevezetés)

Operációs rendszerek

Dr. Schuster György október 14.

SC Kérdés. SC Kérdés. SC Kérdés

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Az előadás magáncélra szabadon felhasználható. Köz- és felsőoktatásban felhasználható, csak előtte kérlek írj egy t nekem.

Operációs Rendszerek II.

IT - Alapismeretek. Feladatgyűjtemény

SUSE Linux megoldások. Horváth Gábor Kálmán vezető tanácsadó

DIPLOMAMUNKA. Soltész Dániel. Debrecen

Operációs Rendszerek II.

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Informatikai rendszerek alapjai (Informatika I.)

Korszerű Adatbázisok. Gombos Gergő

Vizuális, eseményvezérelt programozás X. V 1.0

Az előadás magáncélra szabadon felhasználható. Köz- és felsőoktatásban felhasználható, csak előtte kérlek írj egy t nekem.

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

A virtualizáció a modern vállalati informatikai infrastruktúra alapja

Operációs rendszerek

OPERÁCIÓS RENDSZEREK. Célkitűzések, tárgyfelépítés. Módszerek. OS fogalom, struktúrák. 2005/2006. tanév II. félév Dr. Vadász Dénes

Windows Server 2012: a felhő OS

Podoski Péter és Zabb László

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Magas szintű optimalizálás

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

Kliens hypervisorok - új buzzword a láthatáron

Szerverterem egy számítógépben avagy hogyan élnek a barack lakói. Mátó Péter <mato.peter@fsf.hu>

Operációs rendszerek. Az NT memóriakezelése

Dr. Illés Zoltán

Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV89

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

Az Invitel adatközponti virtualizációja IBM alapokon


Felhasználók hitelesítése adatbiztonság szállításkor. Felhasználóknak szeparálása

Virtuális gépek. Kiss Róbert, informatika IV. év, Babes-Bolyai t.e.

Operációs rendszerek

Korszerű Adatbázisok. Gombos Gergő

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Operációs rendszerek

Könyvtári címkéző munkahely

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

SAP Business One. Áttekintés, gyakorlati ismertetı. Mosaic Business System Kft.; Support:

Operációs rendszerek MINB240

Utolsó módosítás:

Bevezetés az informatikába

Architektúra, megszakítási rendszerek

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Telepítsünk operációs rendszereket egyszerűen.

386 processzor címzés

Hardver Ismeretek IA32 -> IA64

Átírás:

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák https://www.vik.bme.hu/kepzes/targyak/vimiav89/

Mi is az a Virtualizáció? Az erőforrások elvonatkoztatása az erőforrást nyújtó elemektől - kellemesen sejtelmes általános definíció Jellemzően: fizikai erőforrásokból logikai erőforrások képzése, amik függetlenek a tényleges fizikai elemektől korlátos erőforrások szétosztása több részre Ez egy új ötlet? Korántsem az oprendszerek is ezt csinálják Mobilplatform (Android, Java)

Mit csinál az operációs rendszer? Szolgáltatások CPU idő Virtuális memória Fájlrendszer Socketek Alkalmazások Operációs rendszer Hardver Processzor Memória Háttértár Hálózat

Interfész a hardverhez: Szolgáltatások Alkalmazások Operációs rendszer Hardver CPU, Memória: ISA (Instruction Set Architecture) Perifériák: I/O vagy memóriatartományban regiszterek, megszakítás, DMA

Interfész az alkalmazások és a rendszermag között Rendszerhívások (System calls) Szolgáltatások Alkalmazások Operációs rendszer Hardver Interfész Adatszerkezetek IPC mechanizmusok

Interfész az alkalmazások szintjén, illetve az OS magas szintű szolgáltatásai között Szolgáltatások Alkalmazások Operációs rendszer Hardver Könyvtár hívások (call) Futtatókörnyezetek Konfig fájlok, Registry, stb

Interfész a nyújtott szolgáltatások felé Hálózati protokollok Szolgáltatások Alkalmazások Operációs rendszer Hardver Felhasználói felület stb

Desktop virtualizáció Alkalmazás futtatókörnyezetek (runtime environments) Szolgáltatások Alkalmazások Operációs rendszer Hardver Alkalmazás virtualizáció (packaged applications ) Operációs rendszer szintű virtualizáció (container, jail) Platform virtualizáció

Történeti áttekintés http://jason.files.wordpress.com/2011/12/screen-shot-2011-12-22-at-9-33-28-am.png

Mi kell egy virtuális CPU-hoz VMM virtual machine monitor: olyan komponens, ami a virtuális gépek számára az absztrakciót biztosítja Popek és Goldberg szerint egy VMM alapvető jellemzői: Ekvivalencia A VMM felett futó program mindig pontosan ugyanazt az eredményt adja futás közben, mintha fizikai CPU-n közvetlenül futna Erőforrás kezelés A VMM minden virtualizált erőforrást teljes egészében maga felügyel Hatékonyság A virtuális gépben futó program utasításainak nagy része változtatás és VMM beavatkozás nélkül fut a fizikai CPU-n

Mit tud a processzor üzemmódok A CPU üzemmódok célja: Visszamenőleges kompatibilitás (x86 másból sem áll ) Pl.: valós mód (16 bit), védett mód (16 és 32 bit), long mód (64 bit) Egy program ne tudjon bizonyos műveleteket végezni Operációs rendszer el tudja szigetelni a programokat egymástól védett módok Futási privilégium szintek, al-üzemmódok (rings) Példa: 4 privilégium szint az x86 védett módjában Ring 0, supervisor mód: legbővebb utasításhalmaz Ring 1 Ring 2 Ring 3, user mód: legszűkebb részhalmaz Ring 0 Ring 1 Ring 2 Ring 3

VMM jellemzői Mik a problémák ezzel? Az ekvivalencia és az erőforrás kezelési kritérium ellentmondó követelményeket támaszt Ha a VMM kezeli az erőforrásokat, mit csinál a virtuális gépben futó OS?

Szimuláció és emuláció Ekvivalencia biztosítása Szimuláció: szoftverrel modellezzük a processzor belső működését (különböző mélységig megtartva a valósághűséget). Fizikailag sohasem fut a virtuális gép kódja a CPU-n. Emuláció: helyettesítjük a VMM felett futtatandó programot/annak egy részletét egy másikkal, ami végül pontosan ugyanazt az eredményt adja (de akár teljesen más futási utat bejárva, elkerülve a privilegizált utasítások használatát) Ekvivalencia csak ISA szintjén Erőforrás-takarékos Erőforrás-igényes Ekvivalencia tranzisztorok szintjén Inkább emuláció Inkább szimuláció

Tiszta emuláció A vendég virtuális gép kódját a processzor nem futtatja közvetlenül, hanem adatként feldolgozza Eltérhet a virtuális gép CPU architektúrája a futtató CPU-tól Virtualizációhoz (P&G értelemben vett) képest lassú Vendég gép futtatható bináris kódja Interpreter Vendég gép futtatható bináris kódja JIT fordító Vendég gép átfordított bináris kódja Virtuális gép állapota

Emuláció megvalósításának lehetőségei Emuláció (és szimuláció) kétféleképpen Futási idejű értelmező (Interpreter) adatként kezeli és lépésenként hajtja végre egy szoftveres modellen a virtuális gép utasításfolyamát Lassú, a CPU közvetlenül csak az értelmező kódját futtatja Hordozható futtatókörnyezet Izoláció természetesen adódik Éppen időben fordító (JIT compiler just in time ) végrehajtás előtt egy fordító feldolgozza a virtuális gép soron következő utasításait, és kódot generál belőle, ami az eredetivel ekvivalens viselkedést mutat Közvetlenül futtatható kódot generál, cache-elési eljárásokkal gyors lehet Nehéz implementálni, nem hordozható Izolációt nem automatikusan biztosítja Példa: QEMU x86 emulátor (és Java VM,.NET CLR is ilyen)

Nem nevezhető teljesen emulációnak mivel a Linux és a Windows kernele is x86 architektúrájú WINE Emuláció

Virtualizáció Virtualizáció: A vendég gép utasításainak egy részét beavatkozás nélkül végrehajtja a fizikai CPU-n A privilegizált utasításokat kell külön kezelni Klasszikus módszer: trap & emulate Következmény: Gyorsabb, mint az emuláció A vendég és a fizikai gép ISA-ja megegyezik ISA=utasításkészlet

Trap & emulate módszer Virtuális gép Alkalmazás (Trap: hardveres kivételkezelő rutin ami után a végrehajtás folytatódhat) Virtuális HW Emulátor Virtuális HW állapota A nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre A privilegizált vagy érzékeny műveletek trap-et váltanak ki, és a VMM veszi át a végrehajtást HW HW támogatás szükséges: védelmi szintek virtuális gép alacsony védelmi szinten fut privilegizált utasítások nem megfelelő szinten kiadva trap-et okoznak

Natív és virtualizált rendszer összehasonlítása Ring 3 userspace alkalmazások Ring 2 Ring 1 vendég OS kernel Ring 0 supervisor mode VMM A VMM-ben tett kör költséges, a CPU üzemmód váltás során teljes állapotmentés majd a végén visszaállítás kell! Mikor éppen virtualizált operációs rendszer fut SYSCALL és INT továbbra is a Ring3-ból Ring0-ba hív át! A VMM megkapja a vezérlést, feladata hogy továbbítsa a hívást a vendég kernelnek Amikor a vendég kernel Ring1-ben nem engedélyezett utasítást hajtana végre a VMM elkapja, lekezeli, és úgy tesz, mintha megtörtént volna. A VMM kapja a timer interruptot is, így ütemezheti a vendég gépeket. Ezt is továbbítja az aktív vendég kernel felé is. A vendég OS teljesítménytől eltekintve nem tud róla, hogy virtualizált

Három lehetőség a virtualizációra (x86) Szoftveres virtualizáció (Trap and Emulate + bináris fordítás) Paravirtualizáció (vendég OS kódját módosítjuk, hogy tudjon a virtualizációról, és hívhassa a VMM-et) Hardveres virtualizáció (Trap and Emulate, teljesen hardveres támogatással)

Bináris fordítás (binary translation) Mit tegyünk a problémás utasításokkal? Szoftveres virtualizáció bináris fordítással (VMware megoldása) Egy JIT fordító a végrehajtás előtt végignézi a kód szegmenst és kicseréli a problémás utasításokat pl. SYSCALL-ra, vagy valami egyéb kódrészletre Kicserélhet egyéb, amúgy elfogható utasításokat is rögtön a kezelő kódrészlettel, hogy elkerülje a felesleges hívást a VMM-be (inline translation) Mivel a kód hossza megváltozhat ezért a kódra mutató pointereket (jump, branch utasítások) is módosítani kell A végrehajtás menete: elő-fordítás + virtualizált végrehajtás elfogással + elfogott utasítások emulációja Teljesítmény? Nem teljes fordítást végez, az utasítások többségét változatlanul hagyja A JIT fordító minden kódrészletet csak az első futáskor jár be, ismételt futtatáskor már cache-eli a már módosított kódrészeket Optimalizálással csökkenthető a VMM-be történő hívások száma

Három lehetőség a virtualizációra (x86) Szoftveres virtualizáció (Trap and Emulate + bináris fordítás) Paravirtualizáció (vendég OS kódját módosítjuk, hogy tudjon a virtualizációról, és hívhassa a VMM-et) Hardveres virtualizáció (Trap and Emulate, teljesen hardveres támogatással)

Paravirtualizáció Módosítsuk a vendég OS kernelt, hogy ne használjon elfoghatatlan utasításokat! Nem kell semmiféle előfordító A vendég OS tehát kifejezetten tud róla, hogy virtualizált Ne csak az elfoghatatlan, de minden szükségtelen vagy elkerülhető privilegizált utasítást irtsunk ki a vendég kernelből > Kevesebb váltás kell a VMM-be. Vezessünk be saját rendszerhívásokat a vendég kernel-vmm kommunikációra, és amit csak lehet, ezzel oldjuk meg (perifériák kezelése)

Paravirtualizáció

Három lehetőség a virtualizációra (x86) Szoftveres virtualizáció (Trap and Emulate + bináris fordítás) Paravirtualizáció (vendég OS kódját módosítjuk, hogy tudjon a virtualizációról, és hívhassa a VMM-et) Hardveres virtualizáció (Trap and Emulate, teljesen hardveres támogatással)

Hardveres Virtualizáció Ring 3 userspace alkalamazások Ring 2 Ring 1 Ring 0 supervisor mode - kernel Root Mode - hypervisor mode - VMM Intel VT-x és AMD-V kiegészítésekkel új mód jött be (root/non-root mode) SYSCALL és INT Ring3-ból Ring0-ba hív át nem kell felesleges kört futnia a VMM-ben Van külön VMCALL utasítás is, amivel ki lehet hívni a Root Mode-ba Minden szükséges privilegizált utasítást elkap A binary translation sok optimalizációra adott lehetőséget, ami itt hiányzik Lassabb volt a szoftveres virtualizációnál (de javul, a VMCALL-VMRESUME körülfordulási időt minden CPU generációval csökkentik)

Hardveres virtualizáció bináris fordítással

Hardveres virtualizáció CPU támogatással

Melyik a legjobb/leggyorsabb módszer? Folyamatosan változik a válasz környezettől, terheléstől is függ HW virtualizáció kezdetben kiforratlanabb, mint a BT Megoldások több módszert használnak vegyesen VMware ESX/ESXi Microsoft Hyper-V Szoftveres (BT) + - - Paravirtualizáció - (már nem) + (részben) + Hardveres (Intel VT-x, AMD-V) Xen + + +