Product SiteDocumentation Site

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

Все настройки можно выполнять как в веб-интерфейсе, так и в командной строке.

Примечание

Если при работе с новой лентой возникает ошибка
TASK ERROR: media read error - read failed - Blank Check, Additional sense: End-of-data not found
необходимо выполнить команду:
# pmt rewind

57.10.3.1. Устройства смены лент (Tape changers)

Этот шаг можно пропустить, если используется автономный диск.
Устройства смены лент (роботы) являются частью ленточной библиотеки. Они содержат несколько слотов для картриджей с лентой, считыватель штрих-кода для идентификации картриджей с лентой и автоматизированный метод загрузки лент.
Получить список доступных устройств:
# proxmox-tape changer scan
┌─────────────────────────────┬─────────┬──────────────┬────────┐
│ path                        │ vendor  │ model        │ serial │
╞═════════════════════════════╪═════════╪══════════════╪════════╡
│ /dev/tape/by-id/scsi-CC2C52 │ Quantum │ Superloader3 │ CC2C52 │
└─────────────────────────────┴─────────┴──────────────┴────────┘
Чтобы использовать устройство с PBS, необходимо создать запись конфигурации, например:
# proxmox-tape changer create CHGR1 --path /dev/tape/by-id/scsi-CC2C52
где CHGR1 — произвольное имя.

Примечание

Так как имена типа /dev/sg* могут после перезагрузки указывать на другое устройство, необходимо использовать постоянные имена путей к устройствам, например, /dev/tape/by-id/.
Операцию добавления устройства смены лент также можно выполнить в веб-интерфейсе. Для этого в разделе Резервное копирование на лентуСменщики, необходимо нажать кнопку Добавить:
Резервное копирование на ленту. Устройства смены лент
Откроется диалоговое окно, в котором необходимо указать имя и выбрать устройство:
Резервное копирование на ленту. Добавление нового устройства смены ленты
Просмотреть получившуюся конфигурацию можно, выполнив команду:
# proxmox-tape changer config CHGR1
┌──────┬─────────────────────────────┐
│ Name │ Value                       │
╞══════╪═════════════════════════════╡
│ name │ CHGR1                       │
├──────┼─────────────────────────────┤
│ path │ /dev/tape/by-id/scsi-CC2C52 │
└──────┴─────────────────────────────┘
Вывести все настроенные устройства:
# proxmox-tape changer list
┌──────┬─────────────────────────────┬─────────┬──────────────┬────────────┐
│ name │ path                        │ vendor  │ model        │ serial     │
╞══════╪═════════════════════════════╪═════════╪══════════════╪════════════╡
│ CHGR1│ /dev/tape/by-id/scsi-CC2C52 │ Quantum │ Superloader3 │ CC2C52     │
└──────┴─────────────────────────────┴─────────┴──────────────┴────────────┘
Производитель, модель и серийный номер определяются автоматически, но отображаются только в том случае, если устройство подключено к сети.
Чтобы проверить настройку, можно также запросить статус устройства:
# proxmox-tape changer status CHGR1
┌───────────────┬──────────┬────────────┬─────────────┐
│ entry-kind    │ entry-id │ label-text │ loaded-slot │
╞═══════════════╪══════════╪════════════╪═════════════╡
│ drive         │        0 │ vtape1     │           1 │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        1 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        2 │ vtape2     │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ ...           │      ... │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │       16 │            │             │
└───────────────┴──────────┴────────────┴─────────────┘
Ленточные библиотеки обычно предоставляют несколько специальных слотов импорта/экспорта (также называемых «почтовыми слотами»). Ленты внутри этих слотов доступны снаружи, что упрощает добавление/удаление лент в/из библиотеки. Эти ленты считаются «автономными», поэтому задания резервного копирования не используют их. Эти специальные слоты определяются автоматически и помечаются как слоты import-export в выводе команды proxmox-tape changer status.
Некоторые небольшие ленточные библиотеки не имеют таких слотов. Они не могут удерживать медиафайлы, пока робот занимается другими делами. Они также не предоставляют доступ к этому «почтовому слоту» через интерфейс SCSI, поэтому их нельзя увидеть в выводе команды proxmox-tape changer status.
В качестве обходного пути можно пометить некоторые обычные слоты как слоты экспорта. Программное обеспечение рассматривает эти слоты как настоящие слоты import-export, а носители внутри этих слотов считаются «автономными» (недоступными для резервного копирования):
# proxmox-tape changer update CHGR1 --export-slots 15,16
Теперь можно увидеть эти искусственные слоты import-export в выводе команды:
# proxmox-tape changer status CHGR1
┌───────────────┬──────────┬────────────┬─────────────┐
│ entry-kind    │ entry-id │ label-text │ loaded-slot │
╞═══════════════╪══════════╪════════════╪═════════════╡
│ drive         │        0 │ vtape1     │           1 │
├───────────────┼──────────┼────────────┼─────────────┤
│ import-export │       15 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ import-export │       16 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        1 │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │        2 │ vtape2     │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ ...           │      ... │            │             │
├───────────────┼──────────┼────────────┼─────────────┤
│ slot          │       14 │            │             │
└───────────────┴──────────┴────────────┴─────────────┘
Поскольку не все устройства смены ленты ведут себя одинаково, иногда возникает необходимость в настройке дополнительных параметров. Например, можно указать дополнительный параметр --eject-before-unload (необходим для некоторых устройств, которым требуется извлечение ленты перед выгрузкой из привода):
# proxmox-tape changer update CHGR1 --eject-before-unload true

57.10.3.2. Ленточные накопители (приводы)

Получить список доступных ленточных приводов:
# proxmox-tape drive scan
┌────────────────────────────────┬────────┬─────────────┬────────┐
│ path                           │ vendor │ model       │ serial │
╞════════════════════════════════╪════════╪═════════════╪════════╡
│ /dev/tape/by-id/scsi-12345-sg  │ IBM    │ ULT3580-TD4 │  12345 │
└────────────────────────────────┴────────┴─────────────┴────────┘
Чтобы использовать этот привод с PBS, необходимо создать запись конфигурации. Это можно сделать в веб-интерфейсе Резервное копирование на лентуДиски:
Резервное копирование на ленту. Добавление нового ленточного привода
Или с помощью команды:
# proxmox-tape drive create mydrive --path /dev/tape/by-id/scsi-<цифры>-sg

Примечание

Так как имена типа /dev/sg* могут после перезагрузки указывать на другое устройство, необходимо использовать постоянные имена путей к устройствам, например, /dev/tape/by-id/.
При наличии ленточной библиотеки, также необходимо настроить соответствующее устройство смены лент:
# proxmox-tape drive update mydrive --changer CHGR1 --changer-drivenum 0
Параметр --changer-drivenum необходим только в том случае, если ленточная библиотека включает более одного привода (команда proxmox-tape changer status выводит список всех номеров накопителей).
Просмотреть полученную конфигурацию:
# proxmox-tape drive config mydrive
┌─────────┬────────────────────────────────┐
│ Name    │ Value                          │
╞═════════╪════════════════════════════════╡
│ name    │ mydrive                        │
├─────────┼────────────────────────────────┤
│ path    │ /dev/tape/by-id/scsi-12345-sg  │
├─────────┼────────────────────────────────┤
│ changer │ CHGR1                          │
└─────────┴────────────────────────────────┘

Примечание

Значение 0, указанное в параметре --changer-drivenum, не сохраняется в конфигурации, поскольку используется по умолчанию.
Вывести список всех настроенных дисков:
# proxmox-tape drive list
┌────────┬──────────────────────────────┬────────┬───────┬────────────┬────────┐
│ name   │ path                         │ changer│ vendor│ model      │ serial │
╞════════╪══════════════════════════════╪════════╪═══════╪════════════╪════════╡
│ mydrive│ /dev/tape/by-id/scsi-12345-sg│ CHGR1  │ IBM   │ ULT3580-TD4│ 12345  │
└────────┴──────────────────────────────┴────────┴───────┴────────────┴────────┘
Производитель, модель и серийный номер определяются автоматически и отображаются только в том случае, если устройство подключено к сети.
Для тестирования можно просто запросить состояние диска:
# proxmox-tape status --drive mydrive
┌────────────────┬──────────────────────────┐
│ Name           │ Value                    │
╞════════════════╪══════════════════════════╡
│ blocksize      │ 0                        │
├────────────────┼──────────────────────────┤
│ density        │ LTO4                     │
├────────────────┼──────────────────────────┤
│ compression    │ 1                        │
├────────────────┼──────────────────────────┤
│ buffer-mode    │ 1                        │
├────────────────┼──────────────────────────┤
│ alert-flags    │ (empty)                  │
├────────────────┼──────────────────────────┤
│ file-number    │ 0                        │
├────────────────┼──────────────────────────┤
│ block-number   │ 0                        │
├────────────────┼──────────────────────────┤
│ manufactured   │ Fri Dec 13 01:00:00 2019 │
├────────────────┼──────────────────────────┤
│ bytes-written  │ 501.80 GiB               │
├────────────────┼──────────────────────────┤
│ bytes-read     │ 4.00 MiB                 │
├────────────────┼──────────────────────────┤
│ medium-passes  │ 20                       │
├────────────────┼──────────────────────────┤
│ medium-wearout │ 0.12%                    │
├────────────────┼──────────────────────────┤
│ volume-mounts  │ 2                        │
└────────────────┴──────────────────────────┘

Примечание

Размер блока всегда должен быть равен 0 (режим переменного размера блока).

57.10.3.3. Медиа-пулы (пулы носителей)

Пул носителей — это логический контейнер для лент. Задание резервного копирования предназначено для одного пула носителей, поэтому задание использует только ленты из этого пула.
Набор носителей — это группа непрерывно записываемых лент, используемых для разделения большего пула на более мелкие восстанавливаемые блоки. Одно или несколько заданий резервного копирования записывают данные на набор носителей, создавая упорядоченную группу лент. Наборы носителей идентифицируются уникальным идентификатором. Этот идентификатор и порядковый номер хранятся на каждой ленте этого набора (метка ленты). Наборы носителей являются основной единицей для задач восстановления. Для восстановления содержимого набора носителей понадобится каждая лента в наборе. Данные полностью дедуплицируются внутри набора носителей.
Резервное копирование на ленту. Пулы носителей
В пуле дополнительно определяется, как долго задания резервного копирования могут добавлять данные в набор носителей (поле Политика выделения в веб-интерфейсе):
  • Попробовать использовать текущий набор носителей (continue).
    Этот параметр создает один большой набор носителей. Это очень эффективно (дедупликация, отсутствие неиспользуемого пространства), но может привести к увеличению времени восстановления, поскольку заданиям восстановления необходимо читать все ленты в наборе.

    Примечание

    Данные полностью дедуплицируются внутри набора носителей. Это также означает, что данные случайным образом распределяются по лентам в наборе. Таким образом, даже если восстанавливается одна ВМ, данные, возможно, придется считать со всех лент внутри набора носителей.
    Наборы носителей большего размера более подвержены ошибкам, поскольку даже одна поврежденная лента приводит к сбою восстановления.
    Сценарий использования: в основном используется с ленточными библиотеками. Создание нового набора запускается вручную, при запуске задания резервного копирования с параметром --export.

    Примечание

    Срок хранения начинается с момента появления нового набора носителей.
  • Всегда создавать новый набор носителей (always).
    При использовании этого параметра каждое задание резервного копирования создает новый набор носителей. Это менее эффективно, поскольку носитель из последнего набора может быть записан не полностью, а оставшееся пространство останется неиспользованным.
    Преимущество такого подхода состоит в том, что при этом создаются наборы носителей минимального размера. С небольшими наборами легче обращаться, их удобнее перемещать в удаленное хранилище, и их можно восстановить гораздо быстрее.

    Примечание

    Срок хранения начинается с момента создания набора носителей.
  • Создать новый набор при срабатывании указанного события календаря.
    Позволяет указывать моменты времени, используя systemd (см. man systemd.time). Например, при указании значения weekly (или Mon *-*-* 00:00:00) новый набор будет создаваться каждую неделю.
    Эта настройка балансирует между эффективностью использования пространства и количеством носителей.

    Примечание

    Срок хранения начинается со времени создания следующего набора мультимедиа или, если такового нет, когда событие календаря в следующий раз инициируется после времени начала текущего набора мультимедиа.
Следующие события также могут выделить новый набор носителей:
  • требуемая лента находится в автономном режиме (и используется ленточная библиотека);
  • текущий набор содержит поврежденные или устаревшие ленты;
  • шифрование пула носителей изменилось;
  • ошибки согласованности базы данных, например, если опись не содержит необходимой информации о носителе или содержит противоречивую информацию (устаревшие данные).
Политика хранения определяет, как будут храниться данные:
  • всегда перезаписывать носитель;
  • защищать данные в течение указанного периода времени;
  • никогда не перезаписывать данные.
Ленточные накопители LTO-4 (или более поздних версий) поддерживают аппаратное шифрование. Если настроить пул носителей на использование шифрования, все данные, записываемые на ленты, шифруются с использованием настроенного ключа. Таким образом, неавторизованные пользователи не смогут прочитать данные с носителя.

Примечание

Если клиент резервного копирования также шифрует данные, то данные на ленте будут зашифрованы дважды.
Защищенный паролем ключ хранится на каждом носителе, поэтому его можно восстановить с помощью пароля.
Для добавления нового пула носителей в Резервное копирование на лентуПулы носителей следует нажать кнопку Добавить:
Резервное копирование на ленту. Добавление нового пула
Или воспользоваться командой:
# proxmox-tape pool create <Имя> [OPTIONS]
Пример добавления пула:
# proxmox-tape pool create daily
Дополнительные параметры можно установить позже, например:
# proxmox-tape pool update daily --allocation daily --retention 7days
Вывести список всех настроенных пулов:
# proxmox-tape pool list
┌───────┬──────────┬────────────┬───────────┬──────────┐
│ name  │ drive    │ allocation │ retention │ template │
╞═══════╪══════════╪════════════╪═══════════╪══════════╡
│ daily │ mydrive  │ daily      │ 7days     │          │
└───────┴──────────┴────────────┴───────────┴──────────┘

57.10.3.4. Задания резервного копирования на ленту

Чтобы автоматизировать резервное копирование на ленту, можно настроить задания резервного копирования, которые записывают содержимое хранилища данных в пул носителей по определенному расписанию. При создании задания резервного копирования на ленту необходимо указать:
  • store — хранилище данных, резервную копию которого нужно создать;
  • pool — пул носителей (используются только ленточные картриджи из этого пула);
  • drive — ленточный накопитель;
  • schedule — расписание заданий.
Пример настройки задания резервного копирования на ленту для хранилища данных pve-backup:
# proxmox-tape backup-job create job2 --store pve-backup \
  --pool mypool --drive mydrive --schedule daily
По умолчанию резервная копия включает все снимки из группы резервного копирования. Чтобы включать только самые последние снимки можно использовать опцию --latest-only:
# proxmox-tape backup-job update job2 --latest-only
Для отправки уведомлений о запросах на ленту или отчетов об ошибках можно указать пользователя, на электронную почту которого будут отправляться уведомления:
# proxmox-tape backup-job update job2 --notify-user root@pam

Примечание

Для возможности отправки электронной почты должен быть установлен пакет postfix и запущена соответствующая служба:
# systemctl enable --now postfix
Иногда бывает полезно извлечь ленту из привода после резервного копирования:
# proxmox-tape backup-job update job2 --eject-media
Для автономного накопителя опция --eject-media извлекает ленту, гарантируя, что следующая резервная копия не сможет использовать ленту (если только кто-то вручную не загрузит ленту). Для ленточных библиотек этот параметр выгружает ленту в свободный слот.

Примечание

В случае если задание завершается ошибкой, лента остается в приводе.
Для ленточных библиотек параметр --export-media-set перемещает все ленты из набора носителей в слот экспорта, гарантируя, что следующая резервная копия не сможет использовать эти ленты:
# proxmox-tape backup-job update job2 --export-media-set

Примечание

Опцию --export-media-set можно использовать для принудительного запуска нового набора носителей, поскольку ленты из текущего набора больше не находятся в сети.
Запуск задания резервного копирования вручную:
# proxmox-tape backup-job run job2
Удаление задания резервного копирования:
# proxmox-tape backup-job remove job2
По умолчанию все (рекурсивные) пространства имен хранилища данных включаются в резервную копию на ленте. Можно указать одно пространство имен с помощью опции --ns и глубину с помощью опции --max-deep. Например:
# proxmox-tape backup-job update job2 --ns mynamespace --max-depth 3
Если опция --max-deep не указана, резервная копия будет включать все рекурсивные пространства имен.
Операции с заданиями резервного копирования можно также выполнять в веб-интерфейсе на вкладке Резервное копирование на лентуЗадания резервного копирования. При создании задания резервного копирования в поле Локальное хранилище данных следует указать хранилище данных, для которого будет создаваться резервная копию, а в поле Пул носителей — пул, в который выполняется резервное копирование:
Резервное копирование на ленту. Добавление задания резервного копирования