Xen vs. KVM, jämförelse mellan hypervisorerna
I molntjänsternas tidsålder har hypervisorer som KVM och Xen blivit viktigare än någonsin. Men hur skiljer sig dessa två virtualiseringstekniker åt? I vår jämförelse mellan Xen och KVM tittar vi på likheterna och skillnaderna mellan de två.
Xen i korthet
Xen är en öppen källkodsprogramvara för virtualisering som gör det möjligt att samtidigt köra flera gästoperativsystem på en enda värdmaskin. Xen hanterar tilldelningen av hårdvaruresurserna på värdmaskinen.
Vilken typ av hypervisor är Xen?
Xen är en typ 1-hypervisor (eller bare metal-hypervisor). Denna typ av hypervisor installeras direkt på ett fysiskt system och kommunicerar med hårdvaran via egna drivrutiner. Värd- och gästoperativsystem installeras ovanpå Xen-hypervisorn. För att skilja mellan olika privilegienivåer kategoriserar Xen de operativsystem som är installerade i två olika domäner: dom0 och domU. Värdoperativsystemet tillhör dom0-domänen och har den högsta privilegienivån, medan alla gästoperativsystem klassificeras som icke-privilegierade system och tillhör domU-domänen.
Värdoperativsystemet kommunicerar inte direkt med hårdvaran via dess drivrutiner, utan via hypervisorn med hjälp av ett specialiserat Xen API. Denna djupa integration säkerställer en mer effektiv användning av hårdvaran, mindre overhead och en minskad attackyta.
Hur Xen använder paravirtualisering för att öka effektiviteten
Xen använder virtualiseringstekniken paravirtualisering för att öka effektiviteten. Med denna teknik emulerar hypervisorn inte hårdvarukomponenter, och gästsystemen är medvetna om att de körs i en virtualiserad miljö. Detta möjliggör mycket snabbare kommunikation mellan gästoperativsystemen och Xen, vilket leder till ökad prestanda.
Denna metod är dock beroende av specialiserade drivrutiner och specifika inbyggda funktioner i operativsystemets kärna. Många vanliga operativsystemkärnor, såsom Linux och BSD, har kunnat stödja paravirtualisering i flera år.
Om du använder ett operativsystem där paravirtualisering inte är möjlig eller önskvärd, stöder Xen även full virtualisering (där hårdvarukomponenter emuleras virtuellt). Även om detta saktar ner virtualiseringen, ger det hög kompatibilitet, vilket gör att operativsystem som inte stöder paravirtualisering kan köras under Xen.
Vilka är KVM:s viktigaste funktioner?
Precis som Xen är KVM (Kernel-based Virtual Machine) en öppen källkodshypervisor som låter användare köra flera gästoperativsystem på en enda fysisk maskin. Även om båda hypervisorerna har samma grundläggande syfte skiljer sig deras arkitektoniska utformning åt, vilket gör att varje hypervisor passar för olika användningsområden.
Vilken typ av hypervisor är KVM?
Tidigare kallades KVM ofta för en typ 2-hypervisor, eftersom den endast kunde kommunicera med hårdvaran via drivrutinerna i värdoperativsystemet. KVM var tvungen att emulera alla hårdvarukomponenter för gästsystemen, vilket gjorde paravirtualisering omöjlig.
KVM har sedan dess utökats till att omfatta paravirtualisering. Det fungerar dock på ett annat sätt än Xen. Till skillnad från Xen installeras KVM inte under värdoperativsystemet utan integreras direkt i Linux-kärnan. KVM använder Linux-systemets mjukvarukomponenter för att hantera virtualiserade system och deras processer.
Under KVM har varje gästoperativsystem sin egen virtualiserade uppsättning hårdvara, inklusive nätverksgränssnitt, disklagring och andra typer av hårdvarukomponenter. För att påskynda full virtualisering använder KVM hårdvaruassisterad virtualisering, som redan finns i de flesta moderna processorer.
Inte alla komponenter genomgår fullständig virtualisering i KVM. För att förbättra prestandan hos körande system och applikationer tillhandahåller KVM paravirtualiserade gränssnitt som kan kommunicera direkt med hypervisorn via Virtio API. KVM använder främst paravirtualisering för in- och utmatningsenheter som nätverksgränssnitt. Det är därför man ofta beskriver KVM som en teknik som använder partiell paravirtualisering.
KVM vs. Xen, jämförelse av deras prestanda
Den största skillnaden mellan de två hypervisorerna ligger i var de verkar inom mjukvarustacken. KVM är integrerat i Linux-kärnan och använder hårdvarustödd virtualisering för att virtualisera ett stort antal hårdvarukomponenter utan att prestandan försämras nämnvärt. De primära IO-gränssnitten är paravirtualiserade, vilket för de flesta serverapplikationer förmodligen är den viktigaste aspekten.
Xen, å andra sidan, installeras traditionellt under operativsystemet som en typ 1-hypervisor. Detta innebär att hypervisorn själv hanterar fördelningen av hårdvaruresurser. Teoretiskt sett gör detta att Xen kan erbjuda en mer effektiv och prestandastark kommunikation med hårdvaran. KVM:s Virtio-drivrutiner och hårdvaruassisterad virtualisering gör dock att dess prestanda ligger i nivå med Xen.
CPU-pinning
Trots att de två hypervisorerna uppvisar likheter i prestandanivåer, presterar de inte lika bra i alla scenarier. När det gäller CPU-pinning erbjuder KVM mer kraft till sina användare. Med CPU-pinning kan KVM tilldela en fysisk processor (eller en processorkärna) till en virtualiserad processor, vilket säkerställer exklusiv användning för det virtuella systemet. Av de två hypervisorerna är det endast KVM som erbjuder denna funktion, vilket är särskilt fördelaktigt för CPU-intensiva applikationer.
Nätverksprestanda
När det gäller nätverksprestanda ligger Xen i täten. Även om båda hypervisorerna tillhandahåller paravirtualiserade nätverksgränssnitt har varje system som virtualiseras under KVM sin egen nätverksenhet. Med Xen delar alla gästsystem ett enda virtuellt nätverksgränssnitt, vilket leder till ökad effektivitet.
Sammanfattning
Vilken hypervisor som är bäst beror på dina behov. Marknadsledaren KVM är integrerad i Linux-kärnan och erbjuder möjlighet till fullständig virtualisering. Dessa aspekter gör den i grunden enklare att använda.
Xens fullständiga paravirtualiseringsfunktioner innebär dock att det teoretiskt sett kan ge bättre prestanda. De avgörande faktorerna som du bör ta hänsyn till när du väljer en hypervisor är de applikationer du vill virtualisera och din erfarenhetsnivå.