Virtualiseringsgrunderna och en introduktion till KVM. Ubuntu rysk dokumentation kvm virtualiseringsserver


För mig personligen är det lättast att tänka på KVM (Kernel-baserad virtuell maskin) som en sådan abstraktionsnivå över Intel VT-x och AMD-V hårdvaruvirtualiseringsteknologier. Vi tar en maskin med en processor som stöder en av dessa teknologier, installerar Linux på denna maskin, installerar KVM i Linux, som ett resultat får vi möjlighet att skapa virtuella maskiner. Ungefär så fungerar molnhotelltjänster, till exempel Amazon Web Services. Tillsammans med KVM används ibland också Xen, men en diskussion om denna teknik ligger utanför ramen för detta inlägg. Till skillnad frånier, till exempel, samma Docker, låter KVM dig köra vilket operativsystem som helst som gästsystem, men det har också b. O Högre virtualiseringskostnader.

Notera: Stegen som beskrivs nedan testades av mig på Ubuntu Linux 14.04, men i teorin kommer de att vara till stor del giltiga för andra versioner av Ubuntu och andra Linux-distributioner. Allt ska fungera både på skrivbordet och på servern som nås via SSH.

Installerar KVM

Kontrollera om Intel VT-x eller AMD-V stöds av vår processor:

grep -E "(vmx | svm)" / proc / cpuinfo

Om något värms upp, stöds det, och du kan fortsätta.

Installera KVM:

sudo apt-get uppdatering
sudo apt-get installera qemu-kvm libvirt-bin virtinst bridge-utils

Vad är vanligt att lagra där:

  • / var / lib / libvirt / boot / - ISO-avbildningar för installation av gästsystem;
  • / var / lib / libvirt / images / - bilder av hårddiskar i gästsystem;
  • / var / log / libvirt / - alla loggar ska sökas här;
  • / etc / libvirt / - katalog med konfigurationsfiler;

Nu när KVM är installerat, låt oss skapa vår första virtuella maskin.

Skapande av den första virtuella maskinen

Jag valde FreeBSD som gästsystem. Ladda ner ISO-bilden av systemet:

cd / var / lib / libvirt / boot /
sudo wget http: // ftp.freebsd.org/ sökväg / till / some-freebsd-disk.iso

I de flesta fall hanteras virtuella maskiner med virsh-verktyget:

sudo virsh --hjälp

Innan vi startar den virtuella maskinen måste vi samla in lite ytterligare information.

Vi tittar på listan över tillgängliga nätverk:

sudo virsh nätlista

Visa information om ett specifikt nätverk (med namnet standard):

sudo virsh net-info standard

Låt oss se listan över tillgängliga optimeringar för gäst-OS:

sudo virt-install --os-variant lista

Så nu skapar vi en virtuell maskin med 1 CPU, 1 GB RAM och 32 GB diskutrymme, ansluten till standardnätverket:

sudo virt-installera \
--virt-typ = kvm \
--namn freebsd10 \
--ram 1024 \
--vcpus = 1 \
--os-variant = freebsd8 \
--hvm \
--cdrom = / var / lib / libvirt / boot / FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--nätverksnätverk = standard, modell = virtio \
--grafik vnc \
--disksökväg = / var / lib / libvirt / images / freebsd10.img, storlek = 32, bus = virtio

Du kan se:

VARNING Det går inte att ansluta till den grafiska konsolen: virt-viewer inte
installerat. Installera paketet "virt-viewer".

Domäninstallationen pågår fortfarande. Du kan återansluta till konsolen
för att slutföra installationsprocessen.

Detta är normalt och det borde det vara.

Sedan tittar vi på egenskaperna för den virtuella maskinen i XML-format:

sudo virsh dumpxml freebsd10

Här är den mest kompletta informationen. Inklusive till exempel MAC-adressen, som vi kommer att behöva ytterligare. Hittills hittar vi information om VNC. I mitt fall:

Med hjälp av din favoritklient (jag använder personligen Rammina) går vi till VNC och använder SSH port forwarding om det behövs. Vi kommer direkt in i FreeBSD-installationsprogrammet. Sedan är allt som vanligt - Nästa, Nästa, Nästa, vi får det installerade systemet.

Grundläggande kommandon

Låt oss nu ta en titt på de grundläggande kommandona för att arbeta med KVM.

Få en lista över alla virtuella maskiner:

sudo virsh lista --all

Få information om en specifik virtuell maskin:

sudo virsh dominfo freebsd10

Starta virtuell maskin:

sudo virsh starta freebsd10

Stoppa virtuell maskin:

sudo virsh avstängning freebsd10

Svårt att spika den virtuella maskinen (trots namnet, detta inte radera):

sudo virsh förstör freebsd10

Starta om den virtuella maskinen:

sudo virsh starta om freebsd10

Klona en virtuell maskin:

sudo virt-klon -o freebsd10 -n freebsd10-klon \
--file / var / lib / libvirt / images / freebsd10-clone.img

Aktivera/inaktivera autorun:

sudo virsh autostart freebsd10
sudo virsh autostart --inaktivera freebsd10

Starta virsh i dialogläge (alla kommandon är i dialogläge - som beskrivs ovan):

sudo virsh

Redigera egenskaper för virtuell maskin i XML, inklusive här kan du ändra gränsen för mängden minne, etc.

sudo virsh redigera freebsd10

Viktig! Tyvärr tas kommentarer från den redigerade XML-filen bort.

När den virtuella maskinen stoppas kan disken även ändras storlek:

sudo qemu-img ändra storlek / var / lib / libvirt / images / freebsd10.img -2G
sudo qemu-img info / var / lib / libvirt / images / freebsd10.img

Viktig! Ditt gästoperativsystem kommer troligen inte att gilla att disken plötsligt blir större eller mindre. I bästa fall kommer den att starta i nödläge med ett förslag om att partitionera om disken. Chansen är stor att du inte vill göra det här. Det kan vara mycket lättare att starta en ny virtuell maskin och migrera all data till den.

Att säkerhetskopiera och återställa är ganska enkelt. Det räcker att spara dumpxml-utgången någonstans, såväl som skivavbildningen, och sedan återställa dem. På Youtube hittade en video med en demonstration av denna process är allt väldigt enkelt.

Nätverksinställningar

En intressant fråga är hur man avgör vilken IP-adress den virtuella maskinen fick efter uppstart? KVM gör detta på ett knepigt sätt. Det slutade med att jag skrev ett manus som detta i Python:

#! / usr / bin / env python3

# virt-ip.py-skript
# (c) 2016 Aleksander Alekseev
# http:// webbplats /

import sys
import ang
importera os
import underprocess
från xml .etree import ElementTree

def eprint (str):
print (str, fil = sys .stderr)

if len (sys .argv)< 2 :
eprint ("ANVÄNDNING:" + sys .argv [0] + " " )
eprint ("Exempel:" + sys .argv [0] + "freebsd10")
sys .exit (1)

if os .geteuid ()! = 0:
eprint ("FEL: du ska vara root")
eprint ("Tips: kör` sudo "+ sys .argv [0] +" ... `");
sys .exit (1)

if subprocess .call ( "vilken arping 2> & 1> / dev / null", skal = Sant)! = 0:
eprint ("FEL: arping hittades inte")
eprint ( "Tips: kör` sudo apt-get install arping` ")
sys .exit (1)

Domän = sys .argv [1]

om inte re .match ("^ * $", domän):
eprint ( "FEL: ogiltiga tecken i domännamnet")
sys .exit (1)

Domout = subprocess .check_output ("virsh dumpxml" + domän + "|| true",
skal = sant)
domout = domout.decode ("utf-8") .strip ()

om domout == "":
# felmeddelande har redan skrivits ut av dumpxml
sys .exit (1)

Doc = ElementTree.fromstring (domout)

# 1.lista alla nätverksgränssnitt
# 2.kör `arping` på varje gränssnitt parallellt
# 3.grep svar
cmd = "(ifconfig | cut -d" "-f 1 | grep -E". "|" + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2> & 1 |" + \
"grep" bytes från ") || true"

för barn i doc.iter ():
if child.tag == "mac":
macaddr = child.attrib ["adress"]
macout = underprocess .check_output (cmd .format (macaddr),
skal = sant)
print (macout.decode ("utf-8"))

Skriptet fungerar med både standardnätverket och det överbryggade nätverket, vars konfiguration kommer att diskuteras vidare. I praktiken är det dock mycket bekvämare att konfigurera KVM så att den alltid tilldelar samma IP-adresser till gästsystem. För att göra detta, redigera nätverksinställningarna:

sudo virsh net-edit standard

... något som det här:

>



>

Efter att ha gjort dessa ändringar


>

... och ersätt det med något i stil med:




>

Vi startar om gästsystemet och kontrollerar att det fått en IP via DHCP från routern. Om du vill att gästen ska ha en statisk IP-adress konfigureras denna som vanligt inom gästen själv.

Virt-manager program

Du kanske också är intresserad av virt-manager-programmet:

sudo apt-get install virt-manager
sudo usermod -a -G libvirtd ANVÄNDARNAMN

Så här ser dess huvudfönster ut:

Som du kan se är virt-manager inte bara ett GUI för virtuella maskiner som körs lokalt. Med dess hjälp kan du hantera virtuella maskiner som körs på andra värdar, samt titta på vackra grafer i realtid. Jag tycker personligen att det är särskilt bekvämt i virt-manager att du inte behöver söka i konfigurationerna på vilken port VNC:n för ett visst gästsystem körs. Du hittar bara den virtuella maskinen i listan, dubbelklickar så får du tillgång till monitorn.

Det är också mycket bekvämt att använda virt-manager för att göra saker som annars skulle kräva mödosam redigering av XML-filer och i vissa fall ytterligare kommandon. Till exempel, byta namn på virtuella maskiner, konfigurera CPU-affinitet och liknande. Förresten, att använda CPU-affinitet minskar avsevärt effekten av bullriga grannar och effekten av virtuella maskiner på värdsystemet. Använd den alltid när det är möjligt.

Om du bestämmer dig för att använda KVM som ersättning för VirtualBox, kom ihåg att de inte kan dela hårdvaruvirtualisering sinsemellan. För att KVM ska fungera på ditt skrivbord måste du inte bara stoppa alla virtuella maskiner i VirtualBox och Vagrant, utan även starta om systemet. Jag tycker personligen att KVM är mycket bekvämare än VirtualBox, åtminstone eftersom det inte kräver att du kör kommandot sudo / sbin / rcvboxdrv installation efter varje kärnuppdatering fungerar den tillräckligt med Unity och låter dig i allmänhet dölja alla fönster.

KVMär en av de nya virtualiseringsteknologierna som gör det möjligt att installera flera virtuella dedikerade servrar på en fysisk dedikerad server. Den största fördelen med detta virtualiseringssystem är skapandet av VPS med olika typer av operativsystem, det vill säga du kan installera både linux vps och windows vps på en server utan problem. Dessutom har varje enskild VPS-server på KVM-plattformen sina egna oberoende resurser: sitt eget diskutrymme, sitt eget RAM, nätverksgränssnitt och så vidare.

Fördelar med KVM-virtualisering:

  • Möjligheten att installera olika operativsystem: centos, debian, ubuntu, mint, freebsd, windows 7, windows 8, windows 10, windows xp och så vidare.
  • Garanterade resurser på servern, det vill säga om du beställt en VPS-server med vissa resurser, var då lugn, ingen tar resurser ifrån dig. Med denna virtualisering kan resurserna för den angränsande VPS:en inte användas. Det finns en sak som översäljer, det här är när ett webbhotell säljer mer resurser än vad som faktiskt finns på servern. I KVM kan detta inte vara så, alla resurser är tydligt registrerade i konfigurationsfiler och allt riktas på en gång till en virtuell dedikerad server.
  • Det är möjligt att installera hela ditt operativsystem på VPS-servern, till exempel är du OS-utvecklare, och du har ett eget skrivet operativsystem, du kan installera det på en av VPS:erna på en server med KVM, för detta kommer att behöva ladda upp en fil med en OS ISO-bild till server med en dedikerad mapp.
  • Bekvämt arbete med VNC, vilket gör det möjligt att fjärrstyra din vps-server som om du arbetade på din personliga dator, med VNC kan du konfigurera bios, starta om vps och observera det. Om du har installerat en Windows-server på vp-servern och vill gå till den för att arbeta i grafiskt läge, kan du göra det på två sätt: via VNC, eller omedelbart gå till VPS med ett förkonfigurerat fjärrskrivbord.

Nackdelarna med KVM-virtualisering är bland annat att den är svårare att använda och konfigurera än t.ex. openVZ virtualisering... Vilket alternativ? Om du planerar att använda en VPS-server med Linux-operativsystem rekommenderar vi att du väljer openVZ. Om du ska använda Windows på din virtuella dedikerade server är det bättre att använda KVM-virtualisering.

Vänligen aktivera JavaScript för att se kommentarerna som drivs av Disqus.
Senaste inlägg
  • Användningen av de senaste passagerar- och lasthissarna gör att vi kan erbjuda optimala omständigheter ...

  • För att din webbplats ständigt ska öppnas med det ofarliga https: //-protokollet, har vi ...

  • I nya versioner av webbläsaren Chrome slutade rullningen med hjulet att fungera ...

  • Internethandeln i Ukraina ökar mer och mer för varje år ...

  • HTP är en sådan IT-riktning i Vitryssland, som skapades ...

  • I Ukraina, nämligen i Dnepropetrovsk, uppfann och testade de den första ...

  • Nu är det svårt att föreställa sig en värld utan IT, eftersom ...

  • Vi uppmärksammar dig på en ny tjänst på webbplatsen abcname.com.ua. Förutom,…

  • Idag kommer vi att berätta om funktionerna för att välja en VPS-server. Först…

  • Idag har vi bråttom att glädja alla med en ny möjlighet till vår unika, och ...

  • 1) Domännamnskontroll Kontrollera om strängen är rätt domän ...

  • Du kan kontrollera IP-adressen på denna sida: http://abcname.com.ua/index.php?c=192 IP-adress (om bokstavligen, då ...

  • ABCname company presenterar SYNONYMIZER-programmet för din uppmärksamhet. Länk till synonymizern: https://abcname.net/news-new/sinonimizator-ru.html ...

  • Du kan ladda ner besöksräknaren som utvecklats av ABCname genom att följa denna länk: http://abcname.com.ua/stat/...

  • I den senaste uppdateringen av operativsystemet iOS 9.0.2 har utvecklarna stängt mycket ...

  • Senaste Skype-nyheter: för användare av detta program på Windows ...

  • Google återigen nöjd med sin uppfinning, häromdagen i staden ...

  • Nyligen blev det känt att Samsung lanserar en ny betalning ...

  • De nya ThinkPad-datorerna från Lenovo, som är förinstallerade med ...

  • Pebble utvecklade nyligen en ny serie smartklockor för ...

  • Innan vi börjar vår recension är det värt att förstå vad en hypervisor är och vilka funktioner den utför. Det är mycket bekvämt att använda när du utför en mängd olika uppgifter. Detta beror på att de gör det möjligt att hosta flera operativsystem på en fysisk server, som var och en är utrustad med sin egen mjukvara för att lösa olika problem. Hypervisorer används för att ge enkel interaktion med dessa virtuella maskiner. De är programvara som låter dig hantera virtuella maskiner: installera, aktivera och inaktivera dem. En av de mest populära hypervisorerna idag är KVM.

    KVM hypervisor

    Det möjliggör virtualisering på Linux-servrar. Ett klart plus är att denna hypervisor är en del av Linux-kärnan, så den förbättras och uppdateras ständigt. Den kan endast användas vid hårdvaruvirtualisering - med Intel- eller Amd-processorer. KVM-processormodulen ger den möjlighet att komma åt kärnan direkt. Detta låter dig hantera virtuella maskinfiler och diskbilder direkt. Varje virtuell dator har sitt eget utrymme.

    Xen hypervisor

    Detta projekt utvecklades först av Cambridge-studenter och blev snabbt kommersiellt på grund av sitt löfte. Xens plattformsoberoende och breda funktionalitet gör dess kapacitet tillräckligt omfattande för användning på kontoren hos stora företag och företag. Dess kärna har ett paravirtualiseringsläge, det vill säga den kan konfigureras för att samtidigt interagera med hypervisorn.

    Koden för denna hypervisor är inte överbelastad med onödiga funktioner. Den är utrustad med RAM-hantering, processorfrekvens, DMA och timer. Alla andra funktioner utförs av de virtuella datorer som är anslutna till arbetet för tillfället. De listade fördelarna gör det enkelt och bekvämt att arbeta med Xen även för en person vars kunskap inte är särskilt djup på detta område.

    Studie

    För att jämföra två hypervisorer måste du testa dem. För detta togs två servrar med helt identisk hårdvara och mjukvara, med undantag förstås de aktuella hypervisorerna. Alla inställningar för de skapade virtuella maskinerna ställdes som standard i enlighet med grundinställningarna för båda hypervisorerna. Varje variant tilldelades samma mängd minne.

    Låt oss förtydliga att åsikterna om att det valda distributionspaketet för OS - Fedora 20 från Red Hat - är bättre lämpat för KVM inte är helt korrekta. Vi tar inte hänsyn till virtuella datorers kamp om processorresurser under samtidig drift, eftersom hypervisorer kan visa olika prestanda med olika grader av konkurrens. Därför överväger vi villkoren för tävlingsmässan för båda sidor.

    resultat

    Testningen baserades på att mäta testresultaten för virtuella datorer som endast finns på en hårdvara, exklusive mjukvara. Avvikelsen i prestanda för de två servrarna utan virtualisering var mindre än en halv procent.

    Den första kandidaten - KVM visade prestanda i genomsnitt en och en halv procent lägre än hårdvarans prestanda. I 7-ZIP-testet visade sig denna hypervisor vara nästan 3 procent långsammare, och i PostMark-testet var den mer än 4 procent snabbare än hårdvaran. Xen presterade sämre, den överträffade inte sin konkurrent i något av testerna, släpade efter hårdvara med 2,5 procent i tre tester, och i resten presterade den ännu sämre. Den starkaste avvikelsen avslöjades, som i KVM - i PostMark-testet, men Xen körde inte ifrån hårdvaran, som sin konkurrent, utan släpade efter med nästan 15 procent. De upprepade testresultaten avvek från de tidigare med högst 2 procent. För mer information om testresultaten, se tabellen:

    Resultat

    KVM har alltid visat sig vara cirka 2 procent långsammare än hårdvara, men inte mer. Xen, å andra sidan, låg 2,5-7 procent bakom hårdvaran i de flesta av testerna. Bra KVM-resultat i PostMark-riktmärket kanske inte är helt korrekta på grund av otillräckligt antal utförda tester. För att fatta rätt beslut när du väljer ett hypervisortest, studera typen av belastningar på din webbplats. Utför fler tester efter behov för att få mer exakta resultat.

    I den här inledande artikeln kommer jag kort att beskriva alla mjukvaruverktyg som används vid utvecklingen av tjänsten. Mer information om dem kommer att diskuteras i följande artiklar.

    Varför ? Det här operativsystemet är nära och förståeligt för mig, så när jag väljer ett distributionspaket har jag inte upplevt plåga, plåga och kast. Det har inga speciella fördelar jämfört med Red Hat Enterprise Linux, men det beslutades att arbeta med ett bekant system.

    Om du planerar att självständigt distribuera infrastrukturen med hjälp av liknande teknik, skulle jag råda dig att ta RHEL: tack vare bra dokumentation och välskrivna applikationsprogram kommer detta att vara, om inte en storleksordning, så säkert dubbelt så enkelt, och tack till ett utvecklat certifieringssystem kan du enkelt hitta ett antal specialister som är bekanta med detta operativsystem på rätt nivå.

    Vi, återigen, beslutade att använda Debian Squeeze med en uppsättning paket från Sid / Experimentell och några paket backporterade och byggda med våra patchar.
    Det finns planer på att publicera ett arkiv med paket.

    När man valde en virtualiseringsteknik övervägdes två alternativ - Xen och KVM.

    Faktumet av närvaron av ett stort antal utvecklare, värdar, kommersiella lösningar baserade på Xen togs också i beaktande - desto mer intressant var det att implementera en lösning baserad på KVM.

    Den främsta anledningen till att vi valde att använda KVM är behovet av att köra virtuella maskiner med FreeBSD och, i framtiden, MS Windows.

    För att hantera virtuella maskiner visade det sig vara extremt bekvämt att använda produkter som använder dess API: virsh, virt-manager, virt-installera NS.

    Detta är ett system som lagrar inställningarna för virtuella maskiner, hanterar dem, för statistik över dem, ser till att gränssnittet för den virtuella maskinen stiger vid start, ansluter enheter till maskinen - i allmänhet gör den mycket användbart arbete och lite mer.

    Naturligtvis är lösningen inte perfekt. Nackdelarna inkluderar:

    • Helt galna felmeddelanden.
    • Oförmågan att ändra en del av den virtuella maskinens konfiguration i farten, även om QMP (QEMU Monitor Protocol) gör det ganska bra.
    • Ibland är det omöjligt att ansluta till libvirtd av någon okänd anledning - den slutar svara på externa händelser.

    Huvudproblemet i implementeringen av tjänsten i början var begränsningen av resurser för virtuella maskiner. I Xen löstes detta problem genom att använda en intern schemaläggare som fördelar resurser mellan virtuella maskiner - och, bäst av allt, möjligheten att begränsa diskoperationer implementerades också.

    Det fanns inget liknande i KVM innan tillkomsten av kärnresursallokeringsmekanismen. Som vanligt i Linux nåddes dessa funktioner via ett dedikerat filsystem. c-grupp, där du, med hjälp av de vanliga skriv()-systemanropen, kan lägga till en process till en grupp, tilldela den dess vikt i papegojor, specificera kärnan som den ska köras på, specificera diskbandbredden som denna process kan använda, eller, återigen, ge honom vikt.

    Vinsten är att allt detta är implementerat inuti kärnan, och du kan använda det inte bara för servern utan även för skrivbordet (som användes i den berömda "The ~ 200 Line Linux Kernel Patch That Does Wonders"). Och enligt min åsikt är detta en av de mest betydande förändringarna i 2.6-grenen, förutom den älskade # 12309, och inte nästa filsystem som arkiveras. Jo, kanske, förutom POHMELFS (men enbart på grund av namnet).

    Min inställning till detta verktygsbibliotek är mycket tvetydig.

    Å ena sidan ser det ut så här:

    Och den här saken är också jävligt svår att sätta ihop från källan, och ännu mer i ett paket: ibland verkar det som att det är lite lättare att bygga Linux från grunden från grunden.

    Å andra sidan är det en mycket kraftfull sak som låter dig skapa bilder för virtuella maskiner, modifiera dem, komprimera dem, installera grub, modifiera partitionstabellen, hantera konfigurationsfiler, överföra hårdvarumaskiner till en virtuell miljö, överföra virtuella maskiner från en bild till en annan, överför virtuella maskiner från bilden till hårdvaran och ärligt talat sviker min fantasi mig lite. Åh, ja: du kan också köra en demon inuti en virtuell Linux-maskin och få tillgång till virtuell maskindata live, och göra allt detta i shell, python, perl, java, ocaml. Det här är en kort och långt ifrån komplett lista över vad du kan göra med.

    Intressant nog genereras det mesta av koden vid monteringstillfället, såväl som dokumentationen för projektet. Ocaml, perl används mycket. Själva koden skrivs i C, som sedan lindas in i OCaml, och de repetitiva kodbitarna genereras av dem själva. Att arbeta med bilder utförs genom att starta en speciell tjänstebild (supermin-apparat), till vilken kommandon skickas inuti den via en kanal. I den här bilden finns en uppsättning räddningsverktyg som parted, mkfs och andra användbara sysadmins.

    Nyligen började jag till och med använda det hemma när jag plockade ut data jag behövde från nandroid-bilden. Men det kräver en kärna med yaffs-stöd.

    Övrig

    Nedan finns några fler intressanta länkar till beskrivningen av de mjukvaruverktyg som används - läs och studera på egen hand, om du är intresserad. Till exempel,

    På Cloud4Y ser vi VmWare som den ledande virtualiseringslösningen. Men vi är också intresserade av andra lösningar, inklusive Xen och KVM. Och här är vad vi märkte: det finns inte mycket information som gör att vi kan jämföra dessa hypervisorer: den senaste bra forskning som vi hittade på nätverket går tillbaka till 2012 och kan naturligtvis inte längre anses vara relevant. Idag kommer vi inte heller att presentera den senaste, men enligt vår mening, ganska användbar forskning som ägnas åt prestanda hos KVM- och Xen-hypervisorerna.

    KVM hypervisor

    Ja, virtualiseringsguruer kommer att förlåta oss, men först kommer vi att påminna läsarna om vad en hypervisor är och vad den är till för. För att utföra uppgifter som skiljer sig åt i sin innebörd (programvaruutveckling, hosting, etc.), är det enklaste sättet att använda virtuella maskiner: de låter dig ha flera olika operativsystem med en lämplig mjukvarumiljö. För att underlätta arbetet med virtuella maskiner används hypervisorer - mjukvaruverktyg som gör att du snabbt kan distribuera, stoppa och starta en virtuell dator. KVM är en av de mest använda hypervisorerna.


    KVM är programvara som låter dig organisera virtualisering baserad på datorer som kör Linux och liknande operativsystem. Nyligen har KVM ansetts vara en del av Linux-kärnan och utvecklas parallellt med den. Denna hypervisor kan endast användas på system där virtualisering stöds av hårdvara - med Intel- och AMD-processorer.


    Under drift får KVM tillgång till kärnan direkt via en processorspecifik modul (kvm-intel eller kvm-amd). Dessutom innehåller komplexet huvudkärnan - kvm.ko och UI-element, inklusive den utbredda QEMU. KVM låter dig arbeta direkt med VM-filer och diskbilder. Varje virtuell maskin är försedd med sitt eget isolerade utrymme.

    Xen hypervisor

    Till en början lanserades ett projekt av Cambridge-studenter som så småningom blev en kommersiell version av Xen. Den första utgåvan går tillbaka till 2003, och 2007 köptes källkoden av Citrix. Xen är en plattformsoberoende hypervisor med stor funktionalitet och enorma möjligheter, vilket gör det möjligt att använda den i företagssfären. Xen stöder paravirtualisering, ett speciellt kärnläge i operativsystemet där kärnan är konfigurerad att köras samtidigt med en hypervisor.

    Endast den nödvändiga uppsättningen funktioner har lagts till Xen-koden: hantering av virtuellt minne och processorklockfrekvens, arbete med DMA, realtidstimer och avbrott. Resten av funktionaliteten flyttas till domäner, det vill säga till virtuella maskiner som körs vid den tiden. Detta gör Xen till den lättaste hypervisorn.

    Forskningsväsen

    Testning baserad på två SuperMicro-servrar, var och en med en Intel Xeon E3-1220 fyrkärnig processor @ 3,10 Hz, 24 GB Kingston DDR3 RAM och fyra Western Digital RE-3 160 GB (RAID 10) drivrutiner. BIOS-versionerna är identiska.
    För hosting och virtuella maskiner tog vi Fedora 20 (med SELinux). Här är mjukvaruversionerna vi har tagit:

    • Kärna: 3.14.8
    • För KVM: qemu-kvm 1.6.2
    • För Xen: xen 4.3.2
    Alla rotfilsystem är XFS med standardkonfiguration. De virtuella maskinerna skapas med virt-Manager med standardinställningarna för KVM och Xen. De virtuella diskarna använde råbilder och tilldelades 8 GB RAM med 4 vCPU:er (virtuella processorer). OS som kördes på Xen använde PVHVM.

    Förklaringar

    En del av er kanske börjar bli illamående över att ägaren av Fedora 20, Red Hat, lägger ner en betydande mängd ansträngning för att stödja KVM. För att vara tydlig, har Red Hat inte gjort några betydande framsteg inom Xen på flera år.


    Dessutom är konkurrensen mellan hypervisorer hårt kontrollerad och minimerad. På de flesta virtuella servrar kommer du att ha flera virtuella maskiner som tävlar om CPU-tid, I/O-enheter och nätverksåtkomst. Våra tester tar inte hänsyn till detta. En enskild hypervisor kan prestera dåligt när resursantalet är lågt, och sedan prestera mycket bättre än sina konkurrenter när resursantalet är högre.

    Den här studien utfördes på Intel-processorer, så resultaten kan skilja sig åt för AMD och ARM.

    resultat

    Tester för virtuella maskiner installerade direkt på "hårdvara", det vill säga utan ett operativsystem (nedan kallat "hårdvara"), fungerade som grund för att testa virtuella maskiner. Prestandavariationen mellan de två icke-virtualiserade servrarna var 0,51 % eller mindre.


    KVM-prestandan sjönk med cirka 1,5 % jämfört med hårdvaran i nästan alla tester. Endast två tester visade ett annat resultat: ett av dem var 7-Zip-testet, där KVM visade sig 2,79% långsammare än hårdvara. Det konstiga är att KVM var 4,11 % snabbare i PostMark-riktmärket (som simulerade en hårt belastad e-postserver). Prestandan hos Xen skilde sig mer från hårdvarans prestanda än i KVM-situationen. I tre tester skiljde Xen sig med 2,5 % från hårdvarans hastighet, i andra test visade det sig vara ännu långsammare.

    I PostMark benchmark var Xen 14,41 % långsammare än hårdvara. Vid omstart skilde sig testresultaten från originalet med 2 %. Det bästa KVM-riktmärket, MAFFT, ligger på andra plats i det sämsta för Xen.

    Här är en snabb sammanfattning av testet:

    Bästa värde Ren metall KVM Xen
    Tidsinställd MAFFT-justering lägre 7.78 7.795 8.42
    Smallpt lägre 160 162 167.5
    POV-Ray lägre 230.02 232.44 235.89
    PostMark högre 3667 3824 3205
    OpenSSL högre 397.68 393.95 388.25
    John the Ripper (MD5) högre 49548 48899.5 46653.5
    John the Ripper (DES) högre 7374833.5 7271833.5 6911167
    John the Ripper (Blowfish) högre 3026 2991.5 2856
    KLOMP högre 3.3 3.285 3.125
    C-Ray lägre 35.35 35.66 36.13
    7-Zip högre 12467.5 12129.5 11879

    Om du vill se det fullständiga resultatet, följ länken.

    Istället för en slutsats

    I våra tester var KVM nästan alltid 2 % långsammare än hårdvara. Xen var 2,5 % långsammare i tre av tio tester, och ännu sämre i resten: med 5–7 %. Även om KVM presterade bra i PostMark-riktmärket, bör det noteras att vi bara körde ett I/O-test, och för att få en mer tillförlitlig bild är det värt att göra några fler.


    För att välja rätt hypervisor måste du bedöma vilken typ av arbetsbelastning du har. Om din arbetsbelastning involverar mindre CPU och mer I/O, kan fler I/O-tester göras. Om du huvudsakligen arbetar med ljud och video, prova x264 eller mp3 benchmarks.

    Som mister_fog med rätta påpekade köpte Citrix 2007 inte Xen-källkoden, utan XenSource-företaget, som grundades av Xen-utvecklarna och var engagerat i den kommersiella utvecklingen av detta open source-projekt. ...







2021 gtavrl.ru.