Том (Volume) – единица хранения информации, представляет собой отдельный файл, магнитную ленту, CD, DVD. Один том может содержать несколько задач, или одна задача может занимать несколько томов.
Пул (Pool) – группа томов. Пул объединяет в себе несколько томов, чтобы отдельная резервная копия не была ограничена объемом тома.
Прежде чем bacula сможет использовать том (volume), том должен получить метку (label).
В случае, когда том является файлом, файл создаётся при нанесении метки и метка используется в качестве названия. Метки могут наноситься автоматически. Это определяется параметрами: "LabelMedia = yes", в секции device конфигурации sd и "Label Format = LableName-" в конфигурации пула
При этом к заданному формату будет прибавляться цифровой индекс: LableName-0001.
В формате метки можно использовать макросы, например:
"Label Format = LableName-${Year}_${Month}_${Day}" Для задания (Job) определяется не том, а пул. При этом:При этом индекс добавляться не будет. И если, например, при проверке, будет выполнено более одного резервного копирования в день, то будет использован один и тот же том, если позволит параметр Maximum Volume Jobs.
Шаги по созданию Пула (Pool), добавлению Томов к нему, и запись программных меток на Тома, могут казаться утомительными сначала, но фактически они весьма просты, и позволяют использовать множество Томов (вместо того, чтобы быть ограниченным размером одной единственной ленты/диска/файла). Пулы также дают существенную гибкость в процессе резервирования. Например, можно иметь "Daily" (ежедневный) Пул Томов для инкрементальных (Incremental) резервных копий и "Weekly" (еженедельный) Пул Томов для полных (Full) резервных копий. Назначение соответствующих Пулов в ежедневных и еженедельных резервных Заданиях (Job) гарантирует, что никакое ежедневное Задание не перепишет данные данные в Еженедельном Пуле и наоборот. Кроме того, Bacula укажет, какой том необходимо подключить и когда.
Чтобы было проще ориентироваться в конфигурационных файлах, можно выносить часть конфигурации в отдельные файлы. Например, вся последующая конфигурация (Pool, File set, Schedule и Job) может быть вынесена в отдельный файл /etc/bacula/conf.d/testpool.conf, который можно подключить в конфигурацию директора (bacula-dir.conf) следующим образом:
@/etc/bacula/conf.d/testpool.conf Теперь, описав пул (pool), набор файлов (fileset) и расписание (schedule), можно описать задание (Job) в котором они используются. Очевидно, что описывать всё нужно не всегда, можно использовать в разных заданиях одинаковые пулы, наборы файлов и расписания. Параметр Maximum Volume Jobs рекомендуется установить в значение 1. Это будет означать, что в рамках одного носителя данных могут быть размещены резервные данные, полученные в ходе выполнения только одного задания. При использовании файлов, рекомендуется придерживаться правила "один файл – одна копия", т.е. в одном файле Bacula должны храниться резервные данные, которые были сформированы в рамках выполнения одного задания. Для каждого последующего выполнения будут создаваться новые файлы.
Для распределения резервного хранения по разным точкам необходимо:
В конфигурации
Storage Daemon определить устройства (
device), которые могут быть ленточными накопителями и/или каталогами на различных файловых системах (в случае если
Media Type = File). В секции определения себя, sd определяется как storage. Не следует путать с последующими определениями storage в конфигурации директора с которыми мы далее будем работать.
В конфигурации Director Daemon определить storage, при описании задать:
- Адрес sd к которому подключаться;
- Устройство (device) на данном sd
- Название, по которому этот storage будет использоваться в заданиях (job).
- Описать пул (Pool)
- Использовать описанный storage в задании (job), указав: Storage и Pool
Пулы не привязаны к хранилищам (storage) и любой пул может быть использован в любом хранилище.
То есть, достаточно на каждое устройство для записи (например, каталог с файлами) определить storage, после чего направлять произвольный пул на произвольное устройство.
Допустим, используется единственный Storage и он описан в шаблоне JobDefault, а все типы расписания описаны в файле defaultchedule.conf.
Поэтому мы будем в клиентских файлах задавать только эти значения: Client, FileSet, Pool, Job Backup и Job Restore.