KVM

KVM гост снимки с Libvirt

KVM гост снимки с Libvirt
Виртуалните машини имат много случаи на употреба, един от които е капацитетът на виртуалните машини да се използват като тестови машини. Можете да експериментирате във виртуална машина, да прилагате корекции и да тествате надстройки, преди да направите същото на вашите производствени системи или вашата работна станция. Можете също да използвате виртуални машини за еднократна употреба, в които липсват лични или чувствителни данни, за тестване на злонамерен софтуер, както прави повечето от общността за сигурност, просто се уверете, че мрежата на виртуалната машина е изолирана от вашия хост и LAN.

Въпреки това става уморително да преинсталирате операционната система във вашата VM отново и отново. Това възпрепятства работния ви процес и следователно се нуждаете от надежден начин за:

  1. Направете моментна снимка на вашата виртуална машина във всеки даден момент от времето.
  2. Имате механизъм за използване на моментната снимка, за да върнете вашата 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. Страницата за помощ е много малка, точна и лесна за разбиране.

Как да разработите игра на Linux
Преди десетилетие не много потребители на Linux биха прогнозирали, че любимата им операционна система един ден ще бъде популярна игрална платформа за ...
Пристанища с отворен код на търговски игрални машини
Безплатни разширения на играта с отворен код и междуплатформени игри могат да се използват за възпроизвеждане на стари, както и някои от доста скорошн...
Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...