Hypervisor
A hypervisor – vagy magyarul hiperfelügyelő[1] olyan szoftver vagy hardver, ami virtuális számítógépek futtatását végzi. A hypervisort működtető számítógép a host (kiszolgáló, virtualizációs szerver). A virtuális számítógépek a vendégek (angolul guest, vendég), ezek számára a hypervisor egy virtuális környezetet biztosít, amelyen a vendég operációs rendszer fut. Több ilyen virtuális számítógép osztozkodhat a host gép erőforrásain. Ellentétben egy emulátorral, a vendég a legtöbb utasítást a natív hardveren hajtja végre. Több példányban futó különböző operációs rendszerek oszthatják meg a virtualizált hardver erőforrásait, például Linux, Windows és macOS példányok mindegyike futtatható egyetlen fizikai x86-os gépen. Ez ellentétben áll a műveleti rendszer szintű virtualizációval, ahol az összes példánynak (általában konténereknek nevezett) egyetlen magot kell osztaniuk.
A „hipervizor” kifejezés egy variációja a felügyelőnek, ami a műveleti rendszer kernelének hagyományos neve: a hipervizor a felügyelők felügyelője, a „hyper-” pedig a „super-” erősebb változata. A kifejezés a körülbelül 1970-es évekre datálódik, eleinte az IBM 360/65 gépeken alkalmazott technológiára, és később a CP-67 DIAC kezelőre is használták. A korábbi CP/CMS (1967) rendszerben a Felügyeleti Program kifejezést használták helyette.
Történet
[szerkesztés]A hypervisor kifejezést először 1965-ben használták az IBM 360/65 gépeken. Lehetővé tette, hogy az IBM 360/65 gép megossza memóriáját, félig IBM 360-ként, félig pedig emulált IBM 7080-ként viselkedve. A hypervisorként említett szoftver váltott a két üzemmód között időosztásos alapon. A hypervisor kifejezést a felügyelő szoftver (supervisor) fejlesztéseként értelmezték.[2]
Az első teljes virtualizációt nyújtó hypervisorok a SIMMON teszt eszközök és az egyedi IBM CP-40 kutatási rendszerek voltak, amelyek 1967 januárjában kezdték meg a termelési felhasználást, és az IBM CP/CMS operációs rendszer első verziójává váltak. A CP-40 egy S/360-40 gépen futott, amelyet a Cambridge Scientific Center módosított dinamikus címfordítás támogatására, egy funkciónak, amely lehetővé tette a virtualizációt. Eddig a számítógép hardvere csak olyan mértékben lett virtualizálva, hogy lehetővé tegye a többfelhasználós alkalmazások egyidejű futtatását, például a CTSS és az IBM M44/44X esetében. A CP-40-nel a hardver felügyelő állapota is virtualizált lett, lehetővé téve több operációs rendszer egyidejű futtatását külön virtuális gép kontextusokban.
A programozók hamarosan megvalósították a CP-40-et (CP-67-ként) az IBM System/360-67-hez, az első termelési számítógép rendszertehetséges teljes virtualizációval. Az IBM ezt a gépet 1966-ban szállította ki; tartalmazta az oldal-címfordítási tábla hardvert a virtuális memória és más technikák lehetővé tételéhez, amelyek teljes virtualizációt tettek lehetővé az összes kernel feladat számára, beleértve az I/O és interrupt kezelést is. (Megjegyzés, hogy a "hivatalos" operációs rendszer, a TSS/360 nem alkalmazott teljes virtualizációt.) Mind a CP-40, mind a CP-67 1967-ben kezdték meg a termelési felhasználást. A CP/CMS elérhető volt az IBM ügyfelek számára 1968-tól a 70-es évek elejéig, forráskódban, támogatás nélkül.
A CP/CMS része volt az IBM kísérletének a strapabíró időmegosztású rendszerek építésére nagygépeihez. A hypervisor által több operációs rendszer egyidejű futtatásával a rendszer strapabírósága és stabilitása növekedett: még akkor is, ha egy operációs rendszer összeomlott, a többi továbbra is zavartalanul működött. Valóban, ez lehetővé tette a béta vagy kísérleti verziók telepítését és hibakeresését, anélkül hogy veszélyeztetnék a stabil fő produkciós rendszert, és anélkül, hogy további drága fejlesztési rendszereket igényelne.
Az IBM bejelentette a System/370 sorozatot 1970-ben, anélkül, hogy megfelelő lenne a virtualizációhoz szükséges virtuális memória funkció, de hozzáadta azt a 1972. augusztusi Advanced Function bejelentésben. A virtualizáció szerepelt minden utódszereplő rendszerben, így a mai napig az összes modern IBM nagygép, beleértve a Z sorozatot, kompatibilis marad a 60-as évekbeli IBM S/360 sorozattal. A 1972-es bejelentés tartalmazta a VM/370-et is, amely a CP/CMS újraillesztése volt az S/370 számára. Ellentétben a CP/CMS-sel, az IBM támogatást is biztosított ehhez a verzióhoz (bár továbbra is forráskódban terjesztették ki több verzióban). A VM a Virtual Machine rövidítése, kiemelve, hogy az összes, nem csak néhány hardware interfész virtualizált. Mind a VM, mind a CP/CMS korai elfogadást és gyors fejlesztést élvezett az egyetemeken, vállalati felhasználóknál és időmegosztó szolgáltatóknál, valamint az IBM-en belül. A felhasználók aktív szerepet játszottak a folyamatos fejlesztésben, elöljáróban azon trendek figyelését, amelyeket a modern nyílt forráskódú projektekben látunk. 2000-től népszerűségének és támogatásának felívelése volt a z/VM termék formájában, például Linux platformként az IBM Z-n.
Ahogyan fent említettük, a VM vezérlő programja tartalmaz egy hypervisor-hívás kezelőt, amely elfogja a DIAG ("Diagnózis", opcode x'83') utasításokat, amelyeket egy virtuális gépben használnak. Ez biztosítja a fájlrendszer-hozzáférés és más műveletek gyors nem-virtualizált végrehajtását (A DIAG egy modellfüggő privilegizált utasítás, nem használják a normál programozás során, így nem virtualizált. Ezért elérhető a "házigazda" operációs rendszer számára jelzésként). Amikor először megvalósították a CP/CMS 3.1 kiadásában, ez a DIAG használat egy operációs rendszeri felületet biztosított, ami analóg volt a System/360 Felügyelő Hívás utasításhoz (SVC), de az nem igényelte a rendszer SVC virtualizálásának módosítását vagy bővítését.
A hypervisor kifejezést először 1965-ben használták az IBM 360/65 gépeken. Lehetővé tette, hogy az IBM 360/65 gép megossza memóriáját, félig IBM 360-ként, félig pedig emulált IBM 7080-ként viselkedve. A hypervisorként említett szoftver váltott a két üzemmód között időosztásos alapon. A hypervisor kifejezést a felügyelő szoftver (supervisor) fejlesztéseként értelmezték.
1985-ben az IBM bemutatta a PR/SM hypervisort a logikai partíciók (LPAR) kezelésére.
Osztályozás
[szerkesztés]
Robert P. Goldberg kétféle hypervisort vázolt fel:[3][4]
- 1-es típus (natív, hardveres)
- a hypervisor közvetlenül a gazdagép (hoszt) hardverén fut, irányítja a hoszt hardvert és a vendég operációs rendszereket. Ide tartoznak a klasszikus hypervisorok: a SIMMON és a CP/CMS. A modern implementációk az Oracle Vm Server for Sparc, a XenServer, a VmWare ESX és a Microsoft Hyper-V.
- 2-es típus (hosztolt)
- hagyományos operációs rendszer környezetben fut. A hypervisor a második réteg az operációs rendszer felett, és ezen fut harmadik rétegként a vendég operációs rendszer. Erre példa a KVM, a VmWare Workstation és a VirtualBox.
Operációs rendszerek között
[szerkesztés]Több tényező vezetett a virtualizációs technológia újbóli elterjedéséhez 2005 körül a Unix, Linux és más Unix-szerű operációs rendszerek között:
- A bővülő hardverkapacitás lehetővé teszi, hogy minden egyes gép több egyidejű munkát végezzen
- Az erőfeszítések a költségek csökkentése és a szerverek összevonása révén, a kezelés egyszerűsödik
- A nagy multiprocesszoros és klaszter telepítések ellenőrzésére irányuló igény, például szerverfarmokban
- A javított biztonság, megbízhatóság és eszközfüggetlenség, amely lehetséges a hypervisor architektúrából
- A képesség, hogy futtassuk bonyolult, operációs rendszerfüggő alkalmazásokat különböző hardver- vagy operációs rendszer-környezetekben
- A képesség, hogy több erőforrást allokáljunk, több alkalmazást illesszünk be egy hostra
- A nagy Unix-eladók, például HP, IBM, SGI és Sun Microsystems már értékesítettek virtualizált hardvert a 2000-es évek előtt. Ezek általában nagy, drága rendszerek voltak (a multimillió dolláros tartományban a csúcskategóriában), bár a virtualizáció elérhető volt néhány alacsony és középkategóriás rendszeren, például az IBM pSeries szervereken, a HP Superdome sorozaton és a Sun/Oracle T-sorozatú CoolThreads szervereken.
Bár a Solaris mindig az egyetlen hivatalosan támogatott vendég operációs rendszer volt a Sun/Oracle által fejlesztett Logical Domains hypervisoron, az utóbbi időben, 2006 óta, a Linux (Ubuntu és Gentoo), valamint a FreeBSD is portolva lett a hypervisorra (és mindegyik egyszerre futtatható ugyanabban a processzorban, mint teljesen virtualizált független vendég operációs rendszerek). A Wind River "Carrier Grade Linux" is fut Sun Hypervisor-on. Teljes virtualizáció az SPARC processzorokon könnyűnek bizonyult: az 1980-as évek közepétől kezdve a Sun szándékosan tisztán tartotta a SPARC architektúrát olyan elemektől, amelyek akadályozták volna a virtualizációt.
Az HPE nyújtja a HP Integrity Virtual Machines (Integrity VM) lehetőséget több operációs rendszer futtatására az Itanium processzorral működő Integrity rendszereiken. Az Itanium képes futtatni HP-UX, Linux, Windows és OpenVMS-t, és ezeket a környezeteket támogatják virtuális szerverként az HP Integrity VM platformon. A HP-UX operációs rendszer hostolja a Integrity VM hypervisor réteget, amely lehetővé teszi a HP-UX fontos funkcionalitásainak kihasználását és jelentős különbséget jelent ez a platform és más általános platformok között – például processzor cseréje futás közben, memória cseréje futás közben, és dinamikus kernel frissítések rendszer újraindítás nélkül. Bár erősen támaszkodik a HP-UX-re, a Integrity VM hypervisor valójában egy hibrid, ami a hardveren fut, míg a vendégek futnak. Normál HP-UX alkalmazások futtatása egy Integrity VM hoston nem ajánlott, mert a Integrity VM saját memóriakezelést, tervezést és I/O irányelveket használ, amelyek a virtuális gépek számára vannak optimalizálva, és nem olyan hatékonyak normál alkalmazások esetén. Az HPE továbbá szigorúbb felosztást biztosít az Integrity és HP9000 rendszereikhez VPAR és nPar technológia útján, előbbi megosztott erőforrásfelosztást nyújt, míg utóbbi teljes I/O és feldolgozási elszigetelést. A virtuális szerver környezet (VSE) rugalmasa miatt gyakrabban használják az újabb telepítéseknél.
IBM által biztosított a virtuálizációs partíció technológia, amelyet ismert logikai particionálás (LPAR) a System/390, zSeries, pSeries és IBM AS/400 rendszereken. Az IBM Power Systems esetében a POWER Hypervisor (PHYP) egy natív (bare-metal) hypervisor firmware-ben, amely izolációt biztosít az LPAR-ok (logikai partíciók) között. A processzor kapacitást vagy kifejezetten egy LPAR-ra biztosítják, vagy jogosultsági alapon, ahol a felhasználatlan kapacitás elérhetővé válik és újraosztható elfoglalt munkateherként. Az LPAR-ok csoportjai a processzor kapacitásukat úgy kezelhetik, mintha "medencében" lennének – az IBM ezt a képességet Többszörös osztott processzorterületek (Multiple Shared-Processor Pools, MSPP) néven nevezi, és az POWER6 processzorral rendelkező szerverekben valósítja meg. Az LPAR és MSPP kapacitásallokációkat dinamikusan lehet módosítani. A memóriát minden LPAR-hoz kiosztják (LPAR indításakor vagy dinamikusan), és a POWER Hypervisor címellenőrzést végez benne. A valós módú címzéshez az operációs rendszerek (AIX, Linux, IBM i) számára a Power processzorok (POWER4-től kezdődően) terveztek virtualizációs képességeket, ahol a hardver címeltolás az operációs rendszer címeltolásával összehasonlítva a fizikai memóriacímet hoz létre. A bemenet/kimeneti (I/O) adapterek az LPAR-ok kizárólagosan "tulajdonolhatják" vagy megoszthatják LPAR-ok az úgynevezett Virtuális I/O Szerver (VIOS) partíció által. A Power Hypervisor nagy szintű megbízhatóságot, rendelkezésre állást és szolgálhatóságot (RAS) biztosít azzal, hogy lehetővé teszi sok alkatrész probléma nélküli hozzáadását/cseréjét (modelltől függően: processzorok, memória, I/O adapterek, hűtőventilátorok, tápegységek, lemezek, rendszervezérlők, stb.)
Hasonló trendek tapasztalhatóak az x86/x86-64 szerverplatformokkal, ahol a nyílt forráskódú projektek, mint például a Xen, vezették a virtualizációs erőfeszítéseket. Ezek magukba foglalják a Linux és Solaris kernelen alapuló hypervisorokat, valamint egyedi kernelt. Mivel ezek a technológiák nagy rendszerektől a számítógépekig terjednek, ezeket a következő szakaszban részletezzük.
x86-os rendszerek
[szerkesztés]Az X86 virtualizációt a 90-es években vezették be, az emulációja pedig benne volt a Bochs-ban.[5] Az Intel és az AMD először 2005-ben jelentette be az első hardveres virtualizációval rendelkező x86-os processzorait, az Intel VT-x (kódnevén Vanderpool) és az AMD-V (kódnevén Pacifica) típusokat.
Egy alternatív megközelítés a vendég operációs rendszer módosítását igényli annak érdekében, hogy rendszerhívásokat intézzen a háttérben futó hypervisor felé, ahelyett, hogy végrehajtaná a hypervisor által szimulált gépi I/O utasításokat. Ezt paravirtualizációnak nevezik a Xen-ben, „hiperhívásnak” a Parallels Workstation-ben, és „DIAGNOSE kódnak” az IBM VM-ben. Néhány mikrokernel, mint például a Mach és az L4, elég rugalmas ahhoz, hogy lehetővé tegye a vendég operációs rendszerek paravirtualizációját.
Beágyazott rendszerek
[szerkesztés]Beágyazott hipervisorok, amelyek beágyazott rendszerekre és bizonyos valós idejű operációs rendszer (RTOS) környezetekre célzódnak, más követelmények szerint vannak tervezve, mint a számítógépek és vállalati rendszerek, ideértve a robusztusságot, biztonságot és valós idejű képességeket. A sok beágyazott rendszer korlátozott erőforrásai, különösen az akkumulátorral működő mobil rendszerek esetében, további követelményeket támasztanak a kis memória méret és alacsony overhead szempontjából. Végül, ellentétben a PC világban általános x86 architektúrával, a beágyazott világ szélesebb körű architektúrákat és kevésbé szabványos környezeteket használ.
A beágyazott rendszerek gyártói általában rendelkeznek az operációs rendszerük forráskódjával, ezért kevesebb szükségük van a teljes virtualizációra ezen a területen. Ehelyett a paravirtualizáció teljesítményelőnyeinek általában ezt választott virtualizációs technológiává teszi. Mindazonáltal az ARM és a MIPS a közelmúltban hozzáadta a teljes virtualizációs támogatást mint egy IP opciót, és beépítette azt legújabb, magas kategóriás processzoraikba és architektúra verzióikba, például az ARM Cortex-A15 MPCore és az ARMv8 EL2.
A szerver és beágyazott környezetek közötti virtualizáció egyéb különbségei közé tartozik az erőforrások hatékony megosztásának, nagy sávszélességű, alacsony latenciájú virtuális gépek közti kommunikációnak, a teljesítménytervezés és energiagazdálkodás globális nézetének és az információáramlás finom szabályozásának követelménye.[6]
Biztonsági megfontolások
[szerkesztés]Amennyiben vírus vagy rootkit kerül a hypervisor rétegébe, ezeket nehezebb detektálni, hozzáférést kap minden információhoz, amivel a vendég operációs rendszer rendelkezik, anélkül, hogy az azon futó vírusirtó megtalálná. Ebben az esetben ugyanis a vírus az operációs rendszer alatt fut.
Nagyon kevés konkrét példa ismert hypervisorok sebezhetőségéről. Egy ilyen az a hiba, amelyet a Microsoft Xbox hypervisora tartalmazott és amely lehetővé tette a hardver feletti ellenőrzés átvételét.
2009-ben a Microsoft és a North Carolina State University kutatói bemutattak egy hypervisor rétegű ellen-rootkitet Hooksafe néven, amely generikus védelmet nyújthat a kernel-módú rootkitek ellen.[7]
Jegyzetek
[szerkesztés]- ↑ több szerző: XEN a gyakorlatban (magyar nyelven). Kiskapu. (Hozzáférés: 2013) – Könyvismertető a Xen ingyenes, nyílt forrású virtualizációs szoftverről.
- ↑ Documentation for IBM RPQ E880801
- ↑ Goldberg, Robert P.: Architectural Principles for Virtual Computer Systems, 1973
- ↑ Goldberg, Robert P. (1973. February). „Architectural Principles for Virtual Computer Systems” (PDF), 22–26. o, Kiadó: Harvard University. [2011. június 5-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. április 12.)
- ↑ Introduction to Bochs. bochs.sourceforge.io. (Hozzáférés: 2023. április 17.)
- ↑ Gernot Heiser (2008. április 1.). „The role of virtualization in embedded systems”.: 11–16.
- ↑ Zhi Wang, Xuxian Jiang, Weidong Cui, Peng Ning. Countering kernel rootkits with lightweight hook protection, Proceedings of the 16th ACM conference on Computer and communications security, CCS '09. Chicago, Illinois, USA: ACM, 545–554. o.. DOI: 10.1145/1653662.1653728 (2009. augusztus 11.). ISBN 978-1-60558-894-0
Fordítás
[szerkesztés]- Ez a szócikk részben vagy egészben a Hypervisor című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
Források
[szerkesztés]- Goldberg, Robert P.: Architectural Principles for Virtual Computer Systems, 1973