I moln­tjäns­ter­nas tidsålder har hy­per­vi­so­rer som KVM och Xen blivit viktigare än någonsin. Men hur skiljer sig dessa två vir­tu­a­li­se­rings­tek­ni­ker åt? I vår jäm­fö­rel­se mellan Xen och KVM tittar vi på lik­he­ter­na och skill­na­der­na mellan de två.

Xen i korthet

Xen är en öppen käll­kods­pro­gram­va­ra för vir­tu­a­li­se­ring som gör det möjligt att samtidigt köra flera gästo­pe­ra­tiv­sy­stem på en enda värd­ma­skin. Xen hanterar till­del­ning­en av hård­varu­re­sur­ser­na på värd­ma­ski­nen.

Vilken typ av hy­per­vi­sor är Xen?

Xen är en typ 1-hy­per­vi­sor (eller bare metal-hy­per­vi­sor). Denna typ av hy­per­vi­sor in­stal­le­ras direkt på ett fysiskt system och kom­mu­ni­ce­rar med hårdvaran via egna driv­ru­ti­ner. Värd- och gästo­pe­ra­tiv­sy­stem in­stal­le­ras ovanpå Xen-hy­per­vi­sorn. För att skilja mellan olika pri­vi­le­gi­e­ni­vå­er ka­te­go­ri­se­rar Xen de ope­ra­tiv­sy­stem som är in­stal­le­ra­de i två olika domäner: dom0 och domU. Vär­do­pe­ra­tiv­sy­ste­met tillhör dom0-domänen och har den högsta pri­vi­le­gi­e­ni­vån, medan alla gästo­pe­ra­tiv­sy­stem klas­si­fi­ce­ras som icke-pri­vi­le­gi­e­ra­de system och tillhör domU-domänen.

Vär­do­pe­ra­tiv­sy­ste­met kom­mu­ni­ce­rar inte direkt med hårdvaran via dess driv­ru­ti­ner, utan via hy­per­vi­sorn med hjälp av ett spe­ci­a­li­se­rat Xen API. Denna djupa in­teg­ra­tion sä­ker­stäl­ler en mer effektiv an­vänd­ning av hårdvaran, mindre overhead och en minskad attackyta.

Hur Xen använder para­vir­tu­a­li­se­ring för att öka ef­fek­ti­vi­te­ten

Xen använder vir­tu­a­li­se­rings­tek­ni­ken para­vir­tu­a­li­se­ring för att öka ef­fek­ti­vi­te­ten. Med denna teknik emulerar hy­per­vi­sorn inte hård­va­ru­kom­po­nen­ter, och gäst­sy­ste­men är medvetna om att de körs i en vir­tu­a­li­se­rad miljö. Detta möjliggör mycket snabbare kom­mu­ni­ka­tion mellan gästo­pe­ra­tiv­sy­ste­men och Xen, vilket leder till ökad prestanda.

Denna metod är dock beroende av spe­ci­a­li­se­ra­de driv­ru­ti­ner och specifika inbyggda funk­tio­ner i ope­ra­tiv­sy­ste­mets kärna. Många vanliga ope­ra­tiv­system­kär­nor, såsom Linux och BSD, har kunnat stödja para­vir­tu­a­li­se­ring i flera år.

Om du använder ett ope­ra­tiv­sy­stem där para­vir­tu­a­li­se­ring inte är möjlig eller önskvärd, stöder Xen även full vir­tu­a­li­se­ring (där hård­va­ru­kom­po­nen­ter emuleras virtuellt). Även om detta saktar ner vir­tu­a­li­se­ring­en, ger det hög kom­pa­ti­bi­li­tet, vilket gör att ope­ra­tiv­sy­stem som inte stöder para­vir­tu­a­li­se­ring kan köras under Xen.

Vilka är KVM:s vik­ti­gas­te funk­tio­ner?

Precis som Xen är KVM (Kernel-based Virtual Machine) en öppen käll­kods­hy­per­vi­sor som låter användare köra flera gästo­pe­ra­tiv­sy­stem på en enda fysisk maskin. Även om båda hy­per­vi­so­rer­na har samma grund­läg­gan­de syfte skiljer sig deras ar­ki­tek­to­nis­ka ut­form­ning åt, vilket gör att varje hy­per­vi­sor passar för olika an­vänd­nings­om­rå­den.

Vilken typ av hy­per­vi­sor är KVM?

Tidigare kallades KVM ofta för en typ 2-hy­per­vi­sor, eftersom den endast kunde kom­mu­ni­ce­ra med hårdvaran via driv­ru­ti­ner­na i vär­do­pe­ra­tiv­sy­ste­met. KVM var tvungen att emulera alla hård­va­ru­kom­po­nen­ter för gäst­sy­ste­men, vilket gjorde para­vir­tu­a­li­se­ring omöjlig.

KVM har sedan dess utökats till att omfatta para­vir­tu­a­li­se­ring. Det fungerar dock på ett annat sätt än Xen. Till skillnad från Xen in­stal­le­ras KVM inte under vär­do­pe­ra­tiv­sy­ste­met utan in­te­gre­ras direkt i Linux-kärnan. KVM använder Linux-systemets mjuk­va­ru­kom­po­nen­ter för att hantera vir­tu­a­li­se­ra­de system och deras processer.

Under KVM har varje gästo­pe­ra­tiv­sy­stem sin egen vir­tu­a­li­se­ra­de upp­sätt­ning hårdvara, inklusive nät­verks­gräns­snitt, dis­klag­ring och andra typer av hård­va­ru­kom­po­nen­ter. För att påskynda full vir­tu­a­li­se­ring använder KVM hård­va­ru­as­si­ste­rad vir­tu­a­li­se­ring, som redan finns i de flesta moderna pro­ces­so­rer.

Inte alla kom­po­nen­ter genomgår full­stän­dig vir­tu­a­li­se­ring i KVM. För att förbättra pre­stan­dan hos körande system och ap­pli­ka­tio­ner till­han­da­hål­ler KVM para­vir­tu­a­li­se­ra­de gräns­snitt som kan kom­mu­ni­ce­ra direkt med hy­per­vi­sorn via Virtio API. KVM använder främst para­vir­tu­a­li­se­ring för in- och ut­mat­nings­en­he­ter som nät­verks­gräns­snitt. Det är därför man ofta beskriver KVM som en teknik som använder partiell para­vir­tu­a­li­se­ring.

KVM vs. Xen, jäm­fö­rel­se av deras prestanda

Den största skill­na­den mellan de två hy­per­vi­so­rer­na ligger i var de verkar inom mjuk­va­ru­stac­ken. KVM är in­te­gre­rat i Linux-kärnan och använder hård­va­ru­stödd vir­tu­a­li­se­ring för att vir­tu­a­li­se­ra ett stort antal hård­va­ru­kom­po­nen­ter utan att pre­stan­dan försämras nämnvärt. De primära IO-gräns­snit­ten är para­vir­tu­a­li­se­ra­de, vilket för de flesta ser­ve­rap­pli­ka­tio­ner för­mod­li­gen är den vik­ti­gas­te aspekten.

Xen, å andra sidan, in­stal­le­ras tra­di­tio­nellt under ope­ra­tiv­sy­ste­met som en typ 1-hy­per­vi­sor. Detta innebär att hy­per­vi­sorn själv hanterar för­del­ning­en av hård­varu­re­sur­ser. Te­o­re­tiskt sett gör detta att Xen kan erbjuda en mer effektiv och pre­stan­da­s­tark kom­mu­ni­ka­tion med hårdvaran. KVM:s Virtio-driv­ru­ti­ner och hård­va­ru­as­si­ste­rad vir­tu­a­li­se­ring gör dock att dess prestanda ligger i nivå med Xen.

CPU-pinning

Trots att de två hy­per­vi­so­rer­na uppvisar likheter i pre­stan­da­ni­vå­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 pro­ces­sor­kär­na) till en vir­tu­a­li­se­rad processor, vilket sä­ker­stäl­ler exklusiv an­vänd­ning för det virtuella systemet. Av de två hy­per­vi­so­rer­na är det endast KVM som erbjuder denna funktion, vilket är särskilt för­del­ak­tigt för CPU-intensiva ap­pli­ka­tio­ner.

Nät­verks­pre­stan­da

När det gäller nät­verks­pre­stan­da ligger Xen i täten. Även om båda hy­per­vi­so­rer­na till­han­da­hål­ler para­vir­tu­a­li­se­ra­de nät­verks­gräns­snitt har varje system som vir­tu­a­li­se­ras under KVM sin egen nät­verk­sen­het. Med Xen delar alla gäst­sy­stem ett enda virtuellt nät­verks­gräns­snitt, vilket leder till ökad ef­fek­ti­vi­tet.

Sam­man­fatt­ning

Vilken hy­per­vi­sor som är bäst beror på dina behov. Mark­nads­le­da­ren KVM är in­te­gre­rad i Linux-kärnan och erbjuder möjlighet till full­stän­dig vir­tu­a­li­se­ring. Dessa aspekter gör den i grunden enklare att använda.

Xens full­stän­di­ga para­vir­tu­a­li­se­rings­funk­tio­ner innebär dock att det te­o­re­tiskt sett kan ge bättre prestanda. De avgörande fak­to­rer­na som du bör ta hänsyn till när du väljer en hy­per­vi­sor är de ap­pli­ka­tio­ner du vill vir­tu­a­li­se­ra och din er­fa­ren­hets­ni­vå.

Gå till huvudmeny