Je však obtížné znovu a znovu instalovat operační systém uvnitř vašeho VM. Překáží vašemu pracovnímu postupu, a proto potřebujete spolehlivý způsob, jak:
- Pořiďte snímek svého virtuálního počítače v daném okamžiku.
- Mít mechanismus k použití snímku k vrácení vašeho virtuálního počítače zpět do dříve fungujícího stavu.
Předtím jsem diskutoval o tom, jak snímky fungují ve VirtualBoxu, a tentokrát jsem chtěl diskutovat o snímcích v Libvirtu. Budu používat QEMU-KVM jako back-endový hypervisor pro svou instalaci Libvirt. Váš případ se může lišit, ale celková funkčnost a rozhraní by se neměly příliš lišit, protože libvirt se snaží co nejlépe standardizovat rozhraní frontendu.
Pokud nejste obeznámeni s libvirt a qemu-kvm, zde je průvodce, jak můžete nastavit KVM v Debianu.
Vytvoření snímku
Existuje několik způsobů, kterými můžete pořizovat a spravovat snímky svého virtuálního počítače. Aplikace GUI jako virt-manager a oVirt nabízí tuto funkčnost a můžete dokonce psát vlastní skripty pro rozhraní s libvirt API, které pro vás spravuje celou škálu snímků.
Budu však používat rozhraní příkazového řádku virsh, abych ukázal, jak můžete spravovat své virtuální počítače a jejich snímky. Tento nástroj je dodáván s téměř všemi výchozími instalacemi libvirt a měl by být k dispozici v celé řadě distribucí.
U níže uvedených příkazů nezapomeňte nahradit název mého virtuálního počítače, VM1, skutečným názvem vašeho virtuálního počítače. Libvirt často označuje virtuální stroj a kontejnery jako Domény. Pokud se vám tedy zobrazí chybová zpráva s návrhem, řekněme „zadat název domény“, musíte jako jeden z argumentů příkazu zadat název svého virtuálního počítače. Pomocí následujícího příkazu zobrazíte seznam všech virtuálních počítačů pod správou Libvirt.
$ virsh list - všeChcete-li pořídit snímek virtuálního počítače, jednoduše spusťte:
$ virsh snapshot-create VM1Chcete-li zobrazit seznam všech snímků daného virtuálního počítače, použijte příkaz:
$ virsh snapshot-list VM1Stav vytvoření jména
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 běží
Vidíte, že je vytvořen snímek. Ve výchozím nastavení je název snímku časovým razítkem jeho vytvoření (počet sekund od epochy systému UNIX). Sloupec Čas vytvoření zobrazuje čas vytvoření lidským způsobem a sloupec Stav zobrazuje stav virtuálního počítače, když byl snímek. Protože tento VM běžel, stav snímku je také „spuštěný“, ale to neznamená, že je spuštěn samotný snímek. Časem se to nezmění. Tato funkce je také známá jako živý snímek a je velmi cenná, protože vám umožňuje pořídit snímek vašeho virtuálního počítače bez jakýchkoli prostojů. Hosté KVM přinejmenším fungují dobře se živými snímky.
Určité úlohy však vyžadují zastavení virtuálního počítače před jeho snapshottováním. Tím je zajištěno, že data ve snímku jsou konzistentní a neexistuje žádný napůl napsaný soubor nebo chybějící data. Pokud má pracovní zátěž spuštěná ve vašem virtuálním počítači vysoké IO, pravděpodobně budete muset virtuální počítač před vytvořením snímku vypnout. Vytvořme jeden tímto způsobem.
$ virsh vypnutí VM1Probíhá vypnutí domény VM1
$ virsh snapshot-create VM1Snímek domény 1556533868 vytvořen
[chráněno e-mailem]: ~ # virsh snapshot-list VM1Stav vytvoření jména
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 běží
1556533868 2019-04-29 16:01:08 +0530 uzavření
$ virsh start VM1
Doména VM1 spuštěna
Pokud chcete pojmenovat snímky něčím jiným než časovým razítkem, použijte příkaz:
$ virsh snapshot-create-as VM1 --name snap1Stav vytvoření jména
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 běží
1556533868 2019-04-29 16:01:08 +0530 uzavření
Snap1 2019-05-02 22:27:48 +0530 běží
Je zřejmé, že to nemusíte pojmenovat snap1, můžete si vybrat libovolný vhodný název.
Vrátit se zpět ze snímku
Pořídit snímek není k ničemu, pokud se k němu nemůžete vrátit. V případě, že se potřebujete vrátit zpět na snímek, jednoduše použijte příkaz:
$ virsh snapshot-revert $ VMName $ snapshot-nameNázev může být časové razítko nebo název přiřazený uživatelem daný snímku.
Ujistěte se, že ve vašem aktuálním virtuálním počítači nejsou žádná důležitá data, nebo pokud existuje něco důležitého, pořiďte snímek aktuálního virtuálního počítače a poté se vraťte zpět na starší snímek.
Výhody QCOW2
Mechanismus kopírování a zápisu souborů qcow2 umožňuje každému snímku zabírat velmi malé místo. Prostor pořízený snímkem se časem zvětšuje, protože se běžící obraz liší od snímku. Dokud tedy nepřepíšete hodně dat, vaše snímky zaberou jen několik MB úložiště.
Také to znamená, že snímky jsou také velmi rychlé. Protože mechanismus kopírování při zápisu potřebuje pouze označit časové razítko, když byl snímek pořízen. Datové bloky zapsané do souboru qcow2 po snímku do něj nepatří, ale ty starší ano. Je to tak jednoduché. Moje zkušební stolice používá pevný disk 5400RPM, který v žádném případě není na vrcholu svého výkonu, pořízení živého snímku virtuálního počítače na tomto disku trvá stále méně než několik sekund.
Závěr
Stejně jako u většiny nástrojů souvisejících s libvirt a virsh poskytuje funkce snapshot velmi flexibilní rozhraní s funkcemi podnikové třídy, jako je živý snapshot, spolu s výhodami mechanismu kopírování na zápis.
Výchozí konvence pojmenování také usnadňuje skriptům prostředí pravidelně odstraňovat staré snímky a nahradit je novějšími. Jeden z mých starších článků o snapshotech a zásadách snapshotů OpenZFS lze také použít pro vašeho hosta KVM. Další informace o obslužném programu virsh snapshot můžete použít pomocí příkazu virsh help snapshot. Stránka nápovědy je velmi malá, přesná a snadno srozumitelná.