1 / 79

Les 9: Virtualisatie

Les 9: Virtualisatie. All problems in computer science can be solved by another level of indirection... — David Wheeler. … but that usually will create another problem. — David Wheeler. Overzicht. Definities

deiondre
Download Presentation

Les 9: Virtualisatie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Les 9: Virtualisatie All problems in computer science can be solvedby another level of indirection... — David Wheeler … but that usually will create another problem. — David Wheeler

  2. Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie • CVE • Geheugen • IO • Migratie

  3. Virtualisatietypes

  4. Klassiek serverpark Server Server Server Server App App App App App App Besturings-systeem Besturings-systeem Besturings-systeem Besturings-systeem

  5. Gevirtualisatie server Virtual Machine Monitor (VMM) / Hypervisor Krachtige server Sterke isolatie tussen domeinen… App App App App App App Operating System Operating System Operating System Operating System API: ~200 syscalls Abstracte HW Gedeelde HW API: ~30 hypercalls “abstractie, isolatie, delen”

  6. Virtuele Machines Virtuele Machine App OS Virtuele Machine Virtuele Machine Virtuele Machine App App App OS OS OS Virtual Machine Monitor Hardware • Management-VM • Dom 0 (Xen) • Parent partition (Hyper-V)

  7. Waarom virtualiseren? Reduceer Total Cost of Ownership(TCO) • Toename systeembelasting (gemiddelde systeembelasting per server is vaak minder dan 10% gemiddeld en minder dan 50% bij piekbelasting) • Hardwarebesparing (minder servers) (25% of the TCO) • Besparing op ruimte, stroom, koeling (50% van de operationele kost van een data center) Eenvoudiger beheer • Dynamische provisionering • Werklastbeheer/isolatie • Eenvoudige migratie • Herconfiguratie Betere beveiliging Compatibiliteit met legacysystemen Bescherming van IT investeringen Virtualisatie is een schaalbare multi-core werklast Virtualisatie wordt een platformelement (vergelijkbaar met BIOS)

  8. Definitie van virtuele machine • G. Popek and R. Goldberg, “Formal Requirements for Virtualizable Third Generation Architectures”, Comm. ACM 17 (7), 1974 • Een virtuele machine is een softwareabstractie van een fysieke machine, die voldoet aan drie voorwaarden • Equivalent: de uitvoeringsomgeving moet identiek zijn aan die van de fysieke machine (met uitzondering van timing, totaal #systeemmiddelen, etc.) • Veilig: VMM controleert alle systeemmiddelen en zorgt ervoor dat de diverse VM’s van elkaar geïsoleerd zijn • Efficiënt: de waarneembare vertraging moet minimaal zijn best9-8

  9. Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie • CVE • Geheugen • IO • Migratie

  10. Formele Vereisten voor klassieke virtualiseerbaarheid • Een machine M wordt gekarakteriseerd door drie klassen van instructies: • P(M) zijn de geprivilegieerde instructies • Een instructie is geprivilegieerd indien ze een trap genereert in gebruikersmode, maar niet in systeemmode • S(M) zijn de sensitieve instructies, bestaande uit • Controlesensitieve instructies die b.v. de processormode of the MMU-instellingen veranderen • Locatiesensitieve instructies waarvan het gedrag afhangt van de processormode of van de plaats in het geheugen • O(M) zijn de onschadelijkeinstructies (=niet-sensitieve instructies)

  11. Klassieke virtualiseerbaarheid M is klassiek virtualiseerbaar indien S(M)  P(M) dan kunnen we het besturingssysteem depriviligiëren, O(M) rechstreeks uitvoeren, S(M) traps laten genereren, en de VMM de systeemcode laten emuleren “Trap-and-Emulate” P(M) S(M)

  12. Trap-and-Emulate Klassiek OS Virtuele Machine App Virtuele Machine OS App CPL3 CPL3 gebruiker gebruiker kern kern OS VMM CPL0 CPL0 Hardware Hardware Gedeprivilegieerd OS

  13. Trap-and-Emulate Directe uitvoering (gebruiker) Faults, systeemoproepen, onderbrekingen IRET, sysret VMM Traces, faults, interrupts, I/O Geëmuleerde kerncode OS

  14. Type 1 & Type 2 Virtuele Machine Virtuele Machine App App OS Guest OS Virtuele Machine Virtuele Machine App App OS Guest OS VMM VMM Host OS Hardware Hardware Type 1 (“bare metal”) VMM Type 2 (“hosted”) VMM

  15. Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie • CVE • Geheugen • IO • Migratie

  16. x86 platform virtualisatie PCI IOV PCI bus Disk SVM Nested Paging IOMMU controller NPIV Virtual CPU PCI Network text Memory CPU Bridge/ text Controller text IOMMU NPIV CPU Video controller Graphics Virtualization

  17. Problemen Trap-and-Emulate • Duur (~3000 cycli per trap) • Er treden zeer veel traps op • B.v., paginafouten, I/O instructies, … • De oude x86 ondersteunt geen trap-and-emulate • Sleutelprobleem: 16 dual-purpose instructies • Klassiek voorbeeld: popf-instructie: gedrag afhankelijk van de mode • Gebruikersmode: verandert de ALU-vlaggen • Systeemmode: verandert ALU en systeemvlaggen • + Genereert geen trap in gebruikersmode • Privilegeniveau guest observeerbaar in x86 (via %cs)

  18. Virtualisatie CVE • In software • Simuleer de processor (traag) • Dynamisch binair herschrijven • Paravirtualisatie • In hardware • Trap-and-emulate

  19. Binair herschrijven • Om te virtualiseren moet de VMM de S(M) instructies kunnen detecteren en vervangen door de gepaste emulatieroutine. • Dit kan b.v. door x86 instructies te interpreteren en systeemtoestand van processor op de juiste manier aan te passen. Dit is echter zeer traag. • VMware oplossing: binair herschrijven = just-in-time compilatie van x86 naar x86 • O(M) wordt op zichzelf afgebeeld • S(M) wordt geëmuleerd • P(M) wordt gebruikt om de overgangen tussen gebruikersmode en systeemmode te detecteren • Hoeft enkel maar voor kerncode te gebeuren – applicaties blijven onveranderd in gebruikersmode draaien

  20. Voorbeeld binair herschrijven /* Setup cr0 */ movl $CR0_FLAGS,%eax movq %rax, %cr0 /* Setup a boot time stack */ movq init_rsp(%rip),%rsp /* zero EFLAGS */ pushq $0 popfq movl $CR0_FLAGS,%eax call emulate_mov_to_cr0 leaq init_rsp(%eax), %eax call emulate_stack_fixup call emulate_clear_flags

  21. VMware binaire herschrijver

  22. Paravirtualisatie = statisch binair herschrijven Virtuele Machine hypercalls App OS_virt gebruiker kern VMM Hardware

  23. Volledige virtualisatie vs paravirtualisatie Guest OS voor X GuestOS voor virt(X) VMM virt(X) = X VMM virt(X)  X Hardware X Hardware X b.v., xen b.v., vmware

  24. Hardwarevirtualisatie Sensitieve instructie Virtuele Machine App CPL3 gebruikersmode OS OS CPL0 guestmode vmrun vmexit VMM hostmode VMM Hardware Communicatie via VMCBdatastructuur Emulatie

  25. Hardwarevirtualisatie VMRUN Guest executes VMCB • De guest wordt opgeroepen door de VMM via vmrun • De guest voert uit totdat • Hij een hypercall uitgevoert • Hij een actie uitvoert die een exit veroorzaakt • Per guest worden de exitvoorwaarden bepaald in de VMCB (VM control block) • Welke excepties en onderbrekingen veroorzaken een exit • Welke instructies veroorzaken een exit vmrun vmexit

  26. World switch Guest OS 1 Guest OS 2 vmexit vmexit vmrun vmrun VMM “world switch” is heel duur Oplossingen: - Versnellen van world switch (cache, tlb, …) - Verminderen van de frequentie ervan

  27. Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie • CVE • Geheugen • IO • Migratie

  28. x86 platform virtualisatie PCI IOV PCI bus Disk SVM Nested Paging IOMMU controller NPIV Virtual CPU PCI Network text Memory CPU Bridge/ text Controller text IOMMU NPIV CPU Video controller Graphics Virtualization

  29. Geheugenvirtualisatie Adres: pseudo-fysiek machine logisch fysiek (pseudo-) 0 0 0 - Proces 1 2 1 7 5 5 2 9 VM1 3 0 Proces 2 6 14 4 7 1 4 3 3 - 8 0 0 2 Proces 1 2 10 7 8 5 2 VM2 - 12 0 6 Proces 2 16 4 13 1 19 3 3 3 20 8

  30. Virtualisatie geheugen • Software: schaduwpaginatabellen • Hardware: Second level address translation • Intel: Extended Page Tables • AMD: Nested Page Tables • Compressie van de geheugenvoetafdruk

  31. Schaduwpaginatabellen machine logisch (pseudo-)fysiek 0 0 0 - Proces 1 2 5 1 7 4 5 5 14 2 9 VM1 3 0 7 Proces 2 6 14 3 4 7 1 1 4 9 3 3 - 8 0 0 2 Proces 1 2 10 10 7 12 8 5 2 2 VM2 - 12 0 6 Proces 2 16 16 4 13 13 1 8 19 3 19 3 3 20 8 PTBR Paginatabel: schaduw

  32. Schaduwpaginatabellen guest read Logisch → Pseudo-fysiek Guest OS guest write reference & Updates dirty bits Logisch → Machine VMM Hardware PTBR

  33. #vmexit Schaduwpagina-tabellen In/out paginafouten hardwareonderbrekingen

  34. 64-bit adresvertaling

  35. AMD Nested page tables

  36. Volledige vertaling

  37. Virtualisatie geheugen • Software: schaduwpagina’s • Hardware: Second level address translation • Intel: Extended Page Tables • AMD: Nested Page Tables • Compressie van de geheugenvoetafdruk

  38. Geheugenvereisten • Hoeveel geheugen? • 2 VM’s per core • 8 cores per socket • 4 socket machine • 2 GB of memory per VM • 2 x 8 x 4 x 2 = 128 GiB per node! • Hoeveel identieke pagina’s? • Guest OS zit 64 keer in het machinegeheugen • Nogal wat pagina’s bevatten enkel nullen • Dezelfde applicaties lopen honderden keren

  39. Transparent Page Sharing

  40. Compactie • Bereken een secure hash (SHA1) voor elk machine-frame • indien SHA1(M1) == SHA1(M2): • Zoek alle pagina’s die afbeelden op M1 en M2 en beeldt ze af op M1 • Markeer alle pagina’s readonly • Geef M2 vrij • Compactie kan gebeuren door een systeemdraad in de VMM. • Afhankelijk van de werklast kan dit leiden tot een besparing tot 33% van het fysiek geheugen • Met copy-on-write kan de compactie ongedaan gemaakt worden.

  41. best9-41

  42. Memory Balloon Driver

  43. best9-43

  44. best9-44

  45. best9-45

  46. Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie • CVE • Geheugen • IO • Software • Hardware • Migratie

  47. x86 platform virtualisatie PCI IOV PCI bus Disk SVM Nested Paging IOMMU controller NPIV Virtual CPU PCI Network text Memory CPU Bridge/ text Controller text IOMMU NPIV CPU Video controller Graphics Virtualization

  48. Software-emulatie • Elke in/out-instructie veroorzaakt een vmexit die geëmuleerd moet worden. Een device driver bevat vaak een opeenstapeling van in/out instructies. Dit leidt tot een complexe, kwetsbare en trage virtualisatieoplossing. Binair herschrijven kan het aantal world switches doen dalen. • DMA maakt gebruik van fysieke adressen (maakt geen gebruik van de MMU). In een VM zijn de fysieke adressen pseudo-fysiek. Zelfs na vertaling is er een probleem omdat DMA naar alle fysieke adressen kan lezen/schrijven (ook van een andere VM) IO is het inefficiëntste onderdeel van virtualisatie

  49. Paravirtualisatie voor drivers • De oorspronkelijke device drivers kunnen vervangen worden door gespecialiseerde device drivers die horen bij de VMM en bestaan uit een aantal hypercalls • De echte toegang tot de fysieke hardware kan door de VMM zelf gebeuren, of gedelegeerd worden naar een speciale VM die alle IO voor zijn rekening neemt (management VM of een speciale driver-VM)

  50. IO-flessenhals MMU Peripheral RAM VM Guest 1 VM Guest 2 VM Guest 3 Peripheral Driver VM 0 Peripheral VMM I/O requests I/O requests control

More Related