best9 - UGent

advertisement
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
Download