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.