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 best9-1 Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie – CVE – Geheugen – IO • Migratie best9-2 Virtualisatietypes JVM Procesvirtualisatie .NET … Virtualisatie Paravirtualisatie Systeemvirtualisatie Volledige virtualisatie best9-3 Klassiek serverpark App App App App App App Besturingssysteem Besturingssysteem Besturingssysteem Besturingssysteem Server Server Server Server best9-4 Gevirtualisatie server Sterke isolatie tussen domeinen… App App App App App App Operating Operating Operating Operating API: ~200 syscalls System System System System Abstracte HW Virtual Machine Monitor (VMM) / Hypervisor Krachtige server API: ~30 hypercalls Gedeelde HW “abstractie, isolatie, delen” best9-5 Virtuele Machines Virtuele Machine Virtuele Machine Virtuele Machine Virtuele Machine App App App App OS OS OS OS Virtual Machine Monitor Hardware Management-VM - Dom 0 (Xen) - Parent partition (Hyper-V) best9-6 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) best9-7 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 Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie – CVE – Geheugen – IO • Migratie best9-9 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 onschadelijke instructies (=niet-sensitieve instructies) best9-10 Klassieke virtualiseerbaarheid M is klassiek virtualiseerbaar indien S(M) P(M) P(M) S(M) dan kunnen we het besturingssysteem deprivilegiëren, O(M) rechtstreeks uitvoeren, S(M) traps laten genereren, en de VMM de systeemcode laten emuleren “Trap-and-Emulate” best9-11 Trap-and-Emulate Virtuele Machine App Virtuele Machine CPL3 CPL0 App OS Hardware Klassiek OS gebruiker kern CPL3 CPL0 OS gebruiker VMM kern Hardware Gedeprivilegieerd OS best9-12 Trap-and-Emulate Directe uitvoering (gebruiker) Faults, systeemoproepen, onderbrekingen IRET, sysret VMM Traces, faults, Geëmuleerde kerncode OS interrupts, I/O best9-13 Type 1 & Virtuele Machine Virtuele Machine Type 2 Virtuele Machine Virtuele Machine App App App App OS OS Guest OS Guest OS VMM Hardware VMM Host OS Hardware Type 1 (“bare metal”) VMM Type 2 (“hosted”) VMM best9-14 Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie – CVE – Geheugen – IO • Migratie best9-15 x86 platform virtualisatie PCI IOV PCI bus Nested Paging SVM Disk controller IOMMU NPIV Memory Virtual CPU text text CPU text PCI Bridge/ IOMMU Network Controller NPIV CPU Video controller Graphics Virtualization best9-16 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) best9-17 Virtualisatie CVE • In software – Simuleer de processor (traag) – Dynamisch binair herschrijven – Paravirtualisatie • In hardware – Trap-and-emulate best9-18 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 best9-19 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 best9-20 VMware binaire herschrijver best9-21 Paravirtualisatie = statisch binair herschrijven hypercalls Virtuele Machine App OS_virt gebruiker VMM kern Hardware best9-22 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., vmware b.v., xen best9-23 Hardwarevirtualisatie Sensitieve instructie Virtuele Machine OS vmrun CPL3 App CPL0 OS guestmode VMM hostmode vmexit gebruikersmode VMM Hardware Emulatie Communicatie via VMCB datastructuur best9-24 Hardwarevirtualisatie VMRUN vmrun vmexit 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 best9-25 World switch Guest OS 1 vmrun Guest OS 2 vmexit vmexit vmrun VMM “world switch” is heel duur Oplossingen: - Versnellen van world switch (cache, tlb, …) - Verminderen van de frequentie ervan best9-26 Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie – CVE – Geheugen – IO • Migratie best9-27 x86 platform virtualisatie PCI IOV PCI bus Nested Paging SVM Disk controller IOMMU NPIV Memory Virtual CPU text text CPU text PCI Bridge/ IOMMU Network Controller NPIV CPU Video controller Graphics Virtualization best9-28 Geheugenvirtualisatie logisch 0 VM1 Proces 1 2 0 Proces 2 3 (pseudo-)fysiek 2 7 5 0 6 4 1 3 8 0 VM2 Proces 1 2 0 Proces 2 3 2 7 5 0 6 4 1 3 8 machine 0 1 5 9 3 14 7 4 - 2 10 8 12 16 13 19 3 Adres: pseudo-fysiek 20 best9-29 Virtualisatie geheugen • Software: schaduwpaginatabellen • Hardware: Second level address translation – Intel: Extended Page Tables – AMD: Nested Page Tables • Compressie van de geheugenvoetafdruk best9-30 Schaduwpaginatabellen logisch 0 VM1 Proces 1 2 0 Proces 2 3 (pseudo-)fysiek 2 7 5 5 4 14 6 4 1 3 7 3 1 9 0 8 0 VM2 Proces 1 2 0 Proces 2 3 machine 2 7 5 10 12 2 6 4 1 3 16 13 8 19 0 8 PTBR 0 1 5 9 3 14 7 4 - 2 10 8 12 16 13 19 3 Paginatabel: schaduw 20 best5-31 Schaduwpaginatabellen guest read Logisch → Pseudo-fysiek guest write reference & dirty bits Guest OS Updates Logisch → Machine VMM PTBR Hardware best9-32 #vmexit Schaduwpaginatabellen In/out best9-33 Hiërarchische paginering logisch adres CVE offset o p1 p2 p3 p4 p5 p6 p7 p8 f f1 f2 f3 f4 f5 f6 f7 f8 TLB treffer f TLB directorytabel CR3 fysiek geheugen PM TLB misser o fysiek adres PM PM f SPARC: 8+6+6+12 IA32: 10+10+12 paginatabel frames best9-34 Hiërarchische paginering logisch adres CVE offset fysiek geheugen o f fysiek adres directorytabel gCR3 o PM f PM PM f paginatabel nCR3 frames best9-35 16 9 9 9 9 12 52 12 TLB p1 p2 p3 ... pn Geheugen CVE X86-64 vertaling f1 f2 f3 … pn CR3 PM PM PML4 (page map level 4) PM PM PM Paginapointers Paginadirectory directory Paginatabel best9-36 AMD Nested page tables best9-37 Volledige vertaling best9-38 Virtualisatie geheugen • Software: schaduwpagina’s • Hardware: Second level address translation – Intel: Extended Page Tables – AMD: Nested Page Tables • Compressie van de geheugenvoetafdruk best9-39 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 best9-40 Transparent Page Sharing best9-41 Compactie 1. Bereken een secure hash (SHA1) voor elk machine-frame 2. 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. best9-42 best9-43 best9-43 Memory Balloon Driver best9-44 best9-45 best9-45 best9-46 best9-46 best9-47 best9-47 Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie – CVE – Geheugen – IO • Software • Hardware • Migratie best9-48 x86 platform virtualisatie PCI IOV PCI bus Nested Paging SVM Disk controller IOMMU NPIV Memory Virtual CPU text text CPU text PCI Bridge/ IOMMU Network Controller NPIV CPU Video controller Graphics Virtualization best9-49 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 best9-50 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) best9-51 IO-flessenhals Peripheral VM Guest 1 VM Guest 2 MMU RAM VMM VM 0 I/O Driver VM Guest 3 Peripheral Peripheral requests control I/O requests best9-52 IOMMU Peripheral Proces Proces MMU RAM IOMMU Proces Peripheral OS Peripheral controle best9-53 DeviceID interrupt IOMMU address IOTLB best9-54 HW Device Virtualization VF4 PF: Physical Function VF3 VF: Virtual Function Device VF2 (virtualized) VF1 PF • • • • • Device implements many virtual functions Each function assigned a unique Bus-Device-Function tuple (BDF) Each function can be assigned to a separate guest VM Device tags DMA and interrupt transactions with BDF Each function can be isolated and access only the assigned guest VM best9-55 IOMMU interrupt remapping Randapparaten INIT NMI Fixed & Arbitrated Interrupts Lint1 Lint0 ExtInt (block/pass) SMI (block/pass/remap) IOMMU INIT NMI Lint1 Lint0 ExtInt Fixed and Arbitrated Processor(s) best9-56 IOMMU gecontroleerd door VMM Proces OS Proces Peripheral VM 1 VM Guest 2 MMU RAM VMM VM Guest 3 IOMMU VM Guest 1 Peripheral Peripheral control best9-57 Hardware IO : IOMMU IOMMU Mngt VM Guest 1 Guest 2 Guest 3 Mngt VM Guest 1 Guest 2 Guest 3 VMM VMM shared Direct device assignment best9-58 NIC VMware Example Guest OS(1) Guest OS(2) Guest OS(3) 3’ 3 Fixed Pass through I/O Guest OS Guest OS Guest OS Device Driver Device Driver Device Driver Virtualization 2’ Layer 2 Device VMM 1’ 1 Manager I/O MMU Packets for guest OS 2 and 3 NetQueue VF I/O Device VF VF PF PF = Physical Function, VF = Virtual Function best9-59 Overzicht • Definities • Klassieke virtualiseerbaarheid • Virtualisatie – CVE – Geheugen – IO • Software • Hardware • Migratie best9-60 Rationale voor VM migratie VM-migratie faciliteert: – Hoge beschikbaarheid B.v. Machineonderhoud – Belastingsspreiding best9-61 best9-62 best9-63 best9-63 Uitdagingen bij migratie • VM’s hebben een grote interne toestand • Sommige VM’s hebben soft real-time vereisten – b.v. webservers, databanken, gameservers Minimaliseer onbeschikbaarheid • Migratie vereist extra systeemmiddelen (geheugen, bandbreedte) Beperk de extra belasting veroorzaakt door de migratie best9-64 Migratie-algoritme Stage 0: pre-migratie Selecteer een bestemming: host B Stage 1: reservatie Initialiseer een VM op host B, deel de storage Stage 2: iteratieve pre-copy Kopieer gebruikte pagina’s in diverse iteraties A B Stage 3: stop-and-copy Stage 4: commit Stop de VM op host A Redirect netwerktraffiek Synchroniseer resttoestand Activeer host B VM state on host A released best9-65 Pre-Copy Migratie: Ronde 1 best9-66 Pre-Copy Migratie: Ronde 1 best9-67 Pre-Copy Migratie: Ronde 1 best9-68 Pre-Copy Migratie: Ronde 1 best9-69 Pre-Copy Migratie: Ronde 1 best9-70 Pre-Copy Migratie: Ronde 2 best9-71 Pre-Copy Migratie: Ronde 2 best9-72 Pre-Copy Migratie: Ronde 2 best9-73 Pre-Copy Migratie: Round 2 best9-74 Pre-Copy Migratie: Ronde 2 best9-75 Pre-Copy Migratie: checkpoint copy best9-76 Impact van migratie • Systeemmiddelen die ingezet worden voor migratie moeten beperkt blijven: – “Dirty logging” kost ongeveer 2-3% • B.v. eerste kopieeriteratie aan 100Mb/s, langzaam verhogend voor de volgende iteraties – Kortere kopieeroperaties – Ondertussen minder aangepaste pagina’s – Volgende iteratie wordt kleiner best9-77 best9-78 best9-78 best9-79 Webserver Migratie best9-80 best9-81