Резервное копирование и восстановление Виртуальных машин
1. Резервное копирование и восстановление виртуальных машин с помощью Резервного домена хранения (Backup Storage Domain)
1.1. Описание Резервного домена хранения
Резервный домен хранения - это домен, который можно использовать специально для хранения и миграции виртуальных машин и шаблонов виртуальных машин с целью резервного копирования и восстановления в случае аварии, миграции и т.д. Резервный домен отличается от нерезервного тем, что все виртуальные машины в нем находятся в выключенном состоянии. Виртуальная машина не может работать в резервном домене.
Любой домен хранения данных можно задать в качестве резервного домена. Чтобы включить/выключите эту настройку, установите/снимите флажок "Резервная копия (Backup)" в диалоговом окне "Управление доменом (Manage Domain)". Эту настройку можно включить только после остановки всех виртуальных машин в этом домене хранения.
Невозможно запустить виртуальную машину, хранящуюся в резервном домене. Менеджер управления блокирует эту и любую другую операцию, которая может сделать резервную копию недействительной. Однако можно запустить виртуальную машину на основе шаблона, хранящегося в резервном домене, если диски этой виртуальной машины не являются частью резервного домена. Как и в случае с другими типами доменов хранения, резервные домены можно подключать к центру данных и отключать от него. Таким образом, помимо хранения резервных копий, резервные домены можно использовать для переноса виртуальных машин между центрами данных.
- Преимущества
-
Вот несколько причин использовать резервный домен, а не домен экспорта:
-
В центре данных может быть несколько резервных доменов хранения, но лишь один домен экспорта.
-
Можно выделить резервный домен хранения для резервного копирования и аварийного восстановления.
-
Можно перенести резервную копию виртуальной машины, шаблона или моментального снимка в резервный домен хранения.
-
С резервными доменами миграция большого количества виртуальных машин, шаблонов или файлов OVF выполняется значительно быстрее, чем с доменами экспорта.
-
Резервный домен использует дисковое пространство эффективнее, чем домен экспорта.
-
Резервные домены поддерживают как файловое хранилище (NFS, Gluster), так и блочное (Fiber Channel и iSCSI) - в отличие от доменов экспорта, поддерживающих только файловое.
-
Настройку "Резервная копия (Backup)" для домена хранения можно динамически включать и выключать с учетом ограничений.
-
- Ограничения
-
-
У любой виртуальной машины или шаблона в резервном домене (backup) все диски должны быть в этом же домене.
-
Все виртуальные машины в домене хранения должны быть выключены, прежде чем его можно будет сделать резервным доменом.
-
Невозможно запустить виртуальную машину, хранящуюся в резервном домене, потому что это может привести к изменению данных на диске.
-
Резервный домен не может быть целевым доменом томов памяти (memory volumes), поскольку тома памяти поддерживаются только для активных виртуальных машин.
-
Предварительный просмотр виртуальной машины в резервном домене невозможен.
-
Перенос виртуальной машины "на лету" в резервный домен невозможен.
-
Невозможно задать резервный домен в качестве мастер-домена.
-
Невозможно задать домен hosted engine в качестве резервного домена.
-
Не используйте домен хранения по умолчанию в качестве резервного домена.
-
1.2. Установка домена хранения данных в качестве резервного домена.
-
Все диски, принадлежащие виртуальной машине или шаблону в домене хранения, должны находиться в одном и том же домене.
-
Все виртуальные машины в домене должны быть выключены.
-
На Портале администрирования нажмите .
-
Создайте новый домен хранения или выберите существующий домен хранения и нажмите Управление доменом (Manage Domain). Откроется диалоговое окно "Управление доменом (Manage Domains).
-
В блоке Дополнительные параметры (Advanced Parameters) установите флажок "Резервная копия (Backup)".
Теперь домен стал резервным доменом.
1.3. Резервное копирование или восстановление виртуальной машины или моментального снимка с использованием резервного домена
Можно выполнить резервное копирование выключенной виртуальной машины или моментального снимка. Затем можно сохранить резервную копию в том же центре данных и восстановиться с нее при необходимости либо перенести ее в другой центр данных.
1.3.1. Резервное копирование виртуальной машины
-
Создайте резервный домен. См. раздел Установка домена хранения данных в качестве резервного домена.
-
Создайте новую виртуальную машину на базе виртуальной машины, резервную копию которой вы хотите сделать:
-
Чтобы сделать резервную копию снимка, сначала создайте из него виртуальную машину. См. раздел Создание виртуальной машины из моментального снимка Руководства по управлению виртуальными машинами.
-
Чтобы сделать резервную копию виртуальной машины, сначала клонируйте ее. См. раздел Клонирование виртуальной машины Руководства по управлению виртуальными машинами. Прежде чем продолжить, убедитесь, что клон выключен.
-
-
Экспортируйте новую виртуальную машину в резервный домен. См. раздел Экспортирование виртуальной машины в домен данных Руководства по управлению виртуальными машинами.
1.3.2. Восстановление виртуальной машины
-
Убедитесь, что резервный домен хранения, в котором хранится резервная копия виртуальной машины, подключен к центру данных.
-
Импортируйте виртуальную машину из резервного домена. См. раздел Импортирование виртуальной машины из домена данных Руководства по управлению виртуальными машинами.
2. Резервное копирование и восстановление виртуальных машин с использованием домена экспорта
2.1. Подключение домена экспорта
Экспорт-домены - это временные хранилища, которые используются для резервного копирования виртуальных машин, копирования и перемещения снимков между центрами данных и площадками zVirt.
Экспорт-домен можно перемещать между центрами данных, но в один момент времени он может быть активен только в одном центре данных.
|
Далее описана процедура создания и добавления домена экспорта на примере NFS.
-
На NFS-сервере подготовьте и экспортируйте каталог, который будет подключен как домен экспорта
-
Создайте директорию, например:
mkdir /storage/export; -
Назначьте владельца:
chown -R 36:36 /storage/export; -
Установите права:
chmod 0755 /storage/export. -
Если NFS-сервер реализован на системе, отличной от zVirt Node, то необходимо создать служебных пользователей и группы:
groupadd sanlock -g 179 groupadd kvm -g 36 useradd sanlock -u 179 -g 179 -G kvm useradd vdsm -u 36 -g 36 -G sanlock -
Опубликуйте каталог, прописав его в конфигурационном файле
NFS-сервера:echo "/storage/export *(rw,anonuid=36,anongid=36)" >> /etc/exports -
Убедитесь в правильности задания параметров доступа:
cat /etc/exports -
Запустите необходимые сервисы:
systemctl enable nfs-server systemctl enable rpcbind systemctl enable nfs-blkmap systemctl restart nfs-server systemctl restart rpcbind systemctl restart nfs-blkmap -
Создайте правила межсетевого экрана (например, firewalld) для обеспечения доступности хранилища для других хостов:
firewall-cmd --permanent --add-service=nfs firewall-cmd --permanent --add-service=mountd firewall-cmd --permanent --add-service=rpc-bind firewall-cmd --reload
-
-
Добавьте домен экспорта в среду zVirt:
-
Авторизуйтесь на портале администрирования.
-
В боковом меню перейдите в .
-
Нажмите Новый домен.
-
В окне добавления нового домена введите следующие параметры:
-
В поле Центр данных выберите центр данных, к которому будет подключен домен.
-
В поле Функция домена выберите Экспорт.
-
Убедитесь, что в поле Тип хранилища выбран NFS.
-
При необходимости в поле Используемый хост измените хост, который будет использован для подключения к хранилищу.
-
В поле Имя укажите уникальное имя домена
-
В поле Путь экспорта укажите путь для подключения к NFS-хранилищу, например, nfs-server.example.com:/storage/export.
-
Прочие параметры можно оставить со значениями по умолчанию.
-
-
Нажмите OK.
-
Убедитесь, что домен перешёл в состояние Активный.
-
2.2. Резервное копирование ВМ в домен экспорта
Встроенное средство резервного копирования (СРК) ВМ имеет возможность работать в двух конфигурациях - ручное резервное копирование и резервное копирование по расписанию.
В процессе резервирования СРК проверяет количество свободного места на дисках, необходимое для выполнения операций.
Ниже описаны действия, необходимые для резервного копирования ВМ в домен экспорта.
-
Наличие домена экспорта в центре данных с резервируемой ВМ.
2.2.1. Ручное резервное копирование
-
Авторизуйтесь на портале администрирования.
-
Перейдите в .
-
Выделите необходимую ВМ.
-
Нажмите и выберите Резервное копирование.
-
В появившемся окне убедитесь, что выбран подключенный домен экспорта.
Если в поле Домен хранения отсутствует подключенный домен экспорта, убедитесь, что:
-
Вы подключили его к правильному центру данных.
-
При подключении выбрана функция домена Экспорт.
-
-
Нажмите Начать.
Чтобы убедиться, что резервная копия сохранена в домене экспорта перейдите в , нажмите на имя домена экспорта для перехода в подробное представление, откройте вкладку Импортировать ВМ. В списке должна присутствовать резервная копия соответствующей ВМ.
2.2.2. Резервное копирование по расписанию
-
Авторизуйтесь на портале администрирования.
-
Перейдите в .
-
Выделите необходимую ВМ.
-
Нажмите и выберите Расписание резервных копий.
-
В появившемся окне:
-
Убедитесь, что выбран домен экспорта:
Если в поле Домен хранения отсутствует подключенный домен экспорта, убедитесь, что:
-
Вы подключили его к правильному центру данных.
-
При подключении выбрана функция домена Экспорт.
-
-
В поле Бэкап по расписанию выберите значение Включено.
-
В поле Расписание введите выражение в формате Quartz Cron для задания расписания резервного копирования. Подробнее о задании расписания в формате Quartz cron см. в разделе Использование формата Quartz cron для задания расписания.
-
В поле Количество хранимых копий укажите сколько резервных копий необходимо хранить в домене экспорта.
-
нажмите Сохранить
-
-
Убедитесь, что резервные копии создаются в соответствии с расписанием.
2.3. Восстановление ВМ из домена экспорта
Для восстановления ВМ из резервной копии в домене экспорта используйте процедуру, описанную в разделе Импортирование виртуальной машины из домена экспорта руководства по управлению ВМ.
2.4. Использование формата Quartz cron для задания расписания
При ручном вводе выражения, определяющего расписание запуска задачи, ожидается использование формата Quartz cron. Данный формат состоит из 7 полей, разделенных пробелом. Каждое поле имеет определённую значимость.
Поля могут содержать любые допустимые значения, а также различные комбинации разрешенных специальных символов для этого поля. Допустимые значения и символы представлены в таблице ниже
| Номер | Имя поля | Допустимые значения | Разрешенные специальные символы |
|---|---|---|---|
1 |
Секунды |
0-59 |
, - * / |
2 |
Минуты |
0-59 |
, - * / |
3 |
Часы |
0-23 |
, - * / |
4 |
День месяца |
1-31 |
, - * ? / L W |
5 |
Месяц |
1-12 или JAN-DEC |
, - * / |
6 |
День недели |
1-7 или SUN-SAT |
, - * ? / L # |
7 |
Год |
1970-2099 |
, - * / |
- Значение специальных символов
-
-
*(все значения) - используется для выбора всех значений в поле. Например,\*в поле минут означает «каждую минуту» -
?(любое значение) - полезно, когда нужно указать что-то в одном из двух полей, в которых этот символ разрешен, но не в другом. Например, если необходимо, чтобы задача запустилась в определенный день месяца (допустим, 10-го числа), но все равно, какой это будет день недели, то можно разместить10в поле "День месяца", а?- в поле "День недели". -
-- используется для указания диапазонов. Например,10-12в поле часов означает "часы 10, 11 и 12" -
,- используется для указания дополнительных значений. Например,MON,WED,FRIв поле "день недели" означает "дни понедельник, среда и пятница". -
/- используется для указания приращений. Например,0/15в поле секунд означает "секунды 0, 15, 30 и 45". А5/15в поле секунд означает "секунды 5, 20, 35 и 50". -
L(последний) - имеет разное значение в каждом из двух полей, в которых оно разрешено. Например, значениеLв поле "день месяца" означает "последний день месяца" - 31 день для января, 28 день для февраля в невисокосные годы. Если это значение используется в поле дня недели само по себе, оно означает просто "7" или "SAT". Но если оно используется в поле дня недели после другого значения, оно означает "последнийxxxдень месяца" - например,6Lозначает "последняя пятница месяца". При использовании опцииLважно не указывать списки или диапазоны значений, так как вы получите путаные/неожиданные результаты. -
W(будний день) - используется для указания ближайшего к данному дню дня недели (понедельник-пятница). Например, если вы укажете15Wв качестве значения для поля "День месяца", это будет означать: "ближайший будний день к 15 числу месяца". Таким образом, если 15-е число приходится на субботу, задача запустится в пятницу 14-го. Если 15-е число приходится на воскресенье, задача запустится в понедельник 16-го. Если 15-е число приходится на вторник, то задача запустится во вторник 15-го. Однако если вы укажете1Wв качестве значения дня месяца, а 1-е число будет субботой, задача запустится в понедельник 3-го числа, поскольку он не будет "перескакивать" через границу дней месяца. СимволWможет быть указан только в том случае, если день месяца - это один день, а не диапазон или список дней. -
#- используется для указания "n-го" XXX дня месяца. Например, значение6#3в поле "День недели" означает "третья пятница месяца" (день6= пятница, а#3= третий в месяце).
-
| Выражение | Значение |
|---|---|
|
Запуск в 12 часов дня каждый день |
|
Запуск в 10:15 утра каждый день |
|
Запуск в 10:15 утра каждый день в течение 2023 года |
|
Запуск каждую минуту, начиная с 14:00 и заканчивая 14:59, каждый день |
|
Запуск каждые 5 минут, с 14:00 и до 14:55, а также с 18:00 и до 18:55, каждый день |
|
Запуск в 10:15 утра каждый понедельник, вторник, среду, четверг и пятницу |
|
Запуск в 10:15 утра в последний день каждого месяца |
|
Запуск в 10:15 утра в третью пятницу каждого месяца |
3. Резервное копирование и восстановление виртуальных машин с помощью API резервного копирования и восстановления
3.1. API резервного копирования и восстановления
API резервного копирования и восстановления - это набор функций, которые позволяют выполнять полное или пофайловое резервное копирование и восстановление виртуальных машин. API сочетает в себе ряд компонентов zVirt (таких как создаваемые на лету снимки и REST API) для создания и использования временных томов, которые можно подключить к виртуальной машине, содержащей ПО резервного копирования, предоставленное независимым поставщиком ПО.
Информацию о поддерживаемых сторонних вендорах ПО резервного копирования см. на официальном сайте в разделе Совместимое ПО и оборудование.
3.2. Резервное копирование виртуальной машины
Используйте API резервного копирования и восстановления для создания резервной копии виртуальной машины. Эта процедура предполагает, что у вас есть две виртуальные машины:
-
виртуальная машина, резервную копию которой нужно сделать
-
резервирующая виртуальная машина - виртуальная машина, на которой установлено ПО для управления резервным копированием
-
Используя REST API, создайте снимок виртуальной машины, резервную копию которой нужно сделать:
POST /api/vms/`_{vm:id}_`/snapshots/ HTTP/1.1 (1) Accept: application/xml Content-type: application/xml <snapshot> <description>BACKUP</description> </snapshot>1 Замените {vm:id}идентификатором виртуальной машины, снимок которой вы делаете. Этот идентификатор можно посмотреть на вкладке Общие (General) окон Создать виртуальную машину (New Virtual Machine) и Изменить виртуальную машину (Edit Virtual Machine) на Портале администрирования и Пользовательским портале.При создании снимка виртуальной машины данные ее текущей конфигурации помещаются в атрибут data атрибута configuration блока initialization, расположенного под снимком. Невозможно делать снимки дисков, помеченных как общие или основанных на дисках Direct LUN. -
Получите данные конфигурации виртуальной машины из атрибута data соответствующего снимка:
GET /api/vms/`_{vm:id}_`/snapshots/`_{snapshot:id}_` HTTP/1.1 (1) (2) All-Content: true Accept: application/xml Content-type: application/xml1 Замените {vm:id}идентификатором виртуальной машины, снимок которой вы сделали ранее.2 Замените {snapshot:id}идентификатором снимка.Добавьте заголовок All-Content: true, чтобы получить дополнительные данные OVF в ответе. Данные OVF в XML-ответе находятся в элементе конфигурации виртуальной машины<initialization><configuration>. Позже вы будете использовать эти данные для восстановления виртуальной машины. -
Получите идентификатор снимка:
GET /api/vms/{vm:id}/snapshots/ HTTP/1.1 Accept: application/xml Content-type: application/xml -
Определите соответствующий снимку идентификатор диска:
GET /api/vms/`_{vm:id}_`/snapshots/`_{snapshot:id}_`/disks HTTP/1.1 Accept: application/xml Content-type: application/xml -
Подключите к резервирующей виртуальной машине снимок как активный диск, используя корректный тип интерфейса (например, virtio_scsi):
POST /api/vms/`_{vm:id}_`/diskattachments/ HTTP/1.1 (1) Accept: application/xml Content-type: application/xml <disk_attachment> <active>true</active> <interface>_virtio_scsi_</interface> <disk id="_{disk:id}_"> (2) <snapshot id="_{snapshot:id}_"/> (3) </disk> </disk_attachment>1 Замените {vm:id}идентификатором резервирующей виртуальной машины, а не той виртуальной машины, снимок которой вы сделали ранее.2 Замените {disk:id}идентификатором диска.3 Замените {snapshot:id}идентификатором снимка. -
Используйте ПО резервного копирования на резервирующей виртуальной машине для резервного копирования данных со снимка, подключенного как диск.
-
Отключите снимок, подключенный как диск, от резервирующей виртуальной машины:
DELETE /api/vms/`_{vm:id}_`/diskattachments/`_{snapshot:id}_` HTTP/1.1 (1) (2) Accept: application/xml Content-type: application/xml1 Замените {vm:id}идентификатором резервирующей виртуальной машины, а не той виртуальной машины, снимок которой вы сделали ранее.2 Замените {snapshot:id}идентификатором снимка. -
При желании удалите снимок:
DELETE /api/vms/`_{vm:id}_`/snapshots/`_{snapshot:id}_` HTTP/1.1 (1) (2) Accept: application/xml Content-type: application/xml1 Замените {vm:id}идентификатором виртуальной машины, снимок которой вы сделали ранее.2 Замените {snapshot:id}идентификатором снимка.
Вы создали резервную копию состояния виртуальной машины в фиксированный момент времени с помощью ПО резервного копирования, установленного на отдельной виртуальной машине.
3.3. Восстановление виртуальной машины
Чтобы восстановить виртуальную машину, для которой была создана резервная копия, используйте API резервного копирования и восстановления. Эта процедура предполагает, что у вас есть резервирующая виртуальная машина, на которой установлено ПО, управлявшее предыдущей резервной копией.
-
На Портале администрирования создайте плавающий диск, на который нужно восстановить ВМ из резервной копии. Подробную информацию о порядке создания плавающего диска см. в разделе Создание виртуального диска.
-
Подключите диск к резервирующей виртуальной машине:
POST /api/vms/`_{vm:id}_`/disks/ HTTP/1.1 (1) Accept: application/xml Content-type: application/xml <disk id="_{disk:id}_"> (2) </disk>1 Замените {vm:id}на идентификатор (ID) резервирующей виртуальной машины, а не виртуальной машины, снимок которой вы сделали ранее.2 Замените {disk:id}на идентификатор диска, который вы получили во время резервного копирования виртуальной машины. -
Чтобы восстановить виртуальную машину из резервной копии на диск, используйте программу резервного копирования.
-
Отключите диск от резервирующей виртуальной машины
DELETE /api/vms/`_{vm:id}_`/disks/_{disk:id}_ HTTP/1.1 (1) (2) Accept: application/xml Content-type: application/xml <action> <detach>true</detach> </action>1 Замените {vm:id}на идентификатор (ID) резервирующей виртуальной машины, а не виртуальной машины, снимок которой вы сделали ранее.2 Замените {disk:id}на идентификатор диска. -
Создайте новую виртуальную машину, используя данные конфигурации восстанавливаемой виртуальной машины:
POST /api/vms/ HTTP/1.1 Accept: application/xml Content-type: application/xml <vm> <cluster> <name>cluster_name</name> </cluster> <name>_NAME_</name> <initialization> <configuration> <data> <!-- omitting long ovf data --> </data> <type>ovf</type> </configuration> </initialization> ... </vm>Чтобы при создании виртуальной машины переопределить любое из значений в ovf, переопределите элемент до или после элемента initialization. Не внутри элемента инициализации. -
Подключите диск к новой виртуальной машине:
POST /api/vms/`_{vm:id}_`/disks/ HTTP/1.1 (1) Accept: application/xml Content-type: application/xml <disk id="_{disk:id}_"> (2) </disk>1 Замените {vm:id}на идентификатор новой виртуальной машины[.underline], а не виртуальной машины, снимок которой вы сделали ранее.2 Замените {disk:id}на идентификатор диска.
Вы восстановили виртуальную машину из резервной копии, созданной с помощью API резервного копирования и восстановления.
4. Резервное копирование и восстановление виртуальных машин с помощью API инкрементного резервного копирования и восстановления
zVirt предоставляет API инкрементного резервного копирования, который можно использовать для создания полных резервных копий виртуальных дисков форматов QCOW2 или RAW или инкрементных резервных копий виртуальных дисков формата QCOW2 без создания каких-либо временных снимков. Резервные копии данных создаются в формате RAW независимо от того, в каком формате созданы резервные копии виртуального диска - QCOW2 или RAW. Можно восстанавливать гостевые данные формата RAW и диски формата RAW или QCOW2. API инкрементного резервного копирования входит в состав zVirt REST API. Можно создавать резервные копии как работающих, так и неработающих виртуальных машин.
Как разработчик, вы можете использовать API для разработки приложения резервного копирования.
- Особенности
-
Резервное копирование выполняется проще, быстрее и надежнее, чем при использовании API резервного копирования и восстановления. API инкрементного резервного копирования обеспечивает улучшенную интеграцию с приложениями резервного копирования; в него добавлена поддержка резервного копирования и восстановления гостевых данных формата RAW независимо от формата базового диска.
Если некорректная карта битов вызывает сбой резервного копирования, то можно удалить конкретную контрольную точку в цепочке резервного копирования. Запускать полное резервное копирование не нужно.
- Ограничения
-
-
Инкрементное резервное копирование можно выполнять только для дисков формата QCOW2, а не RAW. В процессе резервного копирования резервные копии данных сохраняются в формате RAW.
-
Данные можно восстановить только из резервных копий формата RAW.
-
Инкрементное восстановление не поддерживает восстановление снимков, существовавших на момент резервного копирования. При инкрементном восстановлении восстанавливаются только данные, а не структура томов или образов в снимках, существовавших на момент резервного копирования. Это ограничение обычно присутствует в решениях резервного копирования для других систем.
-
Обычно в решениях резервного копирования при инкрементном восстановлении восстанавливаются только данные, а не структура томов или образов в снимках, существовавших на момент резервного копирования.
-
Некорректное завершение работы виртуальной машины по любой причине может испортить карты битов на диске, что повредит всю цепочку резервного копирования. Восстановление из инкрементной резервной копии с помощью некорректной карты битов приведет к повреждению данных виртуальной машины.
-
Некорректную карту битов можно обнаружить только при запуске резервного копирования. Если на диске есть какие-либо поврежденные карты битов, то операция завершится ошибкой.
В следующей таблице описаны конфигурации дисков, поддерживающие инкрементное резервное копирование.
| При создании диска с помощью Портала администрирования вы задаете тип хранилища, тип предоставления дискового пространства, а также указываете, включено или отключено инкрементное резервное копирование. На основе этих настроек Менеджер управления определяет формат виртуального диска. |
| Тип хранилища | Политика выделения дискового пространства | Статус инкрементного резервного копирования | Формат виртуального диска |
|---|---|---|---|
блочное |
динамическое |
включено |
qcow2 |
блочное |
предварительно размеченное |
включено |
qcow2 (предварительно размеченный) |
файловое |
динамическое |
включено |
qcow2 |
файловое |
предварительно размеченное |
включено |
qcow2 (предварительно размеченный) |
блочное |
динамическое |
отключено |
qcow2 |
блочное |
предварительно размеченное |
отключено |
raw (предварительно размеченный) |
файловое |
динамическое |
отключено |
raw (динамически расширяемое) |
файловое |
предварительно размеченное |
отключено |
raw (предварительно размеченный) |
сеть |
Не применимо |
отключено |
raw |
lun |
Не применимо |
отключено |
raw |
4.1. Процесс инкрементного резервного копирования
Для резервного копирования дисков виртуальных машин, для которых уже включено инкрементное резервное копирование, приложение резервного копирования, использующее API инкрементного резервного копирования, должно соблюдать следующую последовательность:
-
Приложение резервного копирования использует REST API для поиска дисков виртуальной машины, которые нужно добавить в резервную копию. Добавляются только диски формата QCOW2.
-
Приложение резервного копирования запускает полное резервное копирование или инкрементное резервное копирование. Вызов API указывает идентификатор виртуальной машины, необязательный идентификатор предыдущей контрольной точки и список дисков для резервного копирования. Если в вызове API не указан идентификатор предыдущей контрольной точки, то начинается полное резервное копирование, охватывающее все данные на указанных дисках, исходя из текущего состояния каждого диска.
-
Менеджер управления подготавливает виртуальную машину к резервному копированию. Во время резервного копирования виртуальная машина может продолжать работать.
-
Приложение резервного копирования запрашивает у Менеджера управления статус резервного копирования до тех пор, пока он не сообщит о готовности начать резервное копирование.
-
При готовности начать резервное копирование приложение резервного копирования создаст объект imagetransfer для каждого диска, включенного в резервную копию.
-
Приложение резервного копирования получает список измененных блоков от ovirt-imageio для каждой передачи образов. Если список изменений недоступен, то приложение резервного копирования выдаст ошибку.
-
Приложение резервного копирования загружает измененные блоки в формате RAW из ovirt-imageio и сохраняет их на резервном носителе. Если список измененных блоков недоступен, то приложение резервного копирования может откатиться к копированию всего диска.
-
Приложение резервного копирования завершает все передачи образов.
-
Приложение резервного копирования завершает резервное копирование с помощью REST API.
4.2. Процесс инкрементного восстановления
Приложение резервного копирования, использующее API инкрементного резервного копирования, должно соблюдать следующую последовательность действий для восстановления дисков виртуальных машин, для которых были созданы резервные копии:
-
С помощью приложения резервного копирования пользователь выбирает точку восстановления, исходя из доступных резервных копий.
-
Приложение резервного копирования создает новый диск или снимок существующего диска для хранения восстановленных данных.
-
Приложение резервного копирования запускает передачу выгружаемого образа для каждого диска, задав для параметра
formatзначениеraw. Это позволяет конвертировать формат при выгрузке данных формата RAW на диск формата QCOW2. -
Приложение резервного копирования передает данные, включенные в эту точку восстановления, в imageio с помощью API.
-
Приложение резервного копирования завершает передачи образов.
4.3. Задачи, связанные с API инкрементного резервного копирования и восстановления
API инкрементного резервного копирования и восстановления описан в руководстве по REST API
Процесс резервного копирования и восстановления предусматривает выполнение следующих действий:
-
Включение инкрементного резервного копирования либо на новом, либо на существующем виртуальном диске:
-
На новом диске с помощью Портала администрирования
-
На существующем диске с помощью Портала администрирования
-
На новом или существующем диске с помощью вызова API
-
-
Поиск дисков, для которых включено инкрементное резервное копирование
-
Запуск полного резервного копирования
-
Запуск инкрементного резервного копирования
-
Завершение резервного копирования
-
Получение информации о резервной копии
-
Получение информации о дисках в резервной копии
-
Составление списка всех контрольных точек для виртуальной машины
-
Выдача информации по конкретной контрольной точке для виртуальной машины
-
Удаление контрольной точки конкретной виртуальной машины
-
Загрузка объекта imagetransfer для архивирования резервной копии
-
Выгрузка объекта imagetransfer для восстановления из резервной копии
-
Составление списка измененных блоков
-
Загрузка и выгрузка измененных блоков
4.3.1. Включение инкрементного резервного копирования на новом виртуальном диске
Включите инкрементное резервное копирование для виртуального диска, чтобы пометить, что он входит в состав инкрементного резервного копирования. При добавлении диска можно включить инкрементное резервное копирование для каждого диска либо с помощью REST API, либо на Портале администрирования. Создавать резервные копии существующих дисков, для которых не включено инкрементное резервное копирование, можно с помощью полного резервного копирования или так, как описано в разделах Резервное копирование и восстановление виртуальных машин с помощью Резервного домена хранения и Резервное копирование и восстановление виртуальных машин с помощью API резервного копирования и восстановления.
| Менеджер управления может добавить диск в инкрементное резервное копирование, даже если оно не включено на диске, но его можно включить, чтобы отслеживать, на каких дисков оно включено. |
Поскольку для инкрементного резервного копирования требуются диски в формате QCOW2, используйте QCOW2 вместо RAW.
-
Добавьте новый виртуальный диск. Дополнительную информацию см. в разделе Создание виртуального диска.
-
При настройке параметров диска установите флажок Включить инкрементное резервное копирование (Enable Incremental Backup).
- Дополнительные ресурсы
4.3.2. Включение инкрементного резервного копирования на существующем виртуальном диске формата RAW
Поскольку инкрементное резервное копирование не поддерживается для дисков в формате RAW, для его использования на всех дисках формата RAW поверх должен существовать слой формата QCOW2. При создании снимка создается слой QCOW2, делающий возможным инкрементное резервное копирование на все диски, включенные в снимок, с точки, в которой создается снимок.
| Если на базовом слое диска используется формат RAW, то удаление последнего снимка и объединение верхнего слоя QCOW2 с базовым слоем преобразует диск в формат RAW, тем самым отключая инкрементное резервное копирование, если оно было установлено. Чтобы снова включить инкрементное резервное копирование, можно создать новый снимок, включающий в себя этот диск. |
-
На Портале администрирования нажмите .
-
Выберите виртуальную машину и откройте вкладку Диски (Disks).
-
Нажмите Изменить (Edit). Откроется диалоговое окно Изменить виртуальный диск (Edit Virtual Disk).
-
Установите флажок Включить инкрементное резервное копирование (Enable Incremental Backup).
- Дополнительные ресурсы
4.3.3. Включение инкрементного резервного копирования с помощью API
Вы можете использовать запрос по REST API, чтобы включить инкрементное резервное копирование для диска виртуальной машины.
-
Включите инкрементное резервное копирование для нового диска. Например, для нового диска на виртуальной машине с идентификатором
123отправьте запрос:POST /ovirt-engine/api/vms/123/diskattachmentsТело этого запроса должно включать в себя параметр
backup, установленный в значениеincremental, в составе объектаdisk, как показано ниже:<disk_attachment> ... <disk> ... <backup>incremental</backup> ... </disk> </disk_attachment>Ответ:
<disk_attachment> ... <disk href="/ovirt-engine/api/disks/456" id="456"/> ... </disk_attachment>- Дополнительные ресурсы
-
Раздел DiskBackup enum в руководстве REST API
4.3.4. Поиск дисков, на которых включено инкрементное резервное копирование
Для указанной виртуальной машины можно вывести список дисков, на которых включено инкрементное резервное копирование, отфильтрованных по свойству резервного копирования.
-
Выведите список дисков, подключенных к виртуальной машине. Например, для виртуальной машины с идентификатором
123отправьте запрос:GET /ovirt-engine/api/vms/123/diskattachmentsОтвет включает в себя все объекты
disk_attachment, каждый из которых включает в себя один или несколько объектовdisk. Например:<disk_attachments> <disk_attachment> ... <disk href="/ovirt-engine/api/disks/456" id="456"/> ... </disk_attachment> ... </disk_attachments> -
Используйте службу disk, чтобы просмотреть свойства диска из предыдущего шага. Например, для диска с идентификатором
456отправьте запрос:GET /ovirt-engine/api/disks/456Ответ включает в себя все свойства для диска. Параметр
backupустановлен в значениеnoneилиincremental. Например:<disk href="/ovirt-engine/api/disks/456" id="456"> ... <backup>incremental</backup> ... </disk>- Дополнительные ресурсы
-
-
Атрибут backup раздела Disk struct в руководстве REST API
-
Раздел DiskBackup enum в руководстве REST API
-
4.3.5. Запуск полного резервного копирования с помощью API
После полного резервного копирования можно использовать полученный идентификатор контрольной точки в качестве начальной точки для следующего инкрементного резервного копирования.
При резервном копировании работающей виртуальной машины процесс создает временный диск в том же домене хранения, в котором находится копируемый диск. Процесс резервного копирования создает этот диск, чтобы сделать возможной запись новых данных на работающую виртуальную машину во время резервного копирования. Этот временный диск можно увидеть на Портале администрирования во время резервного копирования. По завершении резервного копирования он автоматически удаляется.
Запуск полного резервного копирования требует вызова запроса с телом и включает в себя ответ.
-
Отправьте запрос с указанием виртуальной машины, с которой нужно снять резервную копию. Например, укажите виртуальную машину с идентификатором
123следующим образом:POST /ovirt-engine/api/vms/123/backups -
В теле запроса укажите диск, с которого нужно снять резервную копию. Например, чтобы запустить полное резервное копирование диска с идентификатором
456, отправьте запрос со следующим телом:<backup> <disks> <disk id="456" /> ... </disks> </backup>Тело ответа должно выглядеть примерно так:
<backup id="789"> <disks> <disk id="456" /> ... ... </disks> <status>initializing</status> <creation_date> </backup>Ответ включает в себя:
-
Идентификатор резервной копии
-
Статус резервной копии, указывающий, что она инициализируется.
-
-
Опрос резервной копии до появления статуса
ready(готова). Ответ включает в себя идентификатор конечной контрольной точки (to_checkpoint_id). Обратите внимание на этот идентификатор и используйте его для задания начальной контрольной точки (from_checkpoint_id) при следующем инкрементном резервном копировании.- Дополнительные ресурсы
-
-
Метод
addслужбы VmBackups в руководстве REST API
-
4.3.6. Запуск инкрементного резервного копирования с помощью API
После завершения полного резервного копирования данного виртуального диска последующие инкрементные резервные копии этого диска будут содержать только изменения, внесенные с момента последнего резервного копирования. Используйте значение идентификатора конечной контрольной точки (to_checkpoint_id) из последней резервной копии в качестве значения для идентификатора начальной контрольной точки (from_checkpoint_id) в теле запроса.
При резервном копировании работающей виртуальной машины процесс создает временный диск в том же домене хранения, в котором находится копируемый диск. Процесс резервного копирования создает этот диск, чтобы сделать возможной запись новых данных на работающую виртуальную машину во время резервного копирования. Этот временный диск можно увидеть на Портале администрирования во время резервного копирования. По завершении резервного копирования он автоматически удаляется.
Запуск инкрементного или смешанного резервного копирования требует вызова запроса с телом и включает в себя ответ.
-
Отправьте запрос с указанием виртуальной машины, с которой нужно снять резервную копию. Например, укажите виртуальную машину с идентификатором
123следующим образом:POST /ovirt-engine/api/vms/123/backups -
В теле запроса укажите диск, с которого нужно снять резервную копию. Например, чтобы запустить инкрементное резервное копирование диска с идентификатором
456, отправьте запрос со следующим телом:<backup> <from_checkpoint_id>__previous-checkpoint-uuid__</from_checkpoint_id> <disks> <disk id="456" /> ... </disks> </backup>Если в тело запроса включить диск, не включенный в предыдущую контрольную точку, то запрос также запустит полное резервное копирование этого диска. Пусть, например, с диска с идентификатором 789 резервная копия еще не снималась. Чтобы добавить полное резервное копирование диска 789 к вышеприведенному телу запроса, отправьте тело запроса следующего вида:
<backup> <from_checkpoint_id>__previous-checkpoint-uuid__</from_checkpoint_id> <disks> <disk id="456" /> <disk id="789" /> ... </disks> </backup>Тело ответа должно выглядеть примерно так:
<backup id="101112"> <from_checkpoint_id>__previous-checkpoint-uuid__</from_checkpoint_id> <to_checkpoint_id>__new-checkpoint-uuid__</to_checkpoint_id> <disks> <disk id="456" /> <disk id="789" /> ... ... </disks> <status>initializing</status> <creation_date> </backup>Ответ включает в себя:
-
Идентификатор резервной копии.
-
Идентификатор любого диска, который был включен в резервную копию.
-
Статус, указывающий, что резервная копия инициализируется.
-
-
Опрос резервной копии до появления статуса
ready(готова). Ответ включает в себя идентификатор конечной контрольной точки (to_checkpoint_id). Обратите внимание на этот идентификатор и используйте его для задания начальной контрольной точки (from_checkpoint_id) при следующем инкрементном резервном копировании.- Дополнительные ресурсы
-
-
Метод
addслужбы VmBackups в руководстве REST API
-
4.3.7. Получение информации о резервной копии с помощью API
Можно получить информацию о резервной копии, которую можно использовать для запуска нового инкрементного резервного копирования.
Метод list службы VmBackups возвращает следующую информацию о резервной копии:
-
идентификатор каждого диска, с которого была снята резервная копия
-
идентификаторы начальной и конечной контрольных точек резервного копирования
-
идентификатор образа диска в резервной копии, для каждого диска, включенного в процесс резервного копирования
-
статус резервной копии
-
дату создания резервной копии
Когда параметр <status> имеет значение ready (готова), ответ включает в себя идентификатор конечной контрольной точки (to_checkpoint_id), который следует использовать в качестве идентификатора начальной контрольной точки (from_checkpoint_id) при следующем инкрементном резервном копировании, и можно начать загрузку дисков, чтобы выполнить резервное копирование хранилища виртуальной машины.
-
Чтобы получить информацию о резервной копии с идентификатором
456виртуальной машины с идентификатором123, отправьте запрос следующего вида:GET /ovirt-engine/api/vms/456/backups/123Ответ включает в себя резервную копию с идентификатором
456с идентификатором начальной контрольной точки (from_checkpoint_id)999и идентификатором конечной контрольной точки (to_checkpoint_id)666. Диски, включенные в резервную копию, указаны в элементе<link>.<backup id="456"> <from_checkpoint_id>999</from_checkpoint_id> <to_checkpoint_id>666</to_checkpoint_id> <link href="/ovirt-engine/api/vms/456/backups/123/disks" rel="disks"/> <status>ready</status> <creation_date> </backup>- Дополнительные ресурсы
-
Метод
listслужбы VmBackups в руководстве REST API
4.3.8. Получение информации о дисках в резервной копии
Можно получить информацию о дисках, которые входят в состав резервной копии, включая режим резервного копирования, который использовался для каждого диска в резервной копии, что помогает определить режим, используемый для загрузки резервной копии.
Метод list службы VmBackupDisks возвращает следующую информацию о резервной копии:
-
Идентификатор и имя каждого диска, с которого была снята резервная копия.
-
Идентификатор образа диска в резервной копии, для каждого диска, включенного в процесс резервного копирования
-
Формат диска.
-
Режим резервного копирования, поддерживаемый диском.
-
Тип резервного копирования, использованный для диска (полное/инкрементное).
-
Чтобы получить информацию о резервной копии с идентификатором
456виртуальной машины с идентификатором123, отправьте запрос следующего вида:GET /ovirt-engine/api/vms/456/backups/123/disksОтвет включает в себя диск с идентификатором
789, а идентификатор образа диска -555.<disks> <disk id="789"> <name>vm1_Disk1</name> <actual_size>671744</actual_size> <backup>incremental</backup> <backup_mode>full</backup_mode> <format>cow</format> <image_id>555</image_id> <qcow_version>qcow2_v3</qcow_version> <status>locked</status> <storage_type>image</storage_type> <total_size>0</total_size> </disk> </disks>- Дополнительные ресурсы
-
Метод
listслужбы VmBackupDisks в руководстве REST API
4.3.9. Завершение резервного копирования
При завершении резервного копирования оканчивается процесс резервного копирования, разблокируются ресурсы и производится очистка. Используйте служебный метод резервного копирования finalize
-
Чтобы завершить резервное копирование диска с идентификатором
456на виртуальной машине с идентификатором123, отправьте запрос следующего вида:POST /vms/123/backups/456/finalize- Дополнительные ресурсы
-
finalize POST в руководстве REST API.
4.3.10. Создание объекта imagetransfer для инкрементного резервного копирования
Когда резервная копия готова к загрузке, приложение резервного копирования должно создать объект imagetransfer, который инициирует перенос инкрементной резервной копии.
Создание объекта imagetransfer требует вызова запроса с телом.
-
Отправьте запрос следующего вида:
POST /ovirt-engine/api/imagetransfers -
В теле запроса укажите следующие параметры:
-
идентификатор диска (
disk id) -
идентификатор резервной копии (
backup id) -
направление передачи для диска должно быть установлено в значение
download -
формат для диска установлен в значение
raw
Например, чтобы перенести резервную копию диска с идентификатором диска
123и идентификатором резервной копии456, отправьте следующее тело запроса:<image_transfer> <disk id="123"/> <backup id="456"/> <direction>download</direction> <format>raw</format> </image_transfer>- Дополнительные ресурсы
-
-
Метод
addдля создания объекта imagetransfer в руководстве REST API.
-
-
4.3.11. Создание объекта imagetransfer для инкрементного восстановления
Чтобы включить восстановление неформатированных (raw) данных из резервной копии с помощью API инкрементного резервного копирования на диск формата QCOW2, приложение резервного копирования должно создать объект imagetransfer.
Если формат переноса - raw, а формат базового диска - QCOW2, то выгружаемые данные на лету преобразуются в формат QCOW2 во время записи в хранилище. Выгрузка данных с диска QCOW2 на диск RAW не поддерживается.
Создание объекта imagetransfer требует вызова запроса с телом.
-
Отправьте запрос следующего вида:
POST /ovirt-engine/api/imagetransfers -
В теле запроса укажите следующие параметры:
-
идентификатор диска или идентификатор снимка
-
направление передачи для диска должно быть установлено в значение
upload -
формат для диска установлен в значение
raw
Например, чтобы перенести резервную копию диска с идентификатором диска
123, отправьте следующее тело запроса:<image_transfer> <disk id="123"/> <direction>upload</direction> <format>raw</format> </image_transfer>- Дополнительные ресурсы
-
-
Метод
addдля создания объекта imagetransfer в руководстве REST API.
-
-
4.3.12. Составление списка контрольных точек для виртуальной машины
Отправив запрос, можно получить список всех контрольных точек для виртуальной машины вместе с информацией о каждой контрольной точке.
-
Отправьте запрос с указанием виртуальной машины. Например, укажите виртуальную машину с идентификатором
123следующим образом:GET /vms/123/checkpoints/Ответ включает в себя все контрольные точки виртуальной машины. Каждая контрольная точка содержит следующую информацию:
-
Диски контрольной точки
-
Идентификатор родительской контрольной точки
-
Дата создания контрольной точки
-
Виртуальная машина, к которой она относится
Например:
<parent_id>, <creation_date> and the virtual machine it belongs to <vm>: <checkpoints> <checkpoint id="456"> <link href="/ovirt-engine/api/vms/vm-uuid/checkpoints/456/disks" rel="disks"/> <parent_id>parent-checkpoint-uuid</parent_id> <creation_date>xxx</creation_date> <vm href="/ovirt-engine/api/vms/123" id="123"/> </checkpoint> </checkpoints>- Дополнительные ресурсы
-
-
метод
listдля перечисления контрольных точек виртуальной машины в руководстве REST API.
4.3.13. Выдача информации о конкретной контрольной точке виртуальной машины
Можно получить информацию о конкретной контрольной точке виртуальной машины, отправив запрос.
-
Отправьте запрос с указанием виртуальной машины. Например, укажите виртуальную машину с идентификатором
123и идентификатором контрольной точки456как показано ниже:GET /vms/123/checkpoints/456В ответе будет дана следующая информация о контрольной точке:
-
Диски контрольной точки
-
Идентификатор родительской контрольной точки
-
Дата создания контрольной точки
-
Виртуальная машина, к которой она относится
Например:
<checkpoint id="456"> <link href="/ovirt-engine/api/vms/vm-uuid/checkpoints/456/disks" rel="disks"/> <parent_id>parent-checkpoint-uuid</parent_id> <creation_date>xxx</creation_date> <vm href="/ovirt-engine/api/vms/123" id="123"/> </checkpoint>- Дополнительные ресурсы
-
-
метод
listдля перечисления контрольных точек виртуальной машины в руководстве REST API.
4.3.14. Удаление контрольной точки
Можно удалить контрольную точку виртуальной машины, отправив запрос DELETE. Можно удалить контрольную точку виртуальной машины, независимо от того, работает ли ВМ или нет.
-
Отправьте запрос с указанием виртуальной машины и контрольной точки. Например, укажите виртуальную машину с идентификатором
123и контрольную точку с идентификатором456как показано ниже:DELETE /vms/123/checkpoints/456/- Дополнительные ресурсы
-
метод
removeслужбы VmCheckpoint в руководстве REST API.
4.3.15. Использование API imageio для передачи данных резервного копирования
API imagetransfer запускает и останавливает передачу образов. В результате появится URL-адрес передачи.
Используйте API imageio для фактической передачи данных из URL-адреса передачи.
| Запрос API (API request) | Описание |
|---|---|
|
Выводит параметры сервера, чтобы можно было узнать, какие функции поддерживает сервер. |
|
Выводит информацию о содержимом и выделении образа диска или о блоках, которые изменились во время инкрементного резервного копирования. Эта информация называется экстент (extent). |
|
Программа, выполняющая передачу образа, должна загрузить изменения из резервной копии. Эти изменения называются ожидающие записи экстенты (dirty extents). |
|
Приложение резервного копирования создает новый диск или снимок существующего диска для хранения восстановленных данных. |