Bacula/Использование накопителей
Здесь подразумевается использование файлов в качестве носителя.
В случае с лентами картина, по видимому, будет отличаться.
Ключевые параметры
[править]Расписание:
- Schedule
И параметры, определяющие использование накопителей:
- В настройках пула:
- Maximum Volume Bytes
- Maximum Volumes
- Volume Retention
- В настройках клиента:
- File Retention
- Job Retention
Schedule
[править]Время хранения резервных копий будет определяться расписанием и политикой хранения, где:
- расписание будет определять минимальное время хранения (период хранения очевидно имеет смысл делать кратным расписанию).
- а политика - максимальное.
Вот пример расписания из конфигурации по умолчанию:
Schedule { Name = "WeeklyCycle" Run = Full 1st sun at 23:05 Run = Differential 2nd-5th sun at 23:05 Run = Incremental mon-sat at 23:05 }
Здесь описано полное копирование каждое первое воскресенье месяца и далее дифференциальные и инкрементальные.
В неофициальном переводе официальной документации рекомендуется устанавливать период хранения томов в два раза больше интервала выполнения полных резервных копий. То есть, при использовании данного расписания хранить резервные копии следует не менее двух месяцев, а насколько дольше - определится политикой.
Объём тома (volume)
[править]Максимальный объём тома. Необязательный параметр.
При использовании файлов в качестве носителей, и правиле "одно задание - один том", максимальный размер тома должен соответствовать самому большому возможному заданию.
Для определения необходимого значения можно замерить, какой объем займет полный бэкап файлсета (см. estimate в Bacula Console and Operator's Guide, а также прогнать пробное задание, если используется сжатие).
Maximum Volume Bytes
Количество томов (volume)
[править]Максимальное количество используемых в пуле томов.
Если хранится N томов, то нужно иметь в пуле как минимум на два тома больше. Один - на текущий бэкап, чтобы не затирать самый старый из предыдущих на случай ошибки бэкапа, и как минимум один - для свободы маневра в случае ошибок.
Maximum Volumes
Периоды хранения (retention)
[править]Определение периодов хранения.
Имеет смысл установить такие сроки хранения, чтобы "резервные тома" не понадобились при нормальной работе; например: Volume Retention на неделю дольше максимального срока хранения по политике, если между бэкапами проходит примерно месяц. В таком случае тома будут нормально ротироваться без привлечения резерва.
Пул
[править]Минимальное время хранения Тома перед его повторным использованием.
Должен быть в вдвое больше интервала полных резервных копий. Это означает, что, если полная резервная копия выполняется один раз в месяц, то минимальный период Volume Retention должен быть два месяца.
Этот параметр должен быть как минимум не менее определённого политикой резервного копирования периода хранения резервных копий.
Volume Retention
Клиент
[править]Определяют период хранения информации о задании, и отдельных файлах в нём, в базе данных бакулы (каталог). Не относятся непосредственно к хранению резервных копий.
Очевидно должны быть не менее времени хранения резервной копии. Хранить устаревшие записи нецелесообразно, чтобы не раздувать базу данных.
File Retention
Job Retention
Пример использования
[править]Пусть нам надо выполнять резервную копию сайта site_001 так, что бы:
- Неделю хранить ежедневную копию
- Месяц хранить еженедельную
- Полгода хранить ежемесячную
Пример взят из официальной документации (Bacula Main Reference Guide, глава 27, Automated Disk Backup):
- Если мы хотим также распределить эти резервные копии на разные накопители (например полный на ленту а инкрементальные и дифференциальные на диск), то storage нужно определять не в описании задания (job) а в каждом пуле. Если storage указан и там и там, то будет использован тот что указан в задании, у него приоритет выше.
Job { Name = client Type = Backup Client = client-fd FileSet = "Site_001" Schedule = "WeeklyCycle" Storage = File Messages = Standard Pool = Default Full Backup Pool = Full-Pool Incremental Backup Pool = Inc-Pool Differential Backup Pool = Diff-Pool Write Bootstrap = "/home/bacula/working/client.bsr" Priority = 10 } FileSet { Name = "Site_001" Include = { Options { signature=SHA1; compression=GZIP9 } File = /var/www/html/site_001 } } Schedule { Name = "WeeklyCycle" Run = Level=Full 1st sun at 2:05 Run = Level=Differential 2nd-5th sun at 2:05 Run = Level=Incremental mon-sat at 2:05 } Client { Name = client-fd Address = client FDPort = 9102 Catalog = MyCatalog Password = " *** CHANGE ME ***" AutoPrune = yes # Prune expired Jobs/Files Job Retention = 6 months File Retention = 60 days } Pool { Name = Full-Pool Pool Type = Backup Recycle = yes # automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 6 months Maximum Volume Jobs = 1 Label Format = Full- Maximum Volumes = 9 } Pool { Name = Inc-Pool Pool Type = Backup Recycle = yes # automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 20 days Maximum Volume Jobs = 1 Label Format = Inc- Maximum Volumes = 7 } Pool { Name = Diff-Pool Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 40 days Maximum Volume Jobs = 1 Label Format = Diff- Maximum Volumes = 10 }
Мониторинг свободного места
[править]По материалам ru-bacula:
При использовании дисков в качестве устройств хранения, что бы не допустить возникновения проблемы при нехватке свободного места на дисковом пространстве, можно использовать скрипт мониторинга:
В секции Job:
RunBeforeJob = "/path/to/diskmon.sh"
Скрипт:
#!/bin/sh # (c) tim4dev # *** start setup *** ADMIN="admin-backup@gmail.com" HOST="BACKUP" # свободный размер диска в Гб ERR_LIMIT=1 WARN_LIMIT=3 # *** end setup *** ERR=0 # если надо измените следующую строку для grep (какие FS _НЕ_ нужно мониторить) for STR in `df -k | grep -vE '^Filesystem|tmpfs|sda6|sda3|sda2|sda1' | awk '{ print $4 "___" $1 }'` do avail_str=$(echo $STR | awk -F "___" '{ print $1}' | cut -d'%' -f1 ) avail=$(echo "scale=0; $avail_str/1048576" | bc) partition=$(echo $STR | awk -F "___" '{ print $2 }' ) if [ "$avail" -le "$ERR_LIMIT" ]; then msg="ERROR: $HOST Very low disk space \"$partition (${avail}Gb)\" on $(hostname) as on $(date)" echo $msg echo $msg | mail -s "ERROR: $HOST Very low disk space ${avail}Gb" $ADMIN ERR=1 else if [ ${avail} -le ${WARN_LIMIT} ]; then msg="WARNING: $HOST Low disk space \"$partition (${avail}Gb)\" on $(hostname) as on $(date)" echo $msg echo $msg | mail -s "WARNING: $HOST Low disk space ${avail}Gb" $ADMIN fi fi done if [ "${ERR}" == "0" ]; then exit 0; else exit 1; fi
Источники
[править]По материалам ru-bacula.