Hårdvaruassisterad virtualisering
Inom datorer är hårdvaruassisterad virtualisering en plattformsvirtualiseringsmetod som möjliggör effektiv fullständig virtualisering med hjälp av hårdvarufunktioner, främst från värdprocessorerna . En fullständig virtualisering används för att emulera en komplett hårdvarumiljö, eller virtuell maskin , där ett omodifierat gästoperativsystem ( som använder samma instruktionsuppsättning som värddatorn) effektivt körs helt isolerat. Hårdvaruassisterad virtualisering lades till x86 -processorer ( Intel VT-x , AMD-V eller VIA VT ) 2005, 2006 respektive 2010.
Hårdvaruassisterad virtualisering är också känd som accelererad virtualisering ; Xen kallar det virtuell maskinvara ( HVM ), och Virtual Iron kallar det inbyggd virtualisering .
Historia
Hårdvaruassisterad virtualisering dök upp först på IBM System/370 1972, för användning med VM/370, det första operativsystemet för virtuella maskiner. Med den ökande efterfrågan på högupplöst datorgrafik (t.ex. CAD ), förlorade virtualisering av stordatorer en del uppmärksamhet i slutet av 1970-talet, när de kommande minidatorerna främjade resursallokering genom distribuerad datoranvändning , som omfattade kommersialisering av mikrodatorer .
IBM erbjuder hårdvaruvirtualisering för sin IBM Power Systems -hårdvara för AIX , Linux och IBM i , och för sitt IBM- Mainframes System z . IBM hänvisar till sin specifika form av hårdvaruvirtualisering som "logisk partition", eller mer vanligt som LPAR .
Ökningen av beräkningskapacitet per x86-server (och i synnerhet den avsevärda ökningen av moderna nätverks bandbredder) väckte på nytt intresset för datacenterbaserade datorer som är baserade på virtualiseringstekniker. Den primära drivkraften var potentialen för serverkonsolidering: virtualisering gjorde det möjligt för en enda server att kostnadseffektivt konsolidera datorkraften på flera underutnyttjade dedikerade servrar. Det mest synliga kännetecknet för en återgång till datorernas rötter är cloud computing , som är en synonym för datacenterbaserad datoranvändning (eller stordatorliknande datoranvändning) genom nätverk med hög bandbredd. Det är nära kopplat till virtualisering.
Den initiala implementeringen av x86-arkitekturen uppfyllde inte Popek och Goldbergs virtualiseringskrav för att uppnå "klassisk virtualisering":
- ekvivalens : ett program som körs under den virtuella maskinövervakaren (VMM) bör uppvisa ett beteende som är väsentligen identiskt med det som visas när det körs på en likvärdig maskin direkt
- resurskontroll (även kallad säkerhet ): VMM måste ha fullständig kontroll över de virtualiserade resurserna
- effektivitet : en statistiskt dominerande del av maskininstruktionerna måste utföras utan VMM-intervention
Detta gjorde det svårt att implementera en virtuell maskinövervakare för denna typ av processor. Specifika begränsningar inkluderade oförmågan att fånga vissa privilegierade instruktioner.
För att kompensera för dessa arkitektoniska begränsningar har designers åstadkommit virtualisering av x86-arkitekturen genom två metoder: full virtualisering eller paravirtualisering . Båda skapar illusionen av fysisk hårdvara för att uppnå målet att operativsystemet är oberoende av hårdvaran, men presenterar vissa kompromisser i prestanda och komplexitet.
- Full virtualisering implementerades i första generationens x86 VMM. Den förlitar sig på binär översättning för att fånga och virtualisera exekveringen av vissa känsliga, icke-virtualiserbara instruktioner. Med detta tillvägagångssätt upptäcks kritiska instruktioner (statiskt eller dynamiskt under körning) och ersätts med fällor i VMM:n som ska emuleras i programvaran. Binär översättning kan medföra stora prestandakostnader jämfört med en virtuell maskin som körs på inbyggda virtualiserade arkitekturer som IBM System/370. VirtualBox , VMware Workstation (endast för 32-bitars gäster) och Microsoft Virtual PC , är välkända kommersiella implementeringar av full virtualisering.
- Paravirtualisering är en teknik där hypervisorn tillhandahåller ett API och operativsystemet för den virtuella gästmaskinen anropar det API, vilket kräver OS-modifieringar.
Under 2005 och 2006 skapade Intel och AMD (som arbetar oberoende) nya processortillägg till x86-arkitekturen kallade Intel VT-x respektive AMD-V. På Itanium -arkitekturen är hårdvaruassisterad virtualisering känd som VT-i. Den första generationen x86-processorer som stöder dessa tillägg släpptes i slutet av 2005 i början av 2006:
- Den 13 november 2005 släppte Intel två modeller av Pentium 4 (modell 662 och 672) som de första Intel-processorerna som stöder VT-x.
- Den 23 maj 2006 släppte AMD Athlon 64 ("Orleans"), Athlon 64 X2 ("Windsor") och Athlon 64 FX ("Windsor") som de första AMD-processorerna att stödja denna teknik .
Välkända implementeringar av hårdvaruassisterad x86-virtualisering inkluderar VMware Workstation (endast för 64-bitars gäster), XenCenter, Xen 3.x (inklusive derivator som Virtual Iron), Linux KVM och Microsoft Hyper-V .
Fördelar
Hårdvaruassisterad virtualisering minskar underhållskostnaderna för paravirtualisering eftersom den minskar (helst eliminerar) de ändringar som behövs i gästoperativsystemet. Det är också betydligt lättare att få bättre prestanda. En praktisk fördel med hårdvaruassisterad virtualisering har nämnts av VMware-ingenjörer och Virtual Iron.
Nackdelar
Hårdvaruassisterad virtualisering kräver explicit stöd i värdprocessorn, vilket inte är tillgängligt på alla x86/x86_64-processorer.
En "ren" hårdvaruassisterad virtualiseringsmetod, med helt omodifierade gästoperativsystem, involverar många VM-fällor, och därmed höga CPU-overheads, vilket begränsar skalbarheten och effektiviteten av serverkonsolidering. Denna prestationsträff kan mildras genom användning av paravirtualiserade drivrutiner; kombinationen har kallats "hybridvirtualisering".
Under 2006 visade sig första generationens 32- och 64-bitars x86-hårdvarustöd sällan erbjuda prestandafördelar jämfört med mjukvaruvirtualisering.
Se även
- Intel VT-d
- Ytterligare förbättringar av hårdvaruassisterad virtualisering är möjliga med en IOMMU ; detta tillåter native-speed access till dedikerad hårdvara från ett gästoperativsystem, inklusive DMA- kompatibel hårdvara
- Second Level Address Translation (SLAT) , implementeringar inklusive Rapid Virtualization Indexing eller Extended Page Tables
- Andra virtualiseringstekniker inkluderar virtualisering på operativsystemnivå, som praktiseras av Parallels Virtuozzo Containers , och applikationsvirtualisering .
- Nanokärna
- Hårdvaruemulering
- Emulator
- JTAG
- Gränssnitt för bakgrundsfelsökningsläge
- In-circuit emulator
-
^
"Arkiverad kopia" . www.via.com.tw . Arkiverad från originalet den 22 januari 2013 . Hämtad 10 oktober 2022 .
{{ citera webben }}
: CS1 underhåll: arkiverad kopia som titel ( länk ) - ^ Adams, Keith. "En jämförelse av mjukvaru- och hårdvarutekniker för x86-virtualisering" ( PDF) . Hämtad 20 januari 2013 .
- ^ Chris Barclay, New approach to virtualizing x86s , Network World , 20 oktober 2006
- ^ Se "Grafik och I/O-virtualisering" .
- ^ Se "Hybridvirtualisering: Nästa generation av XenLinux" . Arkiverad 20 mars 2009 på Wayback Machine
- ^ Jun Nakajima och Asit K. Mallick, "Hybrid-Virtualization—Enhanced Virtualization for Linux" Arkiverad 2009-01-07 på Wayback Machine , i Proceedings of the Linux Symposium , Ottawa, juni 2007.
- ^ A Comparison of Software and Hardware Techniques for x86 Virtualization, Keith Adams och Ole Agesen, VMware, ASPLOS'06 21–25 oktober 2006, San Jose, Kalifornien, USA " Vi tycker överraskande att den första generationens hårdvarustöd sällan erbjuder prestandafördelar jämfört med existerande mjukvarutekniker. Vi tillskriver denna situation höga VMM/gästövergångskostnader och en stel programmeringsmodell som lämnar lite utrymme för mjukvaruflexibilitet när det gäller att hantera antingen frekvensen eller kostnaden för dessa övergångar.
Vidare läsning
- Fisher-Ogden, John. "Hårdvarustöd för effektiv virtualisering" (PDF) . UCSD . Hämtad 2010-08-05 .
- Smith, Jim; Nair, Ravi (2005). Virtuella maskiner . Morgan Kaufmann. 8.5 : Prestandaförbättring av virtuella systemmaskiner. ISBN 1-55860-910-5 .
- Osisek, DL; Jackson, KM; Gum, PH (1991). "ESA/390 tolknings-exekveringsarkitektur, grunden för VM/ESA" (PDF) . IBM Systems Journal . 30 (1): 34–51. doi : 10.1147/sj.301.0034 . S2CID 8971003 .
- Adams, Keith; Agesen, Ole (2006). En jämförelse av mjukvaru- och maskinvarutekniker för x86-virtualisering ( PDF) . Internationell konferens om arkitektoniskt stöd för programmeringsspråk och operativsystem, San Jose, CA, USA. ACM 1-59593-451-0/06/0010 . Hämtad 2006-12-22 .
- "Prestandeutvärdering av AMD RVI Hardware Assist" (PDF) . VMware .
- "Prestandautvärdering av Intel EPT Hardware Assist" (PDF) . VMware .