KVM

Гостевые снимки KVM с Libvirt

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

Однако переустанавливать операционную систему внутри виртуальной машины снова и снова утомительно. Это мешает вашему рабочему процессу, и поэтому вам нужен надежный способ:

  1. Сделайте снимок вашей виртуальной машины в любой момент времени.
  2. У вас есть механизм для использования снимка, чтобы вернуть вашу виртуальную машину обратно в предыдущее рабочее состояние.

Я ранее обсуждал, как снимки работают в VirtualBox, и на этот раз я хотел обсудить снимки в Libvirt. Я буду использовать QEMU-KVM в качестве внутреннего гипервизора для моей установки Libvirt. Ваш случай может отличаться, но общая функциональность и интерфейс не должны сильно отличаться, поскольку libvirt изо всех сил пытается стандартизировать интерфейс внешнего интерфейса.

Если вы не знакомы с libvirt и qemu-kvm, вот руководство по настройке KVM на Debian.

Создание снимка

Существует несколько способов делать снимки виртуальной машины и управлять ими. Приложения с графическим интерфейсом пользователя, такие как virt-manager и oVirt, предлагают эту функциональность, и вы даже можете писать собственные сценарии для взаимодействия с libvirt API, который управляет всем диапазоном снимков за вас.

Однако я буду использовать интерфейс командной строки virsh, чтобы показать, как вы можете управлять своими виртуальными машинами и их снимками. Эта утилита поставляется практически со всеми установками libvirt по умолчанию и должна быть доступна в широком диапазоне дистрибутивов.

Для приведенных ниже команд не забудьте заменить имя моей виртуальной машины, VM1, на фактическое имя вашей виртуальной машины. Libvirt часто называет виртуальную машину и контейнеры Домены. Поэтому, если вы видите сообщение об ошибке, предлагающее, скажем, «указать доменное имя», вам необходимо указать имя вашей виртуальной машины в качестве одного из аргументов команды. Используйте следующую команду, чтобы вывести список всех виртуальных машин под управлением Libvirt.

$ virsh list - все

Чтобы сделать снимок виртуальной машины, просто запустите:

$ virsh snapshot-create VM1

А чтобы вывести список всех снимков данной виртуальной машины, используйте команду:

Список моментальных снимков $ virsh VM1
Состояние времени создания имени
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 работает

Вы видите, что снимок создан. По умолчанию имя снимка - это отметка времени его создания (количество секунд с начала эпохи UNIX). Столбец Creation Time показывает время создания в удобочитаемой форме, а столбец State показывает состояние виртуальной машины на момент создания моментального снимка. Поскольку эта виртуальная машина работала, состояние моментального снимка также является «запущенным», но это не означает, что сам моментальный снимок запущен. Со временем это не изменится. Эта функция также известна как живой снимок, и она весьма ценна, поскольку позволяет делать снимок виртуальной машины без простоев. По крайней мере, гости KVM прекрасно работают со снимками в реальном времени.

Однако для некоторых рабочих нагрузок необходимо остановить виртуальную машину, прежде чем будет сделан моментальный снимок. Это гарантирует, что данные в моментальном снимке непротиворечивы, и в нем нет наполовину записанного файла или недостающих данных. Если рабочая нагрузка, выполняемая на вашей виртуальной машине, имеет высокий уровень ввода-вывода, вам, вероятно, потребуется выключить виртуальную машину перед созданием моментального снимка. Давайте создадим один таким образом.

$ virsh выключение ВМ1

Домен ВМ1 отключается

$ virsh snapshot-create VM1

Снимок домена 1556533868 создан

[электронная почта защищена]: ~ # список снимков virsh VM1
Состояние времени создания имени
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 работает
1556533868 2019-04-29 16:01:08 +0530 отключение
 
$ virsh запустить ВМ1
Домен ВМ1 запущен

Если вы хотите дать снимкам имя, отличное от отметки времени, используйте команду:

$ 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 $ имя-снимка

Имя может быть меткой времени или именем, присвоенным пользователем снимку.

Убедитесь, что на вашей текущей виртуальной машине нет важных данных или, если есть что-то важное, сделайте снимок текущей виртуальной машины, а затем вернитесь к более старому снимку.

Преимущества QCOW2

Механизм копирования при записи файлов qcow2 позволяет каждому снимку занимать очень мало места. Пространство, занимаемое снимком, со временем увеличивается по мере того, как текущее изображение расходится с снимком. Итак, пока вы не перезаписываете много данных, ваши снимки будут занимать всего несколько МБ хранилища.

Это также означает, что снимки тоже очень быстрые. Так как механизму копирования при записи просто нужно отметить метку времени, когда был сделан снимок. Блоки данных, записанные в файл qcow2 после снэпшота, ему не принадлежат, но более старые. Это так просто. В моем тестовом стенде используется жесткий диск со скоростью 5400 об / мин, который никоим образом не находится на пике своей производительности, для создания оперативного снимка виртуальной машины на этом диске все равно требуется менее нескольких секунд.

Заключение

Как и большинство утилит, связанных с libvirt и virsh, функция моментальных снимков обеспечивает очень гибкий интерфейс с функциями корпоративного уровня, такими как создание моментальных снимков в реальном времени, а также преимущества механизма копирования при записи.

Соглашение об именах по умолчанию также упрощает сценариям оболочки периодическое удаление старых снимков и замену их новыми. Одна из моих старых статей о снимках состояния OpenZFS и политиках снимков также может быть применена к вашему гостевому компьютеру KVM. Для получения дополнительной информации об утилите virsh snapshot вы можете использовать команду virsh help snapshot. Страница справки очень маленькая, точная и простая для понимания.

Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...
Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...