Въпреки това става уморително да преинсталирате операционната система във вашата VM отново и отново. Това възпрепятства работния ви процес и следователно се нуждаете от надежден начин за:
- Направете моментна снимка на вашата виртуална машина във всеки даден момент от времето.
- Имате механизъм за използване на моментната снимка, за да върнете вашата VM обратно в предишно работно състояние.
Преди това съм обсъждал как работят моментните снимки във VirtualBox и този път исках да обсъдя снимките в Libvirt. Ще използвам QEMU-KVM като бекенд хипервизор за моята инсталация на Libvirt. Вашият случай може да се различава, но цялостната функционалност и интерфейс не трябва да са много различни, тъй като libvirt се опитва по най-добрия начин да стандартизира интерфейсния интерфейс.
Ако не сте запознати с libvirt и qemu-kvm, ето ръководство за това как можете да настроите KVM на Debian.
Създаване на снимка
Има няколко начина, с които можете да правите и управлявате моментни снимки на вашата виртуална машина. GUI приложения като virt-manager и oVirt предлагат функционалността и дори можете да пишете персонализирани скриптове за интерфейс с libvirt API, който управлява цялата гама от снимки за вас.
Въпреки това ще използвам интерфейс на командния ред на virsh, за да покажа как можете да управлявате вашите виртуални машини и техните моментни снимки. Тази помощна програма се предлага с почти всички инсталации по подразбиране на libvirt и трябва да бъде достъпна в широк спектър от дистрибуции.
За командите по-долу не забравяйте да замените името на моята виртуална машина, VM1, с действителното име на вашата виртуална машина. Libvirt често нарича виртуална машина и контейнери като Домейни. Така че, ако видите съобщение за грешка, предлагащо, да речем, „посочете име на домейн“, трябва да предоставите името на вашата виртуална машина като един от аргументите на командата. Използвайте следната команда, за да изброите всички виртуални машини под управлението на Libvirt.
$ virsh list --allЗа да направите моментна снимка на виртуална машина, просто изпълнете:
$ virsh моментна снимка-създаване на VM1И за да изброите всички моментни снимки на дадена VM, използвайте командата:
$ virsh списък с моментни снимки VM1Състояние на времето за създаване на име
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 работи
Можете да видите, че моментната снимка е създадена. По подразбиране името на моментната снимка е нейното време за създаване (броят секунди от UNIX епохата). Колоната „Време на създаване“ показва времето на създаване по разбираем за човека начин, а колоната „състояние“ показва състоянието на виртуалната машина, когато е направена моментна снимка. Тъй като тази VM се изпълняваше, състоянието на моментната снимка също се „изпълнява“, но това не означава, че самата снимка се изпълнява. Няма да се промени с времето. Тази функция е известна още като моментна снимка на живо и е доста ценна, тъй като ви позволява да направите моментна снимка на вашата виртуална машина без прекъсвания. Гостите на KVM поне работят добре с моментни снимки на живо.
Някои работни натоварвания обаче изискват да спрете VM, преди да бъде направена моментна снимка. Това гарантира, че данните в моментната снимка са последователни и няма полузаписан файл или липсващи данни. Ако работното натоварване във вашата виртуална машина има висок IO, вероятно ще трябва да изключите виртуалната машина, преди да създадете моментната снимка. Нека създадем такъв по този начин.
$ virsh изключване VM1Домейнът VM1 се изключва
$ virsh моментна снимка-създаване на VM1Снимка на домейн 1556533868 е създадена
[имейл защитен]: ~ # virsh snapshot-list VM1Състояние на времето за създаване на име
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 работи
1556533868 2019-04-29 16:01:08 +0530 изключване
$ virsh старт VM1
Домейнът VM1 стартира
Ако искате да назовете моментните снимки на нещо различно от клеймото за време, използвайте командата:
$ virsh snapshot-create-as VM1 --name snap1Състояние на времето за създаване на име
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 работи
1556533868 2019-04-29 16:01:08 +0530 изключване
snap1 2019-05-02 22:27:48 +0530 работи
Очевидно е, че не е нужно да го именувате snap1, можете да изберете всяко удобно име.
Връщане назад от моментна снимка
Да направите моментна снимка е безполезно, ако не можете да се върнете към нея. В случай, че трябва да се върнете обратно към моментна снимка, просто използвайте командата:
$ virsh snapshot-revert $ VMName $ snapshot-nameИмето може да бъде клеймото за време или потребителското име, дадено на моментната снимка.
Уверете се, че в текущата ви виртуална машина няма важни данни или ако има нещо важно, направете моментна снимка на текущата ви виртуална машина и след това се върнете към по-стара снимка.
Предимства на QCOW2
Механизмът за копиране и запис на файлове qcow2 позволява на всяка снимка да заема много малко място. Пространството, заето от моментна снимка, се увеличава с течение на времето, когато текущото изображение се отклонява от моментната снимка. Така че, докато не пренаписвате много данни, вашите моментни снимки ще отнемат само няколко MB памет.
Това също така означава, че и моментните снимки са много бързи. Тъй като механизмът за копиране при запис просто трябва да маркира клеймото за време, когато е направена моментната снимка. Блоковете с данни, записани във файла qcow2 след моментната снимка, не принадлежат към него, но по-старите. Толкова е просто. Моят тестов стенд използва твърд диск с 5400 об. / Мин., Който в никакъв случай не е на върха на своята производителност, но отнема по-малко от няколко секунди, за да направи жива снимка на виртуална машина на този диск.
Заключение
Както при повечето помощни програми, свързани с libvirt и virsh, функцията за моментна снимка предоставя много гъвкав интерфейс с функции от корпоративен клас, като моментна снимка на живо, заедно с предимствата на механизма за копиране и запис.
Конвенцията за именуване по подразбиране също улеснява скриптовете на черупката периодично да премахват стари моментни снимки и да ги заменят с по-нови. Една от по-старите ми статии за правилните снимки на OpenZFS и правилата за моментални снимки също може да се приложи за вашия гост в KVM. За повече информация относно помощната програма virsh snapshot можете да използвате командата virsh help snapshot. Страницата за помощ е много малка, точна и лесна за разбиране.