KVM

KVM Guest Snapshots med Libvirt

KVM Guest Snapshots med Libvirt
VM-er har mange brukstilfeller, hvorav den ene er kapasiteten til VM-er som skal brukes som testmaskiner. Du kan eksperimentere i en virtuell maskin, bruke oppdateringer og teste oppgraderinger før du gjør det samme på produksjonssystemene eller arbeidsstasjonen din. Du kan også bruke disponible virtuelle maskiner, som mangler personlige eller sensitive data, for testing av skadelig programvare som det meste av sikkerhetssamfunnet gjør, bare sørg for at VM-nettverket er isolert fra verten og LAN.

Imidlertid blir det kjedelig å installere operativsystemet på nytt i din VM igjen og igjen. Det hindrer arbeidsflyten din, og du trenger derfor en pålitelig måte å:

  1. Ta et øyeblikksbilde av den virtuelle maskinen til enhver tid.
  2. Ha en mekanisme for å bruke øyeblikksbildet til å tilbakestille den virtuelle maskinen til en tidligere fungerende tilstand.

Jeg har tidligere diskutert hvordan øyeblikksbilder fungerer i VirtualBox, og denne gangen ønsket jeg å diskutere øyeblikksbilder i Libvirt. Jeg vil bruke QEMU-KVM som backend hypervisor for Libvirt-installasjonen min. Saken din kan variere, men den generelle funksjonaliteten og grensesnittet bør ikke være veldig forskjellig, siden libvirt prøver sitt beste for å standardisere frontendgrensesnittet.

Hvis du ikke er kjent med libvirt og qemu-kvm, er det en guide om hvordan du kan konfigurere KVM på Debian.

Opprette et øyeblikksbilde

Det er flere måter du kan ta og administrere øyeblikksbilder av VM-en din. GUI-applikasjoner som virt-manager og oVirt tilbyr funksjonaliteten, og du kan til og med skrive egendefinerte skript for å grensesnitt med libvirt API som administrerer hele spekteret av øyeblikksbilder for deg.

Imidlertid vil jeg bruke virsh kommandolinjegrensesnitt for å vise hvordan du kan administrere dine virtuelle maskiner og deres øyeblikksbilder. Dette verktøyet kommer med nesten alle standard libvirt-installasjoner og skal være tilgjengelig i et bredt spekter av distribusjoner.

For kommandoene nedenfor, sørg for å erstatte navnet på VM, VM1, med det faktiske navnet på VM. Libvirt refererer ofte til virtuell maskin og containere som Domener. Så hvis du ser en feilmelding som antyder, si "spesifiser domenenavn", må du oppgi VM-navnet ditt som et av argumentene til kommandoen. Bruk følgende kommando til å liste opp alle virtuelle maskiner under Libvirts administrasjon.

$ virsh-liste - alt

For å ta et øyeblikksbilde av en virtuell datamaskin, kjør bare:

$ virsh snapshot-create VM1

Og for å liste opp alle øyeblikksbildene til en gitt VM, bruk kommandoen:

$ virsh øyeblikksbilde-liste VM1
Navn Opprettelsestidstilstand
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 løpende

Du kan se at øyeblikksbildet er opprettet. Som standard er øyeblikksbildet dets tidsstempel (antall sekunder siden UNIX-epoken). Creation Time-kolonnen viser tidspunktet for opprettelsen på en menneskelig lesbar måte, og State-kolonnen viser tilstanden til den virtuelle maskinen da den ble øyeblikksbilde. Da denne virtuelle maskinen kjørte, kjører også stillbildets tilstand, men det betyr ikke at øyeblikksbildet kjører. Det vil ikke endre seg med tiden. Denne funksjonen er også kjent som direkte øyeblikksbilde, og den er ganske verdifull siden den lar deg ta et øyeblikksbilde av den virtuelle maskinen uten nedetid. KVM-gjestene fungerer i det minste bra med direkte øyeblikksbilder.

Visse arbeidsmengder krever imidlertid at du stopper VM før den blir øyeblikksbilde. Dette sikrer at dataene i øyeblikksbildet er konsistente og at det ikke er noen halvskrevet fil eller mangler data. Hvis arbeidsmengden som kjører i den virtuelle maskinen din har høy IO, må du sannsynligvis slå av den virtuelle maskinen før du oppretter øyeblikksbildet. La oss lage en på denne måten.

$ virsh shutdown VM1

Domenet VM1 blir stengt

$ virsh snapshot-create VM1

Domene øyeblikksbilde 1556533868 opprettet

[e-postbeskyttet]: ~ # virsh snapshot-list VM1
Navn Opprettelsestidstilstand
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 løpende
1556533868 2019-04-29 16:01:08 +0530 avstengning
 
$ virsh start VM1
Domenet VM1 startet

Hvis du vil navngi øyeblikksbildene noe annet enn tidsstempel, bruk kommandoen:

$ virsh snapshot-create-as VM1 --name snap1
Navn Opprettelsestidstilstand
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 løpende
1556533868 2019-04-29 16:01:08 +0530 avstenging
snap1 2019-05-02 22:27:48 +0530 kjører

Åpenbart trenger du ikke å gi den navnet snap1, du kan velge hvilket som helst praktisk navn.

Går tilbake fra et øyeblikksbilde

Å ta et øyeblikksbilde nytter ikke hvis du ikke kan gå tilbake til det. I tilfelle må du gå tilbake til et øyeblikksbilde, bruk bare kommandoen:

$ virsh snapshot-revert $ VMName $ snapshot-name

Navnet kan være tidsstempelet eller brukernavnet som er gitt til øyeblikksbildet.

Forsikre deg om at det ikke er noen viktige data i din nåværende VM, eller hvis det er noe av betydning, ta øyeblikksbilde av din nåværende VM og deretter gå tilbake til et eldre øyeblikksbilde.

Fordeler med QCOW2

Kopier-på-skriv-mekanismen til qcow2-filer gjør at hvert øyeblikksbilde tar veldig liten plass. Plassen som tas av et øyeblikksbilde øker over tid når det løpende bildet avviker fra øyeblikksbildet. Så lenge du ikke skriver om mye data, tar øyeblikksbildene dine bare noen få MB lagringsplass.

Det betyr også at øyeblikksbildene også er veldig raske. Siden kopierings- og skrivemekanismen bare trenger å markere tidsstemplet når øyeblikksbildet ble tatt. Datablokkene skrevet til qcow2-filen etter øyeblikksbildet tilhører ikke den, men de eldre gjør det. Det er så enkelt som det. Testbenken min bruker en 5400 RPM-harddisk som på ingen måte er på topp med ytelsen, det tar likevel mindre enn noen få sekunder å ta et direkte øyeblikksbilde av en VM på denne disken.

Konklusjon

Som med de fleste libvirt- og virsh-relaterte verktøy, gir øyeblikksbildefunksjonaliteten et veldig fleksibelt grensesnitt med funksjoner i bedriftsklasse som live snapshotting sammen med fordelene med copy-on-write-mekanisme.

Standard navngivningskonvensjon gjør det også lettere for shell-skript å periodisk fjerne gamle øyeblikksbilder og erstatte dem med nyere. En av mine eldre artikler om OpenZFS-øyeblikksbilder og øyeblikksbilde-policyer kan også brukes på KVM-gjesten din. For mer informasjon om virsh snapshot-verktøyet kan du bruke virsh help snapshot-kommandoen. Hjelpesiden er veldig liten, presis og lett å forstå.

Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...
Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...
Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...