KVM Gjestes øyeblikksbilder med libvirt

KVM Gjestes øyeblikksbilder med libvirt
VM -er har mange brukssaker, hvorav den ene er kapasiteten til VM -er som skal brukes som testmaskiner. Du kan eksperimentere i en VM, bruke oppdateringer og testoppgraderinger før du gjør det samme på produksjonssystemene dine eller arbeidsstasjonen din. Du kan også bruke engangs VM -er, som mangler personlige eller sensitive data, for testing av skadelig programvare som det meste av sikkerhetssamfunnet gjør, bare sørg for at VMs nettverk er isolert fra verten og LAN.

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

  1. Ta et øyeblikksbilde av VM på et gitt tidspunkt.
  2. Ha en mekanisme for å bruke øyeblikksbildet for å vende tilbake VM -en tilbake til en tidligere fungerende tilstand.

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

Hvis du ikke er kjent med Libvirt og Qemu-KVM, her er en guide til 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 tilpassede 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 VM -ene og øyeblikksbildene deres. Dette verktøyet har nesten alle standard libvirt -installasjoner og bør være tilgjengelige i et bredt spekter av distribusjoner.

For kommandoene nedenfor, sørg for å erstatte navnet på min 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 VMs navn som et av argumentene til kommandoen. Bruk følgende kommando for å liste opp alle VM -ene under Libvirts ledelse.

$ virsh -liste -alle

Å ta et øyeblikksbilde av en VM -løp:

$ Virsh Snapshot-Create VM1

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

$ Virsh Snapshot-list VM1
Navn Opprettelse Tidsstat
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Løping

Du kan se at øyeblikksbildet er opprettet. Som standard er navnet på øyeblikksbildet dets opprettelse av tidsstempel (antall sekunder siden UNIX Epoch). Opprettelsestidskolonnen viser tidspunktet for skapelsen på en menneskelig lesbar måte, og tilstandskolonnen viser tilstanden til VM da den ble snapshotted. Når denne VM kjørte, er det også "løpes øyeblikkelig", men det betydde ikke at selve øyeblikksbildet kjører. Det vil ikke endre seg med tiden. Denne funksjonen er også kjent som live øyeblikksbilde, og den er ganske verdifull siden den lar deg ta et øyeblikksbilde av VM -en din uten driftsstans. KVM -gjestene fungerer i det minste bra med live øyeblikksbilder.

Enkelte arbeidsmengder krever imidlertid at du stopper VM før den er snapset. Dette sikrer at dataene i øyeblikksbildet er konsistente og det er ingen halvskrevet fil eller manglende data. Hvis arbeidsmengden som kjører i VM -en din har høy IO, må du sannsynligvis slå av VM før du oppretter øyeblikksbildet. La oss lage en på denne måten.

$ virsh avslutning VM1

Domene VM1 blir stengt

$ Virsh Snapshot-Create VM1

Domain Snapshot 1556533868 opprettet

root@deb: ~# virsh snapshot-list vm1
Navn Opprettelse Tidsstat
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Løping
1556533868 2019-04-29 16:01:08 +0530 Shutoff
$ virsh start vm1
Domene VM1 startet

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

$ Virsh Snapshot-Create-as VM1-Navn SNAP1
Navn Opprettelse Tidsstat
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Løping
1556533868 2019-04-29 16:01:08 +0530 Shutoff
SNAP1 2019-05-02 22:27:48 +0530 Løp

Det er klart at du ikke trenger å navngi det SNAP1, du kan velge noe praktisk navn.

Gå tilbake fra et øyeblikksbilde

Å ta et øyeblikksbilde er ikke til nytte hvis du ikke kan gå tilbake til det. I tilfelle må du gå tilbake til et øyeblikksbilde bare bruke kommandoen:

$ Virsh Snapshot-Revert $ VMName $ Snapshot-Name

Navnet kan være tidsstemplet eller den tilordnede navnet 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, så ta øyeblikksbilde av din nåværende VM og deretter gå tilbake til et eldre øyeblikksbilde.

Fordelene med QCOW2

Kopieringsmekanismen til QCOW2-filer lar hvert øyeblikksbilde ta veldig liten plass. Plassen tatt av et øyeblikksbilde øker over tid når det løpende bildet avviker fra øyeblikksbildet. Så så lenge du ikke skriver om mye data, vil øyeblikksbildene dine bare ta noen få MB -er med lagring.

Det betyr også at øyeblikksbildene også er veldig raske. Siden må kopieringsmekanismen bare markere tidsstempel når øyeblikksbildet ble tatt. Datablokkene skrevet til QCOW2 -filen etter øyeblikksbildet tilhører den ikke, 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å toppen av ytelsen, det tar fortsatt mindre enn noen få sekunder å ta et live ø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 bedriftskvalitetsfunksjoner som live øyeblikksbilde sammen med fordelene med kopieringsmekanisme.

Standard navnekonvensjon gjør det også lettere for skallskript å fjerne gamle øyeblikksbilder med jevne mellomrom og erstatte dem med nyere. En av mine eldre artikler om OpenZFS -øyeblikksbilder og øyeblikksbildepolitikk 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å.