Vendar postaja operacija vedno znova znova nameščena v VM. To ovira vaš potek dela in zato potrebujete zanesljiv način za:
- Naredite posnetek svojega VM v katerem koli trenutku.
- Vzpostavite mehanizem za uporabo posnetka za vrnitev VM nazaj v prej delujoče stanje.
Pred tem sem že razpravljal o tem, kako posnetki delujejo v VirtualBoxu, in tokrat sem želel razpravljati o posnetkih v Libvirtu. Kot zaledni hipervizor za namestitev Libvirt bom uporabil QEMU-KVM. Vaš primer se lahko razlikuje, vendar se celotna funkcionalnost in vmesnik ne smeta razlikovati, saj si libvirt po najboljših močeh prizadeva za standardizacijo vmesnika.
Če niste seznanjeni z libvirtom in qemu-kvm, je tukaj vodič, kako lahko nastavite KVM v Debianu.
Ustvarjanje posnetka
Obstaja več načinov, s katerimi lahko posnamete in upravljate posnetke vašega VM-ja. GUI aplikacije, kot sta virt-manager in oVirt, ponujajo funkcionalnost, lahko pa celo napišete skripte po meri za vmesnik z libvirt API, ki za vas upravlja celotno paleto posnetkov.
Vendar pa bom z vmesnikom ukazne vrstice virsh pokazal, kako lahko upravljate svoje VM-je in njihove posnetke. Ta pripomoček je na voljo s skoraj vsemi privzetimi namestitvami libvirt in bi moral biti na voljo v številnih distribucijah.
Za spodnje ukaze ime mojega VM, VM1, zamenjajte z dejanskim imenom vašega VM. Libvirt pogosto navaja virtualni stroj in vsebnike kot Domene. Torej, če vidite sporočilo o napaki, ki predlaga, recimo, "navedite ime domene", morate ukazu VM navesti kot enega od argumentov ukaza. Uporabite naslednji ukaz za seznam vseh VM-jev pod upravljanjem Libvirt-a.
$ virsh list --allČe želite narediti posnetek VM, preprosto zaženite:
$ virsh snapshot-create VM1Če želite našteti vse posnetke določenega VM, uporabite ukaz:
$ virsh seznam posnetkov VM1Ime Čas nastanka imena Država
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 teče
Vidite lahko, da je posnetek ustvarjen. Ime posnetka je privzeto njegov časovni žig (število sekund od epohe UNIX). Stolpec Čas ustvarjanja prikazuje čas ustvarjanja na berljiv način, stolpec Stanje pa stanje VM, ko je bil posnet. Ko se je ta VM izvajal, se tudi stanje posnetka 'izvaja', vendar to ne pomeni, da se posnetek sam izvaja. Sčasoma se ne bo spremenilo. Ta funkcija je znana tudi kot posnetek v živo in je zelo dragocena, saj vam omogoča, da posnamete posnetek svojega VM brez izpadov. Gostje KVM vsaj dobro delajo s trenutnimi posnetki.
Nekatere delovne obremenitve pa zahtevajo, da ustavite VM, preden je posnet. To zagotavlja, da so podatki na posnetku dosledni in da ni napol napisane datoteke ali manjkajočih podatkov. Če ima delovna obremenitev, ki se izvaja v vašem VM, visok IO, boste verjetno morali ustvariti VM, preden ustvarite posnetek. Ustvarimo ga na ta način.
$ virsh zaustavitev VM1Domena VM1 se zaustavlja
$ virsh snapshot-create VM1Ustvarjen posnetek domene 1556533868
[zaščiteno po e-pošti]: ~ # virsh snapshot-list VM1Ime Čas ustvarjanja imena Država
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 teče
1556533868 2019-04-29 16:01:08 +0530 izklop
$ virsh start VM1
Domena VM1 se je začela
Če želite posnetke poimenovati drugače kot časovni žig, uporabite ukaz:
$ virsh snapshot-create-as VM1 --name snap1Ime Čas nastanka imena Država
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 teče
1556533868 2019-04-29 16:01:08 +0530 izklop
snap1 2019-05-02 22:27:48 +0530 teče
Očitno vam ni treba imenovati snap1, lahko izberete katero koli priročno ime.
Vrnitev nazaj iz posnetka
Posnetek posnetka ni koristen, če se nanj ne morete vrniti. V primeru, da se morate vrniti na posnetek, preprosto uporabite ukaz:
$ virsh snapshot-revert $ VMName $ snapshot-nameIme je lahko časovni žig ali uporabniško določeno ime, podano posnetku.
Prepričajte se, da v vaši trenutni VM ni pomembnih podatkov ali če je kaj pomembnega, naredite posnetek trenutne VM in se nato vrnite na starejši posnetek.
Prednosti QCOW2
Mehanizem kopiranja in pisanja datotek qcow2 omogoča, da vsak posnetek zavzame zelo majhen prostor. Prostor, ki ga zavzame posnetek, se sčasoma povečuje, ko se tekoča slika razlikuje od posnetka. Dokler ne prepisujete veliko podatkov, bodo vaši posnetki zavzeli le nekaj MB prostora za shranjevanje.
Pomeni tudi, da so tudi posnetki zelo hitri. Ker mora mehanizem kopiranja na zapis samo označiti časovni žig, ko je bil posnet posnetek. Podatkovni bloki, zapisani v datoteko qcow2 po posnetku, ji ne pripadajo, starejši pa. Tako preprosto je. Moja preizkusna miza uporablja trdi disk 5400 RPM, ki nikakor ni na vrhuncu svoje zmogljivosti, še vedno traja manj kot nekaj sekund, da posnamete trenutni posnetek VM na tem disku.
Zaključek
Tako kot pri večini pripomočkov, povezanih z libvirtom in virsh, tudi funkcija posnetkov ponuja zelo prilagodljiv vmesnik s funkcijami podjetja, kot je posnetek v živo, skupaj s prednostmi mehanizma kopiranja in pisanja.
Privzeta konvencija o poimenovanju olajša tudi skripte lupine, da redno odstranjujejo stare posnetke in jih zamenjajo z novejšimi. Enega mojih starejših člankov o posnetkih in pravilnikih posnetkov OpenZFS lahko uporabite tudi za gosta KVM. Za več informacij o pripomočku za posnetek virsh lahko uporabite ukaz za posnetek virsh help snapshot. Stran s pomočjo je zelo majhna, natančna in lahko razumljiva.