KVM

KVM Guest Snapshots med Libvirt

KVM Guest Snapshots med Libvirt
Virtuella datorer har många användningsfall, varav en är kapaciteten hos virtuella datorer som ska användas som testmaskiner. Du kan experimentera inom en virtuell dator, tillämpa korrigeringsfiler och testuppgraderingar innan du gör detsamma på dina produktionssystem eller din arbetsstation. Du kan också använda disponibla virtuella datorer, som saknar personlig eller känslig data, för skadlig testning som de flesta av säkerhetsgemenskapen gör, se bara till att den virtuella datorns nätverk är isolerat från din värd och LAN.

Det blir dock tråkigt att installera om operativsystemet i din virtuella dator om och om igen. Det hindrar ditt arbetsflöde och därför behöver du ett tillförlitligt sätt att:

  1. Ta en ögonblicksbild av din virtuella dator vid en viss tidpunkt.
  2. Ha en mekanism för att använda ögonblicksbilden för att återställa din virtuella dator till ett tidigare fungerande tillstånd.

Jag har tidigare diskuterat hur snapshots fungerar i VirtualBox och den här gången ville jag diskutera snapshots inom Libvirt. Jag kommer att använda QEMU-KVM som backend hypervisor för min Libvirt-installation. Ditt fall kan skilja sig, men den övergripande funktionaliteten och gränssnittet borde inte vara väldigt annorlunda, eftersom libvirt försöker sitt bästa för att standardisera frontend-gränssnittet.

Om du inte känner till libvirt och qemu-kvm, här är en guide om hur du kan ställa in KVM på Debian.

Skapa en ögonblicksbild

Det finns flera sätt som du kan ta och hantera ögonblicksbilder av din virtuella dator. GUI-applikationer som virt-manager och oVirt erbjuder funktionaliteten och du kan till och med skriva anpassade skript för att gränssnitt med libvirt API som hanterar hela utbudet av ögonblicksbilder för dig.

Jag kommer dock att använda virsh kommandoradsgränssnitt för att visa hur du kan hantera dina virtuella datorer och deras ögonblicksbilder. Detta verktyg levereras med nästan alla standard libvirt-installationer och borde vara tillgängligt i ett brett spektrum av distributioner.

För kommandona nedan, se till att ersätta namnet på min virtuella dator, VM1, med det faktiska namnet på din virtuella dator. Libvirt hänvisar ofta till virtuell maskin och containrar som Domäner. Så om du ser ett felmeddelande som föreslår, säg "ange domännamn", måste du ange din virtuella dators namn som ett av argumenten till kommandot. Använd följande kommando för att lista alla virtuella datorer under Libvirts hantering.

$ virsh-lista - allt

För att ta en ögonblicksbild av en virtuell dator kör du bara:

$ virsh snapshot-skapa VM1

Och för att lista alla ögonblicksbilder av en viss virtuell dator använder du kommandot:

$ virsh snapshot-lista VM1
Namnskapande Tidstillstånd
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 igång

Du kan se att ögonblicksbilden skapas. Som standard är ögonblicksbildens skapande tidsstämpel (antalet sekunder sedan UNIX-epoken). Kolumnen Skapningstid visar tidpunkten för skapandet på ett mänskligt läsbart sätt och statskolumnen visar tillståndet för den virtuella datorn när den blev ögonblicksbild. Eftersom den här virtuella datorn kördes, körs stillbildens tillstånd också, men det betyder inte att ögonblicksbilden körs. Det kommer inte att förändras med tiden. Den här funktionen kallas också live-ögonblicksbild och den är ganska värdefull eftersom den låter dig ta en ögonblicksbild av din virtuella dator utan driftstopp. KVM-gästerna fungerar åtminstone bra med live-snapshots.

Vissa arbetsbelastningar kräver dock att du stoppar den virtuella datorn innan den snapshots. Detta säkerställer att data i ögonblicksbilden är konsekventa och att det inte finns någon halvskriven fil eller saknas data. Om arbetsbelastningen som körs i din virtuella dator har hög IO måste du antagligen stänga av den virtuella datorn innan du skapar ögonblicksbilden. Låt oss skapa en på detta sätt.

$ virsh avstängning VM1

Domän VM1 stängs av

$ virsh snapshot-skapa VM1

Domän ögonblicksbild 1556533868 skapad

[e-postskyddad]: ~ # virsh snapshot-list VM1
Namnskapande Tidstillstånd
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 igång
1556533868 2019-04-29 16:01:08 +0530 avstängning
 
$ virsh start VM1
Domän VM1 startade

Om du vill namnge ögonblicksbilderna något annat än tidsstämpel, använd kommandot:

$ virsh snapshot-create-as VM1 --name snap1
Namnskapande Tidstillstånd
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 igång
1556533868 2019-04-29 16:01:08 +0530 avstängning
snap1 2019-05-02 22:27:48 +0530 igång

Uppenbarligen behöver du inte namnge det snap1, du kan välja vilket lämpligt namn som helst.

Återgår från en stillbild

Att ta en ögonblicksbild är till ingen nytta om du inte kan gå tillbaka till den. Om du behöver återgå till en ögonblicksbild använder du bara kommandot:

$ virsh snapshot-revert $ VMName $ snapshot-name

Namnet kan vara tidsstämpeln eller det användartilldelade namnet som ges till stillbilden.

Se till att det inte finns några viktiga data i din nuvarande virtuella dator, eller om det finns något av betydelse, ta sedan ögonblicksbild av din nuvarande virtuella dator och återgå sedan till en äldre ögonblicksbild.

Fördelar med QCOW2

Kopierings- och skrivmekanismen för qcow2-filer gör att varje ögonblicksbild tar mycket litet utrymme. Utrymmet som tas av en ögonblicksbild ökar med tiden när den löpande bilden avviker från ögonblicksbilden. Så länge du inte skriver om mycket data tar dina ögonblicksbilder bara några MB lagringsutrymme.

Det betyder också att ögonblicksbilderna är mycket snabba också. Eftersom copy-on-write-mekanismen bara måste markera tidsstämpeln när ögonblicksbilden togs. Datablocken som skrivs till qcow2-filen efter ögonblicksbilden tillhör inte den, men de äldre. Det är så enkelt som det. Min testbänk använder en 5400 RPM-hårddisk som inte alls är på topp för dess prestanda, det tar fortfarande mindre än några sekunder att ta en live-ögonblicksbild av en virtuell dator på den här disken.

Slutsats

Som med de flesta libvirt- och virsh-relaterade verktyg ger ögonblicksbildfunktionaliteten ett mycket flexibelt gränssnitt med funktioner i företagskvalitet som live snapshotting tillsammans med fördelarna med copy-on-write-mekanism.

Standardnamnkonventionen gör det också lättare för skalskript att regelbundet ta bort gamla ögonblicksbilder och ersätta dem med nyare. En av mina äldre artiklar om OpenZFS-snapshots och snapshot-policyer kan också tillämpas på din KVM-gäst. För mer information om virsh snapshot-verktyget kan du använda virsh help snapshot-kommandot. Hjälpsidan är väldigt liten, exakt och lätt att förstå.

Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jag har nyligen läst om Microsoft Sculpt Touch trådlös mus och bestämde mig för att köpa den. Efter att ha använt den ett tag bestämde jag mig för att...
Mus AppyMouse styrplatta och muspekare för Windows-surfplattor
AppyMouse styrplatta och muspekare för Windows-surfplattor
Surfplattanvändare saknar ofta muspekaren, särskilt när de brukar använda bärbara datorer. Pekskärmen Smartphones och surfplattor har många fördelar o...
Mus Mellan musknappen fungerar inte i Windows 10
Mellan musknappen fungerar inte i Windows 10
De mittknappen hjälper dig att bläddra igenom långa webbsidor och skärmar med mycket data. Om det slutar, kommer du sluta använda tangentbordet för at...