Разбираемся с томами Bacula/Bareos

Много лет подряд схема именования томов в Bacula/Bareos приводила меня в полное недоумение. Я не мог понять почему свежеустановленная система резервного копирования создаёт тома в строгом соответствии с настройками прописанными в секция pool, а через какое-то время “слетает с катушек” и начинает записывать данные в старые файлы. Оказалось причина в в том, что Bacula изначально была заточена под ленточные накопители. Агалогично она поступает и с дисками: тома на дисках воспринимаются как ленты. Следствие этой особенности в том, что если Bacula создала том (файл на жёстком диске) то она НИКОГДА не удаляет его с диска. У каждого пула и задания есть параметр Volume Retention который задаёт время по истечении которого файлы попавшие в этот том бакула считает удалёнными. Если установлена опция AutoPrune = yes то bacula удалит записи из каталога (SQL). А если установлена опция ActionOnPurge = Truncate то урежет размер файла до нуля.
Continue reading Разбираемся с томами Bacula/Bareos

Удаление списка ожидающих заданий bacula

Случается, что на сторадже заканчивается место до того как bacula соберётся удалять старые файлы. В результате вы получаете одно оповещение, что задача не была выполнена и второе от мониторинга, что закончилось место. Если задача одна-две, это не проблема. Удалили руками и всё в порядке. Но ситуация меняется когда задач много и тем более вы не среагировали за период более чем один цикл бэкапа. Очередь закупоривается и пока она не будет выполнена целиком новые задания не будут выполнены. Данный скрипт позволяет по очереди удалить все задания начиная с последнего по очереди, чтобы дойдя до первого не стартовало следующее за ним.

#!/bin/bash

for ID in `echo 'status dir running' | bconsole | sed -n '/Running Jobs:/,/^$/p' | sed -n '/^=\+$/,/^=\+$/p' | grep -v '^=\+$' | awk '/is waiting/{print $1}' | sed -e '1!G;h;$!d'` ; do
    if [[ ! ${ID} =~ ^[0-9]+$ ]] ; then
      echo "JobID \"${ID}\" is not a number! Skipping."
    else
      echo -e "Do you want to kill waiting job ${ID}"
      read -p 'Type YES if you really want to delete job: ' input
      if [[ ! ${input} =~ ^[Yy]$  ]] ; then
        echo -e "Skip job ${ID}.\n"
        continue
      else
        echo "cancel jobid=${ID}" | bconsole
      fi
    fi
done

Скрипт удаления старых томов для bacula

Я уже писал о том как вручную удалять старые тома из базы и с диска. Казалось что это однократная операция. Однако пришлось делать это во второй раз. Попутно выявилась проблема с приоритетом команды restore. Диск с бэкапами заполнился, задания застряли в очереди и команда restore создала задание которое послушно встало в хвост очереди. Приоритеты очереди работают только в том случае если очередь движется. Bacula не приостанавливает ткущее задание чтобы выполнить задание с более высоким приоритетом. А оно стоит в очереди и не может выполниться изза нехватки места на диске. Гугл не смог найти ответ как же запустить рестор вне очереди. Пришлось очистить очередь, при помощи команды cancel в bconsole после чего отработал рестор.

Это всё отступления, вернёмся-же к автоматизации:
Continue reading Скрипт удаления старых томов для bacula

Bacula удаление старых томов

В процессе многолетней эксплуатации Bacula у меня возникла ситуация когда мониторинг ругался что диск заполнен, а Bacula даже не собиралась удалять старые тома. Пришлось чистить ручками.

UPDATED: Автоматизация процесса.

Запускаем консоль

# bconsole

Переходим в режим SQL запросов к каталогу
Continue reading Bacula удаление старых томов

Bacula проблема запуска под Winows

Что такое Bacula?

Для тех кто попал на эту страницу случайно и не знает что это за летучая мышь поясню, что Bacula это набор кросплатформенных программ с открытым исходным кодом для резервного копирования данных. Эти программы позволяют администратору сети управлять процессом резервного копирования, восстанавливать данные и проверять их. Они работают с различными носителями включая ленточные (стриммеры). Набор программ построен по клиент/серверной технологи и позволяет выполнять резервное копирование данных от одиночного компьютера до тысяч разнородных компьютеров объеденённых в большую сеть. Поскольку отступление уже затянулось то спешу сообщить, что подробнее можно почитать здесь

Нетерпеливым рекомендую перейти сразу в конец страницы и посмотреть решение вопроса.

Проблема появилась уже при установке.

Установка клиента Bacula для Windows прошла в целом гладко если не считать того, что при установленной по умолчанию в инсталяторе “птичке” “run Bacula service” в логе установки осталась ошибка (в цитате она выделена жирным шрифтом):
Continue reading Bacula проблема запуска под Winows