best9-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
best9-2
Overzicht
• Definities• Klassieke virtualiseerbaarheid• Virtualisatie
– CVE– Geheugen– IO
• Migratie
Virtualisatietypes
best9-3
Server Server Server Server
Klassiek serverpark
Besturings-systeem
Besturings-systeem
Besturings-systeem
Besturings-systeem
App App App App App App
best9-4
Virtual Machine Monitor (VMM) / Hypervisor
Krachtige server
Gevirtualisatie server
Operating
System
Operating
System
Operating
System
Operating
System
App App App App App App
Sterke isolatie tussen domeinen…Sterke isolatie tussen domeinen…
API: ~200 syscallsAPI: ~200 syscalls
API: ~30 hypercallsAPI: ~30 hypercalls
Abstracte HWAbstracte HW
Gedeelde HWGedeelde HW
“abstractie, isolatie, delen” best9-5
Virtuele Machines
Virtual Machine Monitor
Hardware
Virtuele Machine
OS
App
Virtuele Machine
OS
App
best9-6
Virtuele Machine
OS
App
Virtuele Machine
OS
App
Management-VM
-Dom 0 (Xen)
-Parent partition (Hyper-V)
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 beveiligingCompatibiliteit met legacysystemenBescherming van IT investeringenVirtualisatie is een schaalbare multi-core werklastVirtualisatie 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
best9-9
Overzicht
• Definities• Klassieke virtualiseerbaarheid• Virtualisatie
– CVE– Geheugen– IO
• Migratie
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
best9-11
M is klassiek virtualiseerbaar indien
S(M) P(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”
P(M)
S(M)
Trap-and-Emulate
Klassiek OS
Hardware
Virtuele Machine
OS
App gebruiker
kern
best9-12
CPL3
CPL0 VMM
Hardware
Virtuele Machine
OS
App
gebruiker
kern
Gedeprivilegieerd OS
CPL3
CPL0
Trap-and-Emulate
best9-13
Directe uitvoering (gebruiker)
Geëmuleerde kerncode OS
VMM
Faults, systeemoproepen,
onderbrekingenIRET, sysret
Traces, faults,
interrupts, I/O
Type 1 & Type 2
best9-14
VMM
Hardware
Virtuele Machine
OS
App
Virtuele Machine
OS
App
VMM
Hardware
Virtuele Machine
Guest OS
App
Virtuele Machine
Guest OS
App
Host OS
Type 1 (“bare metal”) VMM Type 2 (“hosted”) VMM
best9-15
Overzicht
• Definities• Klassieke virtualiseerbaarheid• Virtualisatie
– CVE– Geheugen– IO
• Migratie
x86 platform virtualisatie
NetworkController
Videocontroller
Diskcontroller
CPUtext
MemoryPCI
Bridge/IOMMU
texttext
Virtual CPU
CPU
PCIbus
NPIV
Nested Paging SVM
NPIV
IOMMU
PCI IOV
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
best9-22
VMM
Hardware
Virtuele Machine
OS_virt
App
gebruiker
kern
hypercalls
Volledige virtualisatie vs paravirtualisatie
Hardware X
VMM virt(X) = X
Guest OS voor X
Hardware X
VMM virt(X) X
GuestOS voor virt(X)
b.v., vmware b.v., xen
best9-23
Hardwarevirtualisatie
best9-24
VMM
Hardware
Virtuele Machine
OS
App gebruikersmode
guestmode
hostmode
CPL3
CPL0
vmrun vmexit
OS
VMM
Sensitieve instructie
Emulatie
Communicatie via VMCB
datastructuur
Guest executes
VMCB
Hardwarevirtualisatie
VMRUN
vmrunvmexit
• 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 Guest OS 2
VMM
vmrunvmexit
vmrun
vmexit
“world switch” is heel duur
Oplossingen:- Versnellen van world switch (cache, tlb, …)- Verminderen van de frequentie ervan
best9-26
best9-27
Overzicht
• Definities• Klassieke virtualiseerbaarheid• Virtualisatie
– CVE– Geheugen– IO
• Migratie
x86 platform virtualisatie
NetworkController
Videocontroller
Diskcontroller
CPUtext
MemoryPCI
Bridge/IOMMU
texttext
Virtual CPU
CPU
PCIbus
NPIV
Nested Paging SVM
NPIV
IOMMU
PCI IOV
Graphics
Virtualization
best9-28
Geheugenvirtualisatie
best9-29
0
8
0
0
2
3
Proces 1
Proces 2
2
7
5
6
4
1
3
VM
1
0
8
0
0
2
3
Proces 1
Proces 2
2
7
5
6
4
1
3
VM
2
logisch-
1
5
9
3
14
7
4
2
10
8
-
12
16
13
19
3
-
(pseudo-)machine
0
20
Adres: pseudo-fysiek
fysiek
Virtualisatie geheugen
• Software: schaduwpaginatabellen• Hardware: Second level address translation
– Intel: Extended Page Tables– AMD: Nested Page Tables
• Compressie van de geheugenvoetafdruk
best9-30
best5-31
Schaduwpaginatabellen0
8
0
0
2
3
Proces 1
Proces 2
2
7
5
6
4
1
3
0
8
0
0
2
3
Proces 1
Proces 2
2
7
5
6
4
1
3
-
1
5
9
3
14
7
4
2
10
8
-
12
16
13
19
3
-
VM
1V
M2
logisch (pseudo-)fysiekmachine
0
20
5
4
14
7
3
1
9
10
12
2
16
13
8
19
PTBR Paginatabel: schaduw
Schaduwpaginatabellen
PTBR
reference &dirty bits
Guest OS
VMM
Hardware
guest write
guest read Logisch → Pseudo-fysiek
Logisch → Machine
Updates
best9-32
#vmexit
Schaduwpagina-tabellen In/out
paginafouten
hardwareonderbrekingen
best9-33
Hiërarchische paginering
best9-34
CVE o
f o
f
offset
paginatabelframes
fysiek geheugen
logisch adres
fysiek adres
fp1 f1
p2 f2
p3 f3
p4 f4
p5 f5
p6 f6
p7 f7
p8 f8
TLB treffer
TLB misser
TLB
SPARC: 8+6+6+12
IA32: 10+10+12
directory-tabel
CR3 PMPM
PM
Hiërarchische paginering
best9-35
CVE of o
f
offset
paginatabel
frames
fysiek geheugen
logisch adres
fysiek adres fdirectory-tabel
gCR3 PMPM
PM
nCR3
X86-64 vertaling
best9-36
p1 f1
p2 f2
p3 f3
... …
pn pn
PaginatabelPaginadirectoryPaginapointersdirectory
PML4(page map level 4)
129 129 9 916 52
CV
E
Geheuge
nTLB
CR3 PM
PM PM PM PM
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
• 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.
1. Bereken een secure hash (SHA1) voor elk machine-frame2. 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
best9-42
best9-43
best9-43
Memory Balloon Driver
best9-44
best9-45
best9-45
best9-46
best9-46
best9-47
best9-47
best9-48
Overzicht
• Definities• Klassieke virtualiseerbaarheid• Virtualisatie
– CVE– Geheugen– IO
• Software• Hardware
• Migratie
x86 platform virtualisatie
NetworkController
Videocontroller
Diskcontroller
CPUtext
MemoryPCI
Bridge/IOMMU
texttext
Virtual CPU
CPU
PCIbus
NPIV
Nested Paging SVM
NPIV
IOMMU
PCI IOV
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
VM
MV
MM
VM
MV
MM
RAMRAMRAMRAM
PeripheralPeripheralPeripheralPeripheral
PeripheralPeripheralPeripheralPeripheral
PeripheralPeripheralPeripheralPeripheral
MMUMMUMMUMMUVM Guest 3VM Guest 3VM Guest 3VM Guest 3
VM Guest 2VM Guest 2VM Guest 2VM Guest 2
VM Guest 1VM Guest 1VM Guest 1VM Guest 1
Dri
ver
Dri
ver
VM
0V
M 0
Dri
ver
Dri
ver
VM
0V
M 0
I/O I/O
requestsrequests
I/O I/O
requestsrequests
controlcontrol
best9-52
IOMMU
ProcesProcesProcesProces
ProcesProcesProcesProces
OSOSOSOS
RAMRAMRAMRAM
PeripheralPeripheralPeripheralPeripheral
PeripheralPeripheralPeripheralPeripheral
PeripheralPeripheralPeripheralPeripheral
ProcesProcesProcesProces
MMUMMUMMUMMU
IOM
MU
IOM
MU
IOM
MU
IOM
MU
controlecontrole
best9-53
IOMMU
best9-54
IOTLB
DeviceIDDeviceID
interruptinterrupt addressaddress
HW Device Virtualization
• 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
DeviceDevice
(virtualized)(virtualized)
DeviceDevice
(virtualized)(virtualized)
VF4VF4VF4VF4
VF3VF3VF3VF3
VF2VF2VF2VF2
VF1VF1VF1VF1
PFPFPFPF
PF: Physical FunctionPF: Physical Function
VF: Virtual FunctionVF: Virtual Function
best9-55
IOMMU interrupt remapping
RandapparatenRandapparatenRandapparatenRandapparaten
Processor(s)Processor(s)Processor(s)Processor(s)
IOMMUIOMMUIOMMUIOMMU
NMINMI
NMINMI
(block/pass)(block/pass)
INITINIT
INITINIT
Lint0Lint0
Lint0Lint0
Lint1Lint1
Lint1Lint1
ExtIntExtInt
ExtIntExtInt
(block/pass/remap)(block/pass/remap)
Fixed and Fixed and ArbitratedArbitrated
Fixed & Arbitrated Interrupts
SMISMI
best9-56
IOMMU gecontroleerd door VMM
VM Guest 3VM Guest 3VM Guest 3VM Guest 3
VM Guest 2VM Guest 2VM Guest 2VM Guest 2
RAMRAMRAMRAM
PeripheralPeripheralPeripheralPeripheral
PeripheralPeripheralPeripheralPeripheral
PeripheralPeripheralPeripheralPeripheral
VM Guest 1VM Guest 1VM Guest 1VM Guest 1
OSOSProcesProces
ProcesProces VM 1VM 1VM 1VM 1
VM
MV
MM
VM
MV
MM
controlcontrolIO
MM
UIO
MM
UIO
MM
UIO
MM
U
MMUMMUMMUMMU
best9-57
Hardware IO : IOMMU
Guest 3
Guest 3
Guest 2
Guest 2
Guest 1
Guest 1
Mngt V
MM
ngt VM
VMMVMMG
uest 3G
uest 3
Guest 2
Guest 2
Guest 1
Guest 1
Mngt V
MM
ngt VM
sharedshared
IOMMUIOMMUIOMMUIOMMU VMMVMM
best9-58
Direct device assignment
NIC VMware ExampleGuest OS(1) Guest OS(2) Guest OS(3)
1
2
Virtualization
Layer
Packets for guest OS 2 and 3
3
1’
2’
3’
I/O MMU
Device
Manager
VF VF VF
PF
PF = Physical Function, VF = Virtual Function
I/O Device
Guest OS
Device Driver
Guest OS
Device Driver
Guest OS
Device Driver
VMM
Fixed Pass through I/O
NetQueue
best9-59
best9-60
Overzicht
• Definities• Klassieke virtualiseerbaarheid• Virtualisatie
– CVE– Geheugen– IO
• Software• Hardware
• Migratie
Rationale voor VM migratie
VM-migratie faciliteert:– Hoge beschikbaarheid
B.v. Machineonderhoud– BelastingsspreidingXen
Xen
best9-61
best9-62best9-62
best9-63best9-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
Stage 1: reservatie
Stage 2: iteratieve pre-copy
Stage 3: stop-and-copy
Stage 4: commit
Selecteer een bestemming: host B
Initialiseer een VM op host B, deel de storage
Kopieer gebruikte pagina’s in diverse iteraties A B
Stop de VM op host ARedirect netwerktraffiek
Synchroniseer resttoestand
Activeer host BVM 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-78best9-78
best9-79best9-79
Webserver Migratie
best9-80
best9-81
Top Related