Product SiteDocumentation Site

Глава 33. Резервные копии

33.1. Хранилище резервных копий: Restic
33.1.1. Настройка сервера резервного копирования
33.1.2. Создание хранилища резервных копий в OpenNebula
33.1.3. Обслуживание и устранение неполадок
33.2. Хранилище резервных копий: Rsync
33.2.1. Настройка сервера резервного копирования
33.2.2. Создание хранилища резервных копий в OpenNebula
33.2.3. Обслуживание и устранение неполадок
33.3. Настройка резервного копирования
33.3.1. Через шаблон ВМ
33.3.2. Через ВМ
33.4. Выполнение резервного копирования
33.4.1. Разовое копирование (One-shot)
33.4.2. Планируемое копирование
33.4.3. Отмена операции резервного копирования
33.5. Просмотр резервных копий
33.6. Восстановление резервных копий
33.6.1. Восстановление на месте (In-place restore)
33.6.2. Полное восстановление (Full restore)
33.7. Дополнительные возможности
33.7.1. Квоты и управление доступом
33.7.2. Многоуровневые политики резервного копирования
OpenNebula поддерживает два подхода к резервному копированию:
  • резервное копирование отдельной ВМ — управление копиями для конкретной ВМ (подходит для небольшого числа ВМ);
  • задания резервного копирования (Backup Jobs) — централизованное управление копиями для группы ВМ.
Поддерживаемые типы резервных копий:
  • полная (Full) — каждая копия содержит полный образ всех дисков ВМ;
  • инкрементальная (Incremental) — копируются только изменения с момента последней копии. Отслеживание изменений выполняется с использованием контрольных точек (dirty bitmap в QEMU).

Примечание

Для возможности создания инкрементальных резервных копий на узлах виртуализации необходимо установить пакет libnbd:
# apt-get install libnbd
Для дисков формата qcow2 инкрементальное копирование может работать в двух режимах, задаваемых параметром INCREMENT_MODE:
  • CBT (по умолчанию) — отслеживание изменений с помощью bitmap внутри того же файла диска;
  • SNAPSHOT — создание отдельного снимка диска, в котором накапливаются изменения.
Особенности для Ceph (RBD):
  • Полные копии: экспорт RBD → преобразование в qcow2 → хранение. Восстановление выполняется в обратном порядке: qcow2 → RAW → импорт в пул Ceph.
  • Инкрементальные копии: данные хранятся в нативном формате Ceph (rbd export --export-format 2). Восстановление выполняется путём импорта базового образа с последовательным применением diff-файлов.
Копирование может выполняться:
  • в горячем режиме (live-backup, для KVM);
  • при выключенной ВМ.
Процесс резервного копирования состоит из трёх этапов:
  1. Подготовка (Pre-backup):
    • файловые системы гостевой ОС замораживаются (через QEMU Guest Agent либо путём приостановки ВМ);
    • создаются временные структуры, позволяющие ВМ продолжить работу;
    • все диски копируются одновременно для обеспечения согласованности данных (crash-consistent).
  2. Копирование (Backup):
    • полные образы или инкременты передаются в хранилище резервных копий;
    • используются драйверы целевого хранилища (например, restic).
  3. Завершение (Post-backup):
    • временные файлы и вспомогательные структуры на узле гипервизора удаляются.

Примечание

Все диски формата RAW автоматически преобразуются в формат qcow2 для экономии дискового пространства.
Ограничения:
  • инкрементальное копирование доступно только для гипервизора KVM и дисков формата qcow2 или RBD;
  • горячее копирование поддерживается только для KVM;
  • при подключении нового диска к ВМ с существующей инкрементальной цепочкой возникнет ошибка. Решение — использовать флаг --reset для создания новой цепочки резервных копий;
  • инкрементальное копирование не поддерживается, если у ВМ существуют снимки дисков или системные снимки.

33.1. Хранилище резервных копий: Restic

Restic — инструмент резервного копирования с открытым исходным кодом, ориентированный на высокую скорость, безопасность и эффективность. В OpenNebula драйвер Restic использует протокол SFTP для передачи и хранения данных.
Ключевые возможности Restic:
  • дедупликация — передаются только те блоки данных, которых ещё нет в репозитории;
  • сжатие — включено по умолчанию;
  • шифрование — все данные шифруются с использованием пароля репозитория.
Терминология:
  • репозиторий — хранилище, в котором размещаются резервные копии. Restic создаёт собственную структуру каталогов и работает с ней через SFTP. Для каждой ВМ или задания резервного копирования создаётся отдельный репозиторий;
  • снимок (Snapshot) — отдельная резервная копия, идентифицируемая уникальным хешем (например, bda78f31). Снимок включает все диски ВМ и её метаданные на момент создания;
  • сервер резервного копирования — выделенный узел, на котором размещаются репозитории Restic и резервные копии ВМ.

33.1.1. Настройка сервера резервного копирования

Настройка сервера резервного копирования:
  1. Подготовьте выделенный сервер с достаточным объёмом дискового пространства (например, отдельный iSCSI- или LVM-том).
  2. Создайте учётную запись oneadmin:
    # useradd -m -u 9869 oneadmin
    # passwd oneadmin
    
  3. Настройте беспарольный SSH-доступ:
    • скопируйте открытый SSH-ключ (~oneadmin/.ssh/id_rsa.pub) с узла управления OpenNebula и узлов виртуализации в файл ~oneadmin/.ssh/authorized_keys на сервере резервного копирования:
      $ ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub <сервер_резервного_копирования>
      
    • убедитесь, что подключение с узла управления OpenNebula и узлов виртуализации выполняется без запроса пароля:
      $ ssh <сервер_резервного_копирования>
      
  4. Создайте каталог для хранения репозиториев и назначьте владельца:
    # mkdir -p /var/lib/one/datastores
    # chown oneadmin:oneadmin /var/lib/one/datastores
    
  5. Смонтируйте том хранения в каталог /var/lib/one/datastores, например:
    # mount /dev/vgBackup/lvBackup /var/lib/one/datastores
    

    Примечание

    В примере используется LVM-том vgBackup/lvBackup, смонтированный в /var/lib/one/datastores.
  6. Установите необходимые пакеты:
    # apt-get install rsync qemu-img
    

33.1.2. Создание хранилища резервных копий в OpenNebula

Примечание

На узле управления должен быть установлен пакет restic:
# apt-get install restic
# cp /usr/bin/restic /var/lib/one/remotes/datastore/restic/restic
После установки необходимо синхронизировать файлы со всеми узлами кластера:
$ onehost sync -f
На узлах виртуализации должен появиться файл /var/tmp/one/datastore/restic/restic.
Для создания хранилища резервных копий с использованием конфигурационного файла:
  1. Создайте шаблон хранилища ds_restic.conf:
    NAME                = "RBackups"
    TYPE                = "BACKUP_DS"
    DS_MAD              = "restic"
    TM_MAD              = "-"
    RESTIC_SFTP_USER    = "oneadmin"
    RESTIC_PASSWORD     = "opennebula"
    RESTIC_SFTP_SERVER  = "192.168.0.197"
    
  2. Зарегистрируйте хранилище:
    $ onedatastore create ds_restic.conf
    ID: 100
    
Для создания хранилища резервных копий Restic необходимо указать следующие параметры:
  • NAME — название хранилища;
  • TYPE — BACKUP_DS;
  • DS_MAD — restic;
  • RESTIC_SFTP_USER — пользователь на сервере резервного копирования;
  • RESTIC_PASSWORD — пароль для шифрования репозитория Restic;
  • RESTIC_SFTP_SERVER — IP-адрес или имя сервера резервного копирования.

Важно

Сервер, указанный в RESTIC_SFTP_SERVER, должен быть доступен как с узла управления, так и со всех узлов гипервизора.
Хранилище резервных копий Restic также можно создать через веб-интерфейс Sunstone:
Хранилище резервных копий Restic
После успешной регистрации:
$ onedatastore list
  ID NAME                 SIZE AVA CLUSTERS IMAGES TYPE DS      TM      STAT
 100 RBackups            134.7G 76% 0             0 bck  restic  -       on
Теперь можно создавать резервные копии ВМ.

33.1.3. Обслуживание и устранение неполадок

33.1.3.1. Очистка репозитория (prune)

Незадействованные данные автоматически удаляются при:
  • удалении снимков вручную;
  • применении политики хранения (retention policy).
Операция выполняется командой restic prune, которая запускается OpenNebula автоматически.

33.1.3.2. Разблокировка репозитория

Если репозиторий остался заблокированным (например, после сбоя), может появиться ошибка:
unable to create lock in backend: repository is already locked...
Чтобы разблокировать репозиторий:
  1. Убедитесь, что нет активных операций резервного копирования.
  2. Выполните на узле управления:
    $ restic -r sftp:oneadmin@192.168.0.197:/var/lib/one/datastores/<ID_хранилища>/<ID_ВМ> \
      --password-file <(echo "opennebula") unlock --remove-all
    

33.1.3.3. Ограничение нагрузки на I/O и CPU

Операции резервного копирования могут создавать значительную нагрузку. OpenNebula поддерживает следующие механизмы ограничения:
  • приоритет процессов (через nice и ionice);
  • ограничение ресурсов с помощью cgroups (через systemd-срезы).
Для использования cgroups необходимо делегировать контроллеры cpu и io пользователю oneadmin на всех узлах:
  1. Создайте файл:
    # /etc/systemd/system/user@9869.service.d/delegate.conf
    [Service]
    Delegate=cpu cpuset io
    
  2. После перезагрузки узла проверьте:
    $ cat /sys/fs/cgroup/user.slice/user-9869.slice/cgroup.controllers
    cpuset cpu io memory pids
    

33.1.3.4. Изменение временного каталога резервного копирования

По умолчанию временные файлы резервной копии создаются в каталоге /var/lib/one/datastores/<ID_хранилища>/<ID_ВМ>/backup.
Чтобы изменить путь на всех узлах, отредактируйте параметр BACKUP_BASE_PATH в файле /var/lib/one/remotes/etc/datastore/datastore.conf.