Структура хранилища резервных копий
Резервные копии всех машин хранятся в директории, указанной в конфигурации (см. п. Настройка конфигурационного файла, параметр storage_dir).
Примерный вид структуры резервных копий (одна ВМ с одним чек-пойнтом и двумя дисками):
backups/
└── vm_a8a53919-c5ea-4199-846c-1f532d73e6a0
├── .meta
├── options.json
├── checkpoint.map
└── cp_e618229f-2096-47eb-a371-be8581fceb90
├── config.ovf
├── db_59189b1a-7c11-4725-8c4e-8fda35339a47.qcow2
└── dn_16b20599-b0ef-471b-b108-f3c567ac7e53.qcow2
2 directories, 7 files
```
Каждая ВМ имеет свою директорию, которая хранит карту чек-пойнтов checkpoint.map, чек-пойнты, индивидуальные настройки для резервной копии ВМ options.json и временный файл .meta. Каждый чек-пойнт представляет собой директорию содержащую:
- сохраненные состояния дисков;
- конфигурацию ВМ config.ovf в формате Open Virtualization Format.
Форматы названий файлов
vm_<UUID> ‒ директория ВМ, где <UUID> ‒ уникальный идентификатор ВМ.
vm_<UUID>_backup ‒ копия директории ВМ (существует в процессе ротации), где <UUID> ‒ уникальный идентификатор ВМ.
cp_<UUID> ‒ директория чек-пойнта, где <UUID> ‒ уникальный идентификатор чек-пойнта ВМ.
db_<UUID>.qcow2 ‒ сохраненное состояние загрузочного диска в формате qcow2, где:
<UUID>‒ уникальный идентификатор диска ВМ;db_‒ disk bootable (загрузочный диск).
dn_<UUID>.qcow2 ‒ сохраненное состояние незагрузочного диска в формате qcow2, где:
<UUID>‒ уникальный идентификатор диска ВМ;dn_‒ disk nonbootable (не загрузочный диск).
.meta ‒ файл, содержащий метаданные о текущем резервном копировании; создается при старте резервного копирования; удаляется при успешном завершении.
options.json ‒ файл, содержащий индивидуальные настройки для резервной копии ВМ, например настройки ротации.
Примечание:
checkpoint.map‒ файл формата JSON.config.ovf‒ файл формата .xml с пространствами имен.
Карта чек-пойнтов
checkpoint.map ‒ файл JSON-формата, который содержит карту чек-пойнтов.
Примерное содержимое:
{
"id": "cb0207c6-765b-4eb4-82b8-16610340b7de",
"type": "full",
"datetime": "29.08.2022 14:55:25 +0300",
"comment": "init checkpoint",
"vm_id": "a8a53919-c5ea-4199-846c-1f532d73e6a0",
"nodes": [
{
"id": "ec47068c-98e1-462b-afa3-e4fd0844615a",
"type": "incremental",
"datetime": "29.08.2022 15:09:50 +0300",
"comment": "necessary soft installed",
"parent": "cb0207c6-765b-4eb4-82b8-16610340b7de",
"nodes": [],
"disks": [
{
"id": "59189b1a-7c11-4725-8c4e-8fda35339a47",
"type": "bootable",
"sha256": "5c5f841406e1bc947900fddc969e0ae32bd20d70ebe6769d0a2f04f2cd73fb60",
"path": "backups/vm_a8a53919-c5ea-4199-846c-1f532d73e6a0/cp_ec47068c-98e1-462b-afa3-e4fd0844615a/db_59189b1a-7c11-4725-8c4e-8fda35339a47.qcow2"
},
{
"id": "16b20599-b0ef-471b-b108-f3c567ac7e53",
"type": "nonbootable",
"sha256": "a1c469967edda2370581d8cd71b45bcbdf75ec2516802284b68973315ca7e234",
"path": "backups/vm_a8a53919-c5ea-4199-846c-1f532d73e6a0/cp_ec47068c-98e1-462b-afa3-e4fd0844615a/dn_16b20599-b0ef-471b-b108-f3c567ac7e53.qcow2"
}
]
}
],
"disks": [
{
"id": "59189b1a-7c11-4725-8c4e-8fda35339a47",
"type": "bootable",
"sha256": "32167d7feb747ae1e112bce489d7fd5be76c9c689d5370f731146d2cba9f5b43",
"path": "backups/vm_a8a53919-c5ea-4199-846c-1f532d73e6a0/cp_cb0207c6-765b-4eb4-82b8-16610340b7de/db_59189b1a-7c11-4725-8c4e-8fda35339a47.qcow2"
},
{
"id": "16b20599-b0ef-471b-b108-f3c567ac7e53",
"type": "nonbootable",
"sha256": "5b273b75009f82b7bb2085061e6060374d8dea35decd5103952e9bcabd9dba2b",
"path": "backups/vm_a8a53919-c5ea-4199-846c-1f532d73e6a0/cp_cb0207c6-765b-4eb4-82b8-16610340b7de/dn_16b20599-b0ef-471b-b108-f3c567ac7e53.qcow2"
}
]
}
В примере карта чек-пойнтов содержит два чек-пойнта. Чек-пойнт имеет следующие поля:
id‒ UUID чек-пойнта;type‒ тип резервной копии: инкрементальная (incremental) или полная (full);datetime‒ время создания чек-пойнта в формате %d.%m.%Y %H:%M:%S %z;comment‒ комментарий к чек-пойнту;vm_id‒ UUID ВМ. Это поле существует только для корневого чек-пойнта;parent‒ UUID родительского(предыдущего) чек-пойнта. Это поле существует только для некорневого чек-пойнта;nodes‒ список последующих чек-пойнтов, зависимых от текущего;disks‒ список дисков, которые содержит чек-пойнт.
Диск в карте чек-пойнтов имеет следующие поля:
id‒ UUID диска;type‒ тип диска. Возможные значения:bootable‒ загрузочный диск;nonbootable‒ незагрузочный диск;hibermemory‒ состояние ВМ перед гибернацией;hibermeta‒ метаинформация о диске c типом hibermemory.sha256‒ контрольная сумма, рассчитанная с использованием алгоритма SHA256;path‒ путь к диску в директории, где хранятся резервные копии.
Примечание ‒ Карта чек-пойнтов проходит проверку при сохранении. Приложение выдаст ошибку, если:
- чек-пойнт-родитель младше (по времени создания) чек-пойнта-потомка;
- чек-пойнт-родитель содержит потомка, чье поле parent отлично от родительского поля UUID.
Опции резервного копирования ВМ
options.json ‒ файл JSON-формата, содержащий индивидуальные настройки резервных копий для ВМ. Этот файл должен находиться в директории ВМ хранилища резервных копий.
Важно – Настройки, содержащиеся в этом файле, имеют более высокий приоритет, чем настройки, содержащиеся в конфигурации rv-backup, но менее приоритетные, чем заданные в качестве параметров командной строки.
Примечание ‒ Этот файл может отсутствовать. В таком случае будут использованы настройки из других источников, например, из командной строки или конфигурации rv-backup.
Примечание‒ Также отсутствовать могут конкретные параметры внутри options.json, в таком случае они будут взяты из других доступных источников.
Примерное содержимое:
{
"rotation_threshold_checkpoints_count": 5,
"rotation_threshold_backup_size": "5GB"
}
```
где:
rotation_threshold_checkpoints_count‒ см. одноименный параметр в конфигурации;rotation_threshold_backup_size‒ см. одноименный параметр в конфигурации.