Автоматическое резервное копирование

«Эллес» предоставляет встроенную систему автоматического резервного копирования домена, основанную на механизме распределенной блокировки через специально выделенный для этой цели объект LDAP. Этот механизм гарантирует, что в любой момент времени резервная копия создается только одним контроллером домена.

Описание процедуры настройки автоматического резервного копирования в разделе основано на допущении, что все действия выполняются на контроллере домена «Эллес» с полным доступом к базе данных (RWDC).

Автоматизация резервного копирования в «Эллес»

Работа системы резервного копирования основана на двух компонентах: алгоритме выбора владельца роли генератора резервных копий и планировании выполнения команды резервного копирования.

Владелец роли определяется динамически среди контроллеров домена, в конфигурации которых явно включен механизм резервного копирования (см. описание параметра backup:enable), на основе атрибутов fSMORoleOwner и whenChanged объекта блокировки в LDAP (см. описание параметра backup:backup manager name):

  • атрибут fSMORoleOwner содержит DN контроллера домена AD — текущего владельца роли генератора резервных копий или является пустым, если таковой отсутствует;

  • атрибут whenChanged содержит дату и время захвата блокировки или последнего факта подтверждения блокировки либо является пустым, если блокировка ни разу не захватывалась.

Проверка выполняется с настраиваемой периодичностью: если атрибут fSMORoleOwner пустой, содержит имя текущего контроллера домена или текущее время больше суммы времени последнего подтверждения роли (whenChanged) и заданной в конфигурации задержки, то контроллер захватывает роль или подтверждает, что является ее владельцем.

Возможность задания задержки позволяет обеспечить захват роли генератора резервных копий определенными контроллерами в приоритетном порядке: например, в многосайтовой топологии контроллеры в основном сайте должны иметь приоритет над контроллерами в дополнительных сайтах (см. рекомендации по настройке).

Владелец роли генератора резервных копий запускает команду резервного копирования (базовый вариант — samba-tool domain backup online) по расписанию, заданному в формате cron-выражения, для создания резервной копии домена, включающей базу данных, sysvol и, при необходимости, DNS-конфигурации и TLS-ключи.

Команда резервного копирования должна выполняться от имени учетной записи доменного пользователя с достаточными полномочиями с аутентификацией Kerberos на основе keytab-файла (см. описание параметра make backup script command).

Результатом является архив в формате .tar.bz2, содержащий данные для восстановления домена.

Настройка системы осуществляется с помощью параметров в файле smb.conf.

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

Для настройки системы автоматического резервного копирования на контроллере домена «Эллес»:

Создание учетной записи

Для аутентификации samba-tool при создании резервных копий используется доменная учетная запись (например, backupuser):

  1. Создайте учетную запись в домене:

    samba-tool user add backupuser --random-password
  2. Выдайте учетной записи достаточные права. Например, добавьте ее в группу Backup Operators или Domain Admins:

    samba-tool group addmembers "Backup Operators" backupuser
  3. Сформируйте keytab-файл:

    sudo samba-tool domain exportkeytab --principal=backupuser@ELLES.INNO.TECH /app/inno-samba/etc/backupuser.keytab

Настройка прав доступа к файлам и каталогам

Процесс, выполняющий резервное копирование, работает от имени root.

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

Объект

Права

Владелец

Примечание

Каталог для сохранения резервных копий (в примерах в разделе — /var/backups/elles)

700

root:root

Должен быть доступен для записи

Keytab-файл (в примерах в разделе — /app/inno-samba/etc/backupuser.keytab)

600

root:root

Должен быть доступен для чтения

Файлы базы данных (sam.ldb, secrets.ldb) и другие файлы, включаемые в резервную копию

600

root:root

Должны быть доступны для чтения

Пример настройки прав на keytab:

sudo chown root:root /app/inno-samba/etc/backupuser.keytab
sudo chmod 600 /app/inno-samba/etc/backupuser.keytab

Настройка параметров в smb.conf

Для настройки автоматического резервного копирования на контроллере домена «Эллес» добавьте параметры в секцию [global] файла /app/inno-samba/etc/smb.conf:

  • backup:enable — включает автоматическое резервное копирование;

    Возможные значения:

    • yes — включить автоматическое резервное копирование;

    • no (по умолчанию) — отключить автоматическое резервное копирование.

    Без явного указания backup:enable = yes контроллер не участвует в выборе владельца роли генератора резервных копий и на нем не запускается автоматическое резервное копирование.
  • backup:backup manager name — имя LDAP-объекта, используемого для управления ролью генератора резервных копий;

    Имя объекта по умолчанию — BackupManager.

    Значением параметра может быть строка, соответствующая допустимому значению атрибута name в LDAP.

    Пример:

    backup:backup manager name = MyCustomBackupManager

    Объект CN=BackupManager,CN=Users,<DomainDN> создается автоматически при первом включении автоматического резервного копирования на одном из контроллеров домена (с backup:enable = yes).

    Перед включением резервного копирования на других контроллерах дождитесь завершения репликации объекта BackupManager по всему лесу (обычно занимает до 15 минут) и только после этого включайте backup:enable = yes на остальных контроллерах.

    Нарушение порядка может привести к созданию дубликатов объекта блокировки и конфликтам назначения роли генератора резервных копий.

  • backup:make backup schedule — cron-выражение, определяющее расписание запуска резервного копирования;

    По умолчанию команда резервного копирования запускается ежедневно в 3:00 утра (backup:make backup schedule = 0 3 * * *).

    Значением параметра может быть строка, содержащая корректное cron-выражение в формате <минута> <час> <день месяца> <месяц> <день недели>.

    Примеры:

    # Ежедневно в 3:00 утра (по умолчанию)
    backup:make backup schedule = 0 3 * * *
    
    # Каждый понедельник в 2:30
    backup:make backup schedule = 30 2 * * 1
    
    # Каждый первый день месяца в 4:00
    backup:make backup schedule = 0 4 1 * *
    Расписание вычисляется на основе времени локального контроллера. Убедитесь, что время на всех контроллерах синхронизировано с NTP.
  • backup:vote backup manager interval — интервал (в секундах), через который контроллер проверяет состояние роли генератора резервных копий;

    По умолчанию интервал составляет 1 час (backup:vote backup manager interval = 3600).

    Значением параметра может быть целое положительное число, задающее интервал в секундах (минимальное значение — 1).

    Пример:

    backup:vote backup manager interval = 1800
  • backup:vote backup manager timeout — задержка (в секундах), после которой роль считается утерянной, если владелец не обновил атрибут whenChanged.

    По умолчанию задержка составляет 4 часа (backup:vote backup manager timeout = 14400).

    Значением параметра может быть целое положительное число, задающее таймаут в секундах (минимальное значение — 1).

    Пример:

    backup:vote backup manager timeout = 7200

    Для топологии с несколькими сайтами при выборе значения для параметра рекомендуется следовать правилам:

    • основной сайт: backup:vote backup manager timeout > backup:vote backup manager interval;

    • дополнительный сайт:

      • если между сайтами отсутствует репликация по уведомлению: backup:vote backup manager timeout дополнительного сайта > [интервал репликации для межсайтового соединения с основным сайтом] + backup:vote backup manager interval основного сайта + backup:vote backup manager timeout основного сайта;

      • если между сайтами действует репликация по уведомлению: backup:vote backup manager timeout дополнительного сайта > backup:vote backup manager interval основного сайта + backup:vote backup manager timeout основного сайта.

    Тем самым обеспечивается приоритет основного сайта: подтверждение блокировки контроллерами дополнительного сайта происходит реже, чем попытки захвата со стороны контроллеров основного сайта. Таким образом, контроллеры в дополнительном сайте захватывают блокировку только если ни один контроллер в основном сайте неработоспособен. Как только работоспособность контроллеров основного сайта восстановится, роль генератора резервных копий должна снова перейти к контроллеру в основном сайте.

  • make backup script command — команда, выполняемая при срабатывании расписания.

    По умолчанию выполняется команда /app/inno-samba/bin/samba-tool domain backup online --targetdir=/tmp.

    Значением параметра может быть строка, содержащая команду samba-tool domain backup online с необходимыми параметрами.

    Примеры:

    # Базовый вариант с аутентификацией на основе keytab
    make backup script command = /app/inno-samba/bin/samba-tool domain backup online --targetdir=/var/backups/elles --use-keytab=/app/inno-samba/etc/backupuser.keytab -U backupuser
    
    # С сохранением DNS-конфигурации и TLS-ключей (только при локальном запуске)
    make backup script command = /app/inno-samba/bin/samba-tool domain backup online --targetdir=/var/backups/elles --use-keytab=/app/inno-samba/etc/backupuser.keytab -U backupuser --with-dns --with-tls
    
    # Без секретов (для безопасного хранения)
    make backup script command = /app/inno-samba/bin/samba-tool domain backup online --targetdir=/var/backups/elles --use-keytab=/app/inno-samba/etc/backupuser.keytab -U backupuser --no-secrets

    При настройке параметра учитывайте:

    • для аутентификации должна использоваться опция --use-keytab с указанием имени пользователя с достаточными правами;

    • опции --with-dns и --with-tls не совместимы с --server и могут использоваться только при локальном запуске (без --server);

    • опция --no-secrets исключает секреты (пароли, ключи) из резервной копии;

    • опция --no-sysvol исключает содержимое sysvol из резервной копии.

Перезапуск контроллера домена

Для применения изменений в настройках автоматического резервного копирования перезапустите сервис inno-samba:

sudo systemctl restart inno-samba

Управление автоматическим резервным копированием

Для управления автоматическим резервным копированием доступны команды:

  • просмотр текущих настроек на контроллере домена, включая DN владельца роли генератора резервных копий, расписание и синтаксис команды запуска резервного копирования, а также дату и время последней созданной резервной копии на текущем контроллере домена:

    samba-tool domain backup info
    ...
    Backup enabled:                     True
    Backup manager name:                BackupManager
    Backup manager DN:                  CN=BackupManager,CN=Users,DC=elles,DC=inno,DC=tech
    Backup role owner:                  CN=NTDS Settings,CN=elles_dc1,CN=Servers,CN=Site1,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech
    Backup role confirmed at:           31/07/2026 14:55:40
    Vote backup manager interval (s):   3600
    Vote backup manager timeout (s):    14400
    Backup schedule:                    0 3 * * *
    Make backup script command:         ['samba-tool', 'domain', 'backup', 'online', '--targetdir=/var/backups/elles', '--use-keytab=/app/inno-samba/etc/backupuser.keytab', '-U backupuser']
    Last backup timestamp (on this DC): 30/07/2026 03:05:18
  • сброс текущего владельца роли генератора резервных копий (очистка атрибута fSMORoleOwner объекта блокировки в LDAP):

    samba-tool domain backup reset
См. описание синтаксиса, список доступных параметров и примеры использования команды samba-tool domain backup в разделе «Резервное копирование и восстановление».

Мониторинг и логирование

Система автоматического резервного копирования управляется сервисом mt, предоставляющим метрики для контроля количества запланированных (scheduled), выполненных (executed), успешно выполненных (succeeded) и завершившихся ошибкой (failed) периодических задач (см. раздел «Метрики запуска периодических задач». Эти метрики доступны в контейнере CN=TDO,CN=Monitoring в LDAP через порт 3070 (по умолчанию).

Операции, связанные с автоматическим резервным копированием, логируются с классом backup на следующих уровнях:

Уровень Описание Примеры событий

0

Ошибки

"Failed to find backup manager object" (не удалось найти объект блокировки)

1

Предупреждения

"Failed to make backup, because previous run is still in progress" (попытка запуска резервного копирования, когда предыдущий еще выполняется)

5

Информационные сообщения

"Update FSMO role owner in backup manager object" (захват роли генератора резервных копий), "Making backup" (начало выполнения резервного копирования)

Пример настройки логирования событий, связанных с автоматическим резервным копированием, в отдельный файл:

[global]
      ...
      log level = 0 backup:5@/var/log/elles/backup.log
      ...

Примеры ошибок:

Сообщение об ошибке Причина Решение

Failed to find backup manager object: No such object

Объект блокировки (BackupManager по умолчанию) в LDAP отсутствует.
Может возникать при первом запуске или при ручном удалении объекта

Объект создается автоматически при первом запуске с backup:enable = yes.
Перезапустите inno-samba. Если объект был удален, он будет создан заново при следующей проверке

Failed to find backup manager object: …​

Ошибка поиска объекта блокировки (BackupManager по умолчанию) в LDAP.
Возможны повреждение объекта, неверное имя или проблемы с подключением к LDAP

Проверьте имя объекта в backup:backup manager name — оно должно совпадать с именем в LDAP.
Проверьте доступность LDAP: ldbsearch -H /app/inno-samba/private/sam.ldb "(name=BackupManager)" dn.
Убедитесь, что backup:enable = yes и smb.conf корректен

Failed to execute script to make backup

Система не может запустить команду samba-tool domain backup:
команда не найдена (неверный путь), неправильный формат команды

Проверьте, что утилита samba-tool доступна в системе: ls -l /app/inno-samba/bin/samba-tool.
Проверьте синтаксис команды

Failed to set last logon time to backup manager object…​

Попытка обновить атрибут lastLogon в LDAP, но объект поврежден или атрибут не существует

Проверьте, что объект блокировки (BackupManager по умолчанию) существует и содержит атрибут lastLogon: ldbsearch -H /app/inno-samba/private/sam.ldb "(name=BackupManager)" lastLogon.
Если атрибут отсутствует, удалите объект и перезапустите inno-samba — он будет создан заново с корректным набором атрибутов

Failed to parse backup schedule string "…​"

Неверный формат cron-выражения в backup:make backup schedule

Проверьте синтаксис cron-выражения.
Используйте только стандартные поля: <минута> <час> <день месяца> <месяц> <день недели>

Failed to make backup, because previous run is still in progress

Предыдущий запуск резервного копирования еще выполняется, и сервис mt не дождался его завершения.
Это может происходить при большой продолжительности операции или при сбое предыдущего запуска

Проверьте логи на наличие зависших процессов.
Увеличьте интервал в расписании запуска в параметре backup:make backup schedule

Failed to add DNS configuration files: …​

При использовании --with-dns отсутствуют или недоступны файлы /etc/bind/named.conf, /etc/bind/named.conf.local, /etc/bind/named.conf.options или /app/inno-samba/bind-dns/named.conf

Убедитесь, что файлы DNS существуют и доступны для чтения.
Проверьте пути: ls -l /etc/bind/named.conf* и ls -l /app/inno-samba/bind-dns/named.conf.
Убедитесь, что резервное копирование выполняется локально (без --server)

Failed to add TLS certification files: …​

При использовании --with-tls отсутствует или недоступна директория /app/inno-samba/private/tls/ или ее содержимое

Убедитесь, что директория существует: ls -l /app/inno-samba/private/tls/.
Убедитесь, что файлы ключей и сертификатов доступны для чтения.
Убедитесь, что резервное копирование выполняется локально (без --server)

Обновлено: