Virtualizare X86

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică virtualizarea x86 constă în crearea unei versiuni virtuale a unei resurse furnizate în mod fizic și care aparține unui sistem de arhitectură x86 . Orice resursă hardware sau software poate fi virtualizată: sisteme de operare , memorie , spațiu pe disc . Până în prezent, virtualizarea poate fi realizată la nivel de software și la nivel de hardware.

Printre utilizările virtualizării, cea mai utilizată este probabil virtualizarea sistemelor de operare. Prin software aveți nevoie de un sistem de operare (gazdă) care rulează software de virtualizare care creează diferitele mașini virtuale (invitați) la un nivel înalt care rulează ca și cum ar fi programe normale și care comunică cu hardware-ul doar indirect, prin intermediul software-ului de virtualizare care acționează la un nivel scăzut. Exemple de software de virtualizare sunt Bochs , QEMU .

Arhitectura x86 nu acceptă în mod nativ cerințele de virtualizare Popek și Goldberg [1] . Ca urmare, este foarte dificil să implementați o mașină virtuală generală pe un procesor x86. Recent au fost introduse extensii care au rezolvat această și alte dificultăți legate de virtualizare.

Virtualizare X86 prin software

La 8 februarie 1999, VMware a introdus primul produs de virtualizare x86 , „VMware Virtual Platform”, bazat pe cercetările anterioare ale fondatorilor săi de la Universitatea Stanford . VMware și software-ul similar trebuie să utilizeze tehnici sofisticate pentru a capta și virtualiza executarea anumitor instrucțiuni. Aceste tehnici oferă performanțe mai mici decât o mașină virtuală care rulează pe o arhitectură virtualizabilă nativ, cum ar fi IBM System / 370 sau Motorola MC68020. Kevin Lawton a lansat proiectul Plex86 (numit inițial „freemware”) pentru a crea virtualizare x86 „software gratuit” cu suport Linux doar ca sistem de operare „invitat”, dar înainte de aceasta Lawton a publicat articolul Rularea mai multor sisteme de operare concomitent pe un PC IA32 folosind tehnici de virtualizare , care oferă o analiză a aspectelor arhitecturii x86 care sunt cele mai complicate de virtualizare și câteva tehnici pentru a depăși aceste dificultăți. Microsoft oferă, de asemenea , software de virtualizare x86, Microsoft Virtual PC și Microsoft Virtual Server , bazat pe tehnologia dobândită de la Connectix. Cercetări recente au încercat să îmbunătățească performanța de virtualizare x86 prin utilizarea unei interfețe software pentru mașini virtuale care emulează hardware-ul de bază. Sistemele de operare rulează pe această interfață, care nu implementează seturi de instrucțiuni x86 greu de virtualizat. Această tehnică se numește paravirtualizare . Exemple de utilizare a acestei tehnologii sunt Denali , L4 și Xen .

Virtualizare X86 prin hardware

CPU

Intel și AMD au dezvoltat independent extensii de virtualizare a arhitecturii x86. Nu sunt complet compatibile între ele, dar acceptă aproximativ aceleași instrucțiuni. Ambele permit unei mașini virtuale să ruleze un sistem de operare invitat, fără a suporta pierderi mari de performanță cauzate de emularea software-ului.

Virtualizare AMD (AMD-V)

Extensia de virtualizare AMD pentru arhitectura x86 pe 64 de biți ( AMD64 ) se numește AMD Virtualization , cunoscută și sub abrevierea AMD-V sau sub numele de cod „Peaceful”. Procesoarele AMD care utilizează Socket AM2 , Socket S1 și Socket F acceptă virtualizarea AMD. În mai 2006, AMD a introdus pe piață versiuni ale procesoarelor Athlon 64 și Turion 64 , cu suport pentru această tehnologie. De asemenea, a fost anunțată versiunea procesorului Opteron cu suport pentru virtualizare disponibil pentru august 2006.

Intel VT (IVT)

Extensia de virtualizare dezvoltată de Intel pentru arhitecturile x86 pe 32 de biți ( IA-32 ) și 64 de biți ( EM64T ) se numește IVT (prescurtare pentru Intel Virtualization Technology ) și este uneori denumită în cod „ Vanderpool ”. IVT a fost lansat oficial la Intel Developer Forum primăvara anului 2005 și este disponibil pe toate procesoarele Pentium 4 6x2, Pentium D 9x0, Xeon 7xxx, Core Duo și Core 2 Duo , cu excepția T5200, T5500, T6400, E4300, E4400, E4500 și E4600 . În unele implementări, suportul Vanderpool poate fi dezactivat din BIOS sau EFI .

Din motive de completitudine, vă rugăm să rețineți că Intel a publicat și specificația echivalentă Vanderpool pentru arhitectura IA-64 ( Itanium ) denumită în cod „Silvervale”.

Intel VT-x

Fost denumit în cod „Vanderpool”, VT-x reprezintă tehnologia Intel pentru virtualizare pe platforma x86. La 13 noiembrie 2005, Intel a lansat două modele Pentium 4 (Modelul 662 și Modelul 672) ca primele procesoare Intel care acceptă VT-x. Semnalizatorul CPU pentru capacitatea VT-x este „vmx”; pe Linux , acest lucru poate fi controlat prin /proc/cpuinfo sau pe macOS prin sysctl machdep.cpu.features . [2]

„vmx” înseamnă Virtual Machine Extensions, care adaugă zece instrucțiuni noi: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXOFF și VMXON. [3] Aceste instrucțiuni vă permit să intrați și să ieșiți dintr-un mod de execuție virtual în care sistemul de operare invitat se percepe ca rulând cu privilegii maxime (inelul 0), dar sistemul de operare gazdă rămâne protejat.

Începând din 2015, aproape toate serverele noi, procesoarele Intel desktop și mobile acceptă VT-x, unele dintre procesoarele Intel Atom fiind principala excepție. [4] Cu unele plăci de bază , utilizatorii trebuie să activeze caracteristica Intel VT-x în configurarea BIOS înainte ca aplicațiile să o poată folosi. [5]

Intel a început să includă Extended Page Tables (EPT), [6] o tehnologie pentru virtualizarea tabelelor de pagini, [7] începând cu arhitectura Nehalem , [8] [9] lansată în 2008. În 2010, Westmere a adăugat suport pentru lansarea procesor logic direct în modul real - o caracteristică numită „invitat nelimitat”, care necesită funcționarea EPT. [10] [11]

De la microarhitectura lui Haswell (anunțată în 2013), Intel a început să includă umbrirea VMCS ca o tehnologie care accelerează virtualizarea mașinilor virtuale imbricate. [12] Structura de control al mașinii virtuale (VMCS) este o structură de date în memorie care există exact o dată pe mașină virtuală, în timp ce este gestionată de VMM. Cu fiecare schimbare a contextului de execuție între diferitele mașini virtuale, VMCS este restabilit pentru VM curentă, definind starea procesorului virtual al VM. [13] De îndată ce sunt utilizate mai multe VMM sau VMM imbricate, apare o problemă similară cu cea care a necesitat manipularea tabelului de umbrire, așa cum este descris mai sus . În aceste cazuri, VMCS trebuie umbrit de mai multe ori (în caz de imbricare) și parțial implementat în software în cazul în care nu există suport hardware de la procesor. Pentru a face gestionarea shadow VMCS mai eficientă, Intel a implementat suport hardware pentru umbrirea VMCS. [14]

Chipset

Pictogramă lupă mgx2.svg Același subiect în detaliu: virtualizarea I / O.

Virtualizarea memoriei și a I / O se face de către chipset . [15] De obicei, aceste caracteristici trebuie să fie activate de BIOS, care trebuie să le poată sprijini și să fie configurate pentru a le utiliza.

Virtualizare MMU I / O (AMD-Vi și Intel VT-d)

Pictogramă lupă mgx2.svg Același subiect în detaliu: Unitatea de gestionare a memoriei de intrare-ieșire § Virtualizare .

O unitate de gestionare a memoriei de intrare / ieșire (IOMMU) permite mașinilor virtuale invitate să utilizeze direct periferice , cum ar fi Ethernet, plăci grafice accelerate și controlere de hard disk, prin DMA și remaparea întreruperilor . Aceasta se numește uneori passthrough PCI . [16]

O IOMMU permite, de asemenea, sistemelor de operare să elimine tampoanele de respingere necesare pentru a putea comunica cu dispozitive ale căror spații de adrese de memorie sunt mai mici decât spațiul de adrese de memorie al sistemului de operare, utilizând traducerea adresei de memorie. În același timp, un IOMMU permite, de asemenea, sistemelor de operare și hipervizorilor să prevină buggy-urile sau hardware-ul rău intenționat să compromită securitatea memoriei .

Atât AMD, cât și Intel și-au lansat specificațiile IOMMU:

  • Tehnologia de virtualizare I / O a AMD, „AMD-Vi”, numită inițial „IOMMU” [17]
  • „Tehnologia de virtualizare directă pentru I / O” a Intel (VT-d), [18] inclusă în majoritatea (dar nu în toate) procesoare de ultimă generație Nehalem și procesoare Intel mai noi [19]

În plus față de suportul CPU, este chipset - ul plăcii de bază pe care firmware-ul de sistem ( BIOS sau UEFI ) trebuie să-l accepte pe deplin virtualizarea IOMMU I / O pentru ao utiliza. Numai dispozitivele PCI sau PCI Express care acceptă resetarea funcțională a nivelului (FLR) pot fi virtualizate în acest fel, deoarece este necesar să se reasigne diverse funcții ale dispozitivului între mașinile virtuale. [20] [21] Dacă un dispozitiv care urmează să fie alocat nu acceptă întreruperi semnalizate prin mesaje (MSI), nu trebuie să partajeze liniile de întrerupere cu alte dispozitive pentru ca alocarea să fie posibilă. [22] Toate dispozitivele PCI convenționale direcționate în spatele unui pod PCI / PCI-X -to-PCI Express pot fi alocate simultan unei mașini virtuale invitate; Dispozitivele PCI Express nu au o astfel de restricție.

Software care utilizează VT

  • Collax V-Cube Virtualization, clustering și platformă de înaltă disponibilitate bazată pe KVM cu gestionare simplificată prin interfață web.
  • Mașină virtuală KVM bazată pe nucleu pentru Linux
  • Parallels Workstation are un hipervizor cu suport Intel VT-x
  • TRANGO hipervizor încorporat în timp real
  • VirtualBox
  • VirtualBridges VERDE -
  • PC virtual , de la Microsoft
  • Virtual Server (de asemenea de la Microsoft ): O versiune viitoare (Virtual Server 2005 R2 SP1, care urmează să fie distribuită în Q1 2007 [23] [24] ) va sprijini extensiile Intel VT și AMD Pacifica.
  • VMware Workstation pe procesoare Intel, VMware Workstation 5.5 necesită Intel-VT pentru a rula sisteme de operare pe 64 de biți. [25] Pentru sistemele de oaspeți pe 32 de biți, utilizarea tehnologiei VT este posibilă, dar nu este activă în mod implicit, deoarece pentru afaceri normale este mai lentă. [26] [27]
  • Xen 3.0 folosește Intel VT pentru a rula sisteme de operare invitat nemodificate. Atât Intel, cât și AMD au ajutat la susținerea extensiilor lor de virtualizare în monitorul mașinii virtuale Xen, permițând rularea sistemelor de operare invitate nemodificate.

Notă

  1. ^ Cerințele Popek și Goldberg pentru virtualizare , pe pctuner.net . Adus la 29 decembrie 2009 (arhivat din original la 1 iunie 2009) .
  2. ^ (EN) Tao Wang, How to Start Intel hardware-assisted virtualization (hypervisor) on Linux to Speed-up Intel x86 Android Emulator on software.intel.com, Intel , 12 martie 2012. Accesat la 26 octombrie 2018.
  3. ^ (RO) Gabriel Torres, Tot ce trebuie să știți despre tehnologia de virtualizare Intel , în Secrete hardware, 9 iulie 2012, p. 2. Accesat la 26 octombrie 2018 .
  4. ^ (EN) Lista tehnologiilor de virtualizare Intel , pe ark.intel.com, Intel . Adus la 26 octombrie 2018 (arhivat din original la 27 octombrie 2010) .
  5. ^ (EN) Windows Virtual PC: Configurați BIOS-ul pe microsoft.com, Microsoft . Adus la 26 octombrie 2018 (arhivat din original la 6 septembrie 2010) .
  6. ^ (EN) Neiger Gil, A. Santoni, F. Leung, D. și R. Rodgers Uhlig, Intel Virtualization Technology: Hardware Support for Efficient Processor Virtualization , în Intel Technology Journal , vol. 10, nr. 3, Intel , pp. 167–178. Adus la 26 octombrie 2018 (arhivat din original la 25 septembrie 2012) .
  7. ^ (EN) Matthew Gillespie, Best Practices for Paravirtualization Enhancements from Intel® Virtualization Technology: EPT and VT-d , on software.intel.com, Intel , 1 iunie 2009. Accesat la 26 octombrie 2018.
  8. ^ (RO) Mai întâi Tick, Now the Tock: Next Generation Intel Microarchitecture (Nehalem) (PDF), pe intel.com, Intel . Adus la 6 noiembrie 2018 .
  9. ^ (RO) O platformă hardware superioară pentru virtualizarea serverului (PDF) pe download.intel.com, Intel . Adus la 6 noiembrie 2018 (Arhivat din original la 7 iunie 2011) .
  10. ^ (EN) Implementează suportul de emulare BIOS pentru BHyVe: A BSD Hypervisor (PDF) pe 2013.asiabsdcon.org. Adus la 6 noiembrie 2018 .
  11. ^ Intel® 64 și IA-32 Architectures Software Developer's Manual ( PDF ), la download.intel.com , Intel , martie 2013. Accesat la 6 noiembrie 2018 (arhivat din original la 18 aprilie 2013) .
  12. ^ (RO) Procesoare Intel Core ™ vPro ™ de generația a patra cu Intel VMCS Shadowing (PDF) pe intel.com, Intel . Adus la 8 noiembrie 2018 .
  13. ^ (RO) Narendar B. Sahgal și Dion Rodgers, Înțelegerea tehnologiei de virtualizare Intel® (VT) (PPT) pe download.microsoft.com, Intel . Adus la 8 noiembrie 2018 (Arhivat din original la 8 septembrie 2014) .
  14. ^ (EN) Stephen J. Bigelow, „Ce, unde și de ce” de umbrire VMCS , în Virtualizarea serverului de căutare, noiembrie 2013. Adus pe 8 noiembrie 2018.
  15. ^ (EN) Darren Abramson, Intel Virtualization Technology for Directed I / O , în Intel Technology Journal , vol. 10, nr. 03, 10 august 2006, DOI : 10.1535 / itj.1003.02 . Adus la 8 noiembrie 2018 (arhivat din original la 20 ianuarie 2007) .
  16. ^ (EN) M. Tim Jones, virtualizare Linux și trecere PCI , pe ibm.com, IBM , 13 octombrie 2009. Adus pe 8 noiembrie 2018.
  17. ^ (RO) AMD I / O Virtualization Technology (IOMMU) Specification License Agreement (PDF) on support.amd.com, AMD , februarie 2009. Accesat la 8 noiembrie 2018 (depus de „url original 24 ianuarie 2011) .
  18. ^ (EN) Tehnologie de virtualizare Intel pentru I / O direcționată: specificații , ale intel.com:80, Intel . Adus la 8 noiembrie 2018 (Arhivat din original la 23 iunie 2013) .
  19. ^ (EN) Tehnologia de virtualizare Intel pentru I / O direcționată (VT-d) Lista CPU acceptate pe ark.intel.com, Intel . Adus la 8 noiembrie 2018 (arhivat din original la 27 octombrie 2010) .
  20. ^ (EN) Function Level Reset (FLR) (PDF), pe pcisig.com, 27 iunie 2006. Accesat la 8 noiembrie 2018 (depus de „Adresa URL originală 21 octombrie 2006).
  21. ^ (RO) VT-d HowTo , Xen. Adus la 8 noiembrie 2018 .
  22. ^ (RO) Cum se atribuie dispozitive cu VT-d în KVM , KVM. Adus la 8 noiembrie 2018 .
  23. ^ Virtual Server 2005 R2 SP1 Beta 1 link de descărcare și detalii despre disponibilitate , la blogs.technet.com , technet.com, 28 aprilie 2006. Accesat la 29 septembrie 2006 (arhivat din original la 24 iunie 2008) .
  24. ^ Virtual Server 2005 R2 SP1 - listarea caracteristicilor beta 2 , pe microsoft.com , Microsoft.
  25. ^ Cerințe hardware pentru sistemele de operare pentru oaspeți pe 64 de biți , pe vmware.com , VMWare (arhivat din original la 14 iulie 2006) .
  26. ^ Keith Adams, Agesen, Ole, O comparație a tehnicilor software și hardware pentru virtualizarea x86 ( PDF ), vmware.com , VMWare , 2006.
  27. ^ Cum se verifică dacă utilizarea Vanderpool este activată? , pe vmware.com , VMware , martie 2006 (arhivat din original la 24 august 2006) . Articolul sugerează adăugarea monitor_control.vt32 = "TRUE" la fișierul * .vmx va permite utilizarea hardware-ului VT.

Elemente conexe

linkuri externe

Virtualizare hardware Intel VT
Virtualizarea hardware-ului Pacifica a AMD
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT