Введение
Это краткая пошаговая инструкция для начинающих: как изменить уже работающую систему резервного копирования на базе Bacula. Такая работа поможет Вам понять взаимосвязи элементов конфигурации bacula.
В современных дистрибутивах GNU/Linux установленная из пакетов Bacula нередко уже настроена для копирования конфигурации ОС. Если у Вас bacula не настроена предварительно, возьмите полное руководство (см. «Литература»).
Общее описание
Задача — помимо существующего хранилища добавить новое и организовать резервное копирование на новое место. Для такой задачи необходимо выполнить 4 шага.
- В файл конфигурации демона-хранителя bacula-sd нужно добавить секцию «Device», чтобы демон узнал о новом месте хранения.
- В файл конфигурации демона-управляющего bacula-dir (bacula-dir.conf) нужно добавить секцию «Storage», которая опишет новое «хранилище» (организованное на новом «устройстве» демона хранения).
- В файл bacula-dir.conf нужно добавить секцию «Pool», которая объявит новый набор томов (размещаемый на новом «хранилище»).
- В файл bacula-dir.conf нужно добавить секцию «Job», которая опишет новое задание резервного копирования (использующее новый набор томов).
Помимо создания резервных копий нужно настроить возможность восстановления файлов. Для этого необходимо создать задание для восстановления – новую секцию «Job» с типом задания «Restore».
В случае, если необходимо задать новое расписание резервного копирования, нужно будет добавить секцию «Shedule» в файл bacula-dir.conf и тогда новое расписание можно использовать в существующем или новом задании. Можно также описать несколько наборов томов, например, для длительного хранения полных копий и кратковременного — инкрементальных архивов, после чего с этими наборами томов создайте соответствующие задания.
Если же Вы измените параметры набора томов (если изменилось содержание какой-нибудь уже существовавшей секции «Pool»), обязательно выполните в консоли bacula команду update. По этой команде демон bacula-dir обновит интервалы (длительность хранения) ранее созданных томов изменённого набора.
Шаг 1. Добавляем место хранения (Device) в bacula-sd.conf
В конфигурации демона хранения bacula-sd добавим новое место («устройство») для хранения файлов – секцию «Device{}».
1.1. Создаём файл /etc/bacula/device/backupstorage.conf
– копируем имеющийся «в коробке» /etc/bacula/device/file.conf
и меняем в нём путь для размещения файлов, имя и тип носителя. «Name» и «media type» должны быть уникальны среди описаний «Device» – они будут использоваться для выбора места хранения в задании резервного копирования.
# Definition of file storage device
# iSCSI volume "iqn.2012-07.com.lenovoemc:storage.ix4-300d.ix4-300d-vol3g"
# mapped to /dev/disk/by-label/backupstorage
# and mounted to /srv/backup/backupstorage
#
Device {
Name = BackupStorage
Media Type = File-NAS
Archive Device = "/srv/backup/backupstorage"
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}
1.2. Добавляем этот файл в конфигрурацию /etc/bacula/bacula-sd.conf рядом с другими:
…
@/etc/bacula/device/filestorage.conf
@/etc/bacula/device/tapedrives.conf
@/etc/bacula/device/backupstorage.conf
#
# Send all messages to the Director,
# mount messages also are sent to the email address
#
Messages {
Name = Standard
director = labara-host = all, !skipped, !restored
}
1.3. Даём демону bacula-sd команду перечитать конфигурацию.
service bacula-sd reload
или
/etc/init.d/bacula-sd reload
Шаг 2. Добавляем хранилище в bacula-dir.conf
Теперь добавим информацию о новом месте хранения в конфигурацию демона bacula-dir – вставим новую секцию «Storage{}» в файл «bacula-dir.conf».
2.1. Создаём файл /etc/bacula/storage/backupstorage.conf – можно скопировать имеющийся /etc/bacula/storage/file.conf и заменить параметры «Name», «Device» и «Media Type». Имя пишем новое, для «Device» используем «Name» из «Шага 1», для «Media Type» – «Media Type» из «Шага 1».
# Definition of storage instance for
# iSCSI volume "iqn.2012-07.com.lenovoemc:storage.ix4-300d.ix4-300d-vol3g",
# mounted to /srv/backup/backupstorage
#
Storage {
Name = NASBackupStorage
Address = "192.0.2.3"
SDPort = 9103
@/etc/bacula/bacula-sd-password.conf
Device = BackupStorage
Media Type = File-NAS
}
2.2. Вставляем /etc/bacula/storage/backupstorage.conf в /etc/bacula/bacula-sd.conf рядом с другими:
…
@/etc/bacula/client/client1.conf
@/etc/bacula/storage/file.conf
@/etc/bacula/storage/example.conf
@/etc/bacula/storage/backupstorage.conf
@/etc/bacula/messages/standart.conf
@/etc/bacula/messages/daemon.conf
@/etc/bacula/pool/default.conf
…
Шаг 3. Добавляем пул томов в bacula-dir.conf
Чтобы bacula отдельно учитывала файлы, расположенные нв NAS, создаём пул для них. Этот пул явно не привязан к хранилищу, он будет использован в задании.
Одно и то же хранилище можно привязать к множеству пулов, например, можно сделать разные пулы для еженедельных, ежемесячных и ежедневных резервных копий, в каждом разное время хранения томов.
3.1. Создаём файл /etc/bacula/pool/nas.conf с описанием секции Pool. Отличия от дефолтного — формат метки (чтобы отличать файлы с хранимыми данными) и имя.
# Default pool definition for NAS Storage
Pool {
Name = NAS
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
LabelFormat = "bn"
# Use not more Maximum Volume Bytes on disk
Maximum Volume Bytes = 4G
}
3.2. Вставляем /etc/bacula/pool/nas.conf в /etc/bacula/bacula-sd.conf рядом с другими.
…
@/etc/bacula/pool/default.conf
@/etc/bacula/pool/scratch.conf
@/etc/bacula/pool/nas.conf
…
Шаг 4. Добавляем задания в bacula-dir.conf
Теперь добавим задание, используя существующее расписание (Schedule) «WeeklyCycle» (см. файл /etc/bacula/schedule/weeklycycle.conf). Если существующее расписание нас устраивает, иначе придётся создать новые расписания, в которых укажем пулы, время запуска и режимы создания резервных копий, и уже после их создания — новые задания.
4.1. Чтобы много раз не писать одинаковые параметры резервного копирования на подмонтированный том NAS, создаём файл с секцией «JobDefs» /etc/bacula/job/defaultnasjob.conf:
JobDefs {
Name = "NASDefaultJob"
Type = Backup
Level = Incremental
Client = fd
FileSet = "Full Set"
Storage = NASBackupStorage
Messages = Standard
Pool = NAS
Priority = 10
}
4.2. Задание для сохранения файлов сервера на том NAS, его очередь — «10». Создаём файл задания /etc/bacula/job/baculadup.conf
#
# Define the duplicate of main backup job. This job stores backup into NAS.
#
Job {
Name = "BackupFullSetDup"
JobDefs = "NASDefaultJob"
Schedule = "WeeklyCycle"
Write Bootstrap = "/srv/backup/backupstorage/bacula/DUPClient1.bsr"
}
4.3. Задание для сохранения базы bacula на том NAS, которое нужно выполнять в последнюю очередь, номер очереди «11». Создаём файл задания /etc/bacula/job/backupcatalognas.conf:
Job {
Name = "BackupCatalogNAS"
JobDefs = "NASDefaultJob"
Level = Full
FileSet="Catalog"
Schedule = "WeeklyCycleAfterBackup"
# This creates an ASCII copy of the catalog
RunBeforeJob = "/usr/share/bacula/scripts/make_catalog_backup"
# This deletes the copy of the catalog
RunAfterJob = "/usr/share/bacula/scripts/delete_catalog_backup"
Write Bootstrap = "/srv/backup/backupstorage/bacula/BackupCatalogNAS.bsr"
Priority = 11 # run after main backup
}
4.4. Вставляем новые файлы заданий в /etc/bacula/bacula-sd.conf рядом с другими:
…
@/etc/bacula/pool/default.conf
@/etc/bacula/pool/scratch.conf
@/etc/bacula/pool/nas.conf
@/etc/bacula/job/defaultjob.conf
@/etc/bacula/job/backupcatalog.conf
@/etc/bacula/job/bacula.conf
@/etc/bacula/job/defaultnasjob.conf
@/etc/bacula/job/baculadup.conf
@/etc/bacula/job/backupcatalognas.conf
Шаг 5. Проверяем
5.1. Даём команду демону bacula-dir перечитать конфигурацию. Наиболее надёжный способ для этого — команда reload в консоли bacula-dir: если изменённая конфигурация содержит ошибку, демон покажет место ошибки в консоли и продолжит работу в прежней конфигурации.
Подключитесь к демону bacula-dir с помощью bconsole или BAT. В консоли введите команду reload (в BAT можно воспользоваться графическим интерфейсом, а не вводить команду: на строке «console» кликните правой кнопкой мышки и в контекстном меню выберите «Reload bacula-dir.conf»).
Если что-то неправильно, Вы увидите в консоли сообщение об ошибке, если всё в порядке, никаких сообщений в консоли не будет.
5.2. Выполняем резервное копирование нового задания. Это удобнее всего сделать в BAT: откройте вкладку «Jobs», в списке заданий выберите имя нового задания (например, «BackupFullSetDup»), кликните правой кнопкой мышки и в контекстном меню выберите «RunJob».
Состояние задания смотрите на вкладке «Jobs Run». В консоли смотрите этапы выполнения задания )команда .message). Если задание завершится с ошибкой, в консоли Вы сможете увидеть сообщение об ошибке.
Шаг 6. Создаём задание для восстановления файлов
Чтобы можно было быстро восстановить утерянный (удалённый или изменённый) файл, подготовим задание типа «Restore». В нём используются те же Pool, Storage, Fileset и Client, что и в задании типа «Backup», добавлен путь для восстановления («Where»), отличается тип, нет расписания и уровня.
6.1. Добавим файл /etc/bacula/job/restorefromnas.conf:
Job {
Name = "RestoreFromNAS"
Type = Restore
Client=fd
FileSet="Full Set"
Storage = NASBackupStorage
Pool = NAS
Messages = Standard
Where = /tmp/bacula-restores
}
6.2. Вставляем новый файл задания в /etc/bacula/bacula-sd.conf рядом с другими:
…
@/etc/bacula/job/restore.conf
@/etc/bacula/job/restorefromnas.conf
…
Литература
- Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula
- Настройка и понимание Bacula
- Bacula: для тех кому надо по-быстрому и в картинках
- Bacula — официальный сайт
- Bacula — Википедия
Автор: grumbler66rus