KVM

KVM-gæst snapshots med Libvirt

KVM-gæst snapshots med Libvirt
VM'er har mange brugssager, hvoraf den ene er kapaciteten hos VM'er, der skal bruges som testmaskiner. Du kan eksperimentere inden for en VM, anvende programrettelser og teste opgraderinger, før du gør det samme på dine produktionssystemer eller din arbejdsstation. Du kan også bruge engangs-VM'er, der mangler personlige eller følsomme data, til malware-test, som det meste af sikkerhedsfællesskabet gør, bare sørg for, at VM-netværket er isoleret fra din vært og LAN.

Det bliver dog trættende at geninstallere operativsystemet i din VM igen og igen. Det hindrer din arbejdsgang, og du har derfor brug for en pålidelig måde at:

  1. Tag et øjebliksbillede af din VM på et hvilket som helst tidspunkt.
  2. Har en mekanisme til at bruge øjebliksbillede til at vende din VM tilbage til en tidligere fungerende tilstand.

Jeg har tidligere diskuteret, hvordan snapshots fungerer i VirtualBox, og denne gang ville jeg diskutere snapshots inden for Libvirt. Jeg bruger QEMU-KVM som backend hypervisor til min Libvirt installation. Din sag kan variere, men den overordnede funktionalitet og grænseflade bør ikke være meget forskellig, da libvirt prøver sit bedste for at standardisere frontend-grænsefladen.

Hvis du ikke er fortrolig med libvirt og qemu-kvm, her er en guide til, hvordan du kan konfigurere KVM på Debian.

Oprettelse af et øjebliksbillede

Der er flere måder, hvorpå du kan tage og administrere snapshots af din VM. GUI-applikationer som virt-manager og oVirt tilbyder funktionaliteten, og du kan endda skrive brugerdefinerede scripts til interface med libvirt API, der administrerer hele spektret af snapshots til dig.

Jeg bruger dog virsh kommandolinjegrænseflade til at vise, hvordan du kan administrere dine virtuelle computere og deres snapshots. Dette værktøj leveres med næsten alle standard libvirt-installationer og skal være tilgængelige i en bred vifte af distributioner.

For nedenstående kommandoer skal du sørge for at erstatte navnet på min VM, VM1, med det faktiske navn på din VM. Libvirt refererer ofte til virtuel maskine og containere som Domæner. Så hvis du ser en fejlmeddelelse, der antyder, siger "angiv domænenavn", skal du angive din VM's navn som et af argumenterne til kommandoen. Brug følgende kommando til at liste alle de virtuelle computere under Libvirts ledelse.

$ virsh-liste - alt

For at tage et øjebliksbillede af en VM skal du bare køre:

$ virsh snapshot-opret VM1

Og for at liste alle snapshots af en given VM skal du bruge kommandoen:

$ virsh snapshot-liste VM1
Navn Oprettelse Tidstilstand
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 kører

Du kan se, at øjebliksbillede er oprettet. Som standard er snapshotets navn dets oprettelsestidsstempel (antallet af sekunder siden UNIX-epoke). Kolonnen Oprettelsestid viser tidspunktet for oprettelsen på en menneskelig læsbar måde, og kolonnen Stat viser tilstanden for den virtuelle maskine, da den blev snapshottet. Da denne VM kørte, kører snapshotets tilstand også, men det betyder ikke, at selve snapshotet kører. Det vil ikke ændre sig med tiden. Denne funktion er også kendt som live øjebliksbillede, og det er meget værdifuldt, da det giver dig mulighed for at tage et øjebliksbillede af din VM uden nedetid. KVM-gæsterne fungerer i det mindste fint med live snapshots.

Visse arbejdsbelastninger kræver dog, at du stopper med VM, før den snapshots. Dette sikrer, at dataene i øjebliksbillede er konsistente, og at der ikke er nogen halvskrevet fil eller manglende data. Hvis arbejdsbyrden, der kører i din virtuelle maskine, har høj IO, er du sandsynligvis nødt til at slukke for den virtuelle computer, før du opretter øjebliksbillede. Lad os skabe en på denne måde.

$ virsh nedlukning VM1

Domæne VM1 lukkes ned

$ virsh snapshot-Opret VM1

Domæne snapshot 1556533868 oprettet

[email protected]: ~ # virsh snapshot-list VM1
Navn Oprettelse Tidstilstand
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 kører
1556533868 2019-04-29 16:01:08 +0530 afbrydelse
 
$ virsh start VM1
Domæne VM1 startet

Hvis du vil navngive snapshotsne noget andet end tidsstempel, skal du bruge kommandoen:

$ virsh snapshot-create-as VM1 --navn snap1
Navn Oprettelse Tidstilstand
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 kører
1556533868 2019-04-29 16:01:08 +0530 afbrydelse
snap1 2019-05-02 22:27:48 +0530 kører

Det er klart, at du ikke behøver at navngive det snap1, du kan vælge et hvilket som helst praktisk navn.

Vender tilbage fra et øjebliksbillede

At tage et øjebliksbillede er til ingen nytte, hvis du ikke kan gå tilbage til det. I tilfælde af at du skal vende tilbage til et øjebliksbillede skal du blot bruge kommandoen:

$ virsh snapshot-revert $ VMName $ snapshot-name

Navnet kan være tidsstemplet eller det brugertildelte navn, der gives til snapshotet.

Sørg for, at der ikke er vigtige data i din nuværende virtuelle maskine, eller hvis der er noget, der er vigtigt, så tag et øjebliksbillede af din nuværende VM og vend tilbage til et ældre øjebliksbillede.

Fordele ved QCOW2

Copy-on-write-mekanismen for qcow2-filer tillader hvert øjebliksbillede at tage meget lille plads. Rummet, der tages af et øjebliksbillede, øges over tid, når det kørende billede afviger fra øjebliksbillede. Så længe du ikke omskriver en masse data, tager dine snapshots kun et par MB lagerplads.

Det betyder også, at snapshots også er meget hurtige. Da kopiering-til-skriv-mekanismen bare skal markere tidsstemplet, da øjebliksbillede blev taget. Datablokkene skrevet til qcow2-filen efter snapshotet hører ikke til den, men de ældre. Det er så simpelt som det. Min testbænk bruger en 5400 RPM harddisk, der på ingen måde er på toppen af ​​dens ydeevne, det tager stadig mindre end et par sekunder at tage et live øjebliksbillede af en VM på denne disk.

Konklusion

Som med de fleste libvirt- og virsh-relaterede hjælpeprogrammer giver snapshot-funktionaliteten en meget fleksibel grænseflade med enterprise grade-funktioner som live snapshotting sammen med fordelene ved copy-on-write-mekanisme.

Standard navngivningskonventionen gør det også lettere for shell-scripts med jævne mellemrum at fjerne gamle snapshots og erstatte dem med nyere. En af mine ældre artikler om OpenZFS snapshots og snapshot-politikker kan også anvendes til din KVM-gæst. For mere information om virsh snapshot-værktøjet kan du bruge virsh help snapshot-kommandoen. Hjælpesiden er meget lille, præcis og let at forstå.

Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...
Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...
Mus Museklik på venstre museknap fungerer ikke på Windows 10
Museklik på venstre museknap fungerer ikke på Windows 10
Hvis du bruger en dedikeret mus med din bærbare computer eller stationære computer, men musens venstre-klik-knap fungerer ikke på Windows 10/8/7 af en...