Настройка резервного копирования с помощью Bacula

Bacula – пакет программ архитектуры «клиент-сервер» с открытым исходным кодом, предназначенный для создания резервных копий данных, находящихся на компьютерах с различными операционными системами, для восстановления и проверки хранящихся данных. Этот пакет имеет модульную архитектуру, легко масштабируется и может быть использован, как для небольшой локальной сети из нескольких компьютеров, так и для сети предприятия, состоящего из нескольких сотен компьютеров.

Система построена по технологии клиент-сервер, и для передачи данных использует протокол TCP. Резервные копии создаются в собственном, полностью открытом формате.

Система резервирования данных Bacula состоит из четырёх основных элементов: Director Daemon, Storage Daemon, File Daemon и Bacula Console. Все эти элементы реализованы в виде самостоятельных приложений.

Director Daemon (DD) – это центральный элемент системы, осуществляющий управление её остальными компонентами. В его задачи входит управление процессом резервирования/восстановления данных, обеспечение интерфейса управления для администраторов и многое другое. Говоря проще – это диспетчер, который инициирует все процессы и отслеживает ход их выполнения.

Storage Daemon (SD) – приложение, отвечающее за чтение/запись данных непосредственно на устройства хранения информации. Принимает управляющие команды от DD, а также резервируемые данные от/к File Daemon.

File Daemon (FD) – этот элемент ещё можно назвать Агентом. Ведь именно он работает в рамках операционной системы, данные которой необходимо резервировать. File Daemon выполняет всю рутину, осуществляя обращение к резервируемым файлам и их дальнейшую передачу к SD. Также на стороне FD выполняется шифрование резервных копий, если это определено конфигурацией.

Bacula Console (BC) – интерфейс администратора сиcтемы. По своей сути, это командный интерпретатор для управления Bacula. Строго говоря, Bacula Console может быть расширена с помощью графических систем управления, которые, как правило, являются всего лишь надстройкой над BC. К таким системам можно отнести Tray Monitor и Bat. Первая устанавливается на компьютере администратора системы и осуществляет наблюдение за работой системы резервирования, а вторая обеспечивает возможность управления посредством графического интерфейса.

Bacula Catalog – база данных, в которой хранятся сведения обо всех зарезервированных файлах и их местонахождении в резервных копиях. Каталог необходим для обеспечения эффективной адресации к требуемым файлам. Поддерживаются MySql, PostgreSql и SqLite.
Такое структурное деление позволяет организовать очень гибкую систему резервирования, когда Storage Daemon разворачивается на выделенном сервере с несколькими устройствами хранения данных. Также Bacula Director может управлять несколькими экземплярами SD, обеспечивая резервирование части данных на одно устройство хранения, а части – на другое.
Если ваша инфраструктура включает в себя всего один сервер, то все необходимые элементы могут быть развёрнуты на нём

Прежде, чем начать настройку системы, необходимо определить основные термины, используемые в системе Bacula.
Задача (Job) – операция создания архива файлов или восстановления информации с архиву.
Том (Volume) – единица хранения информации, представляет собой отдельный файл, магнитную ленту, CD, DVD. Один том может содержать несколько задач, или одна задача может занимать несколько томов.
Пул (Pool) – группа томов.
Набор файлов (FileSet) – списки директорий и отдельных файлов, которые должны быть заархивированы. Могут содержать регулярные виражения.
Уведомление (Messages) – информация о состоянии компонентов Bacula и задач. Могут передаваться по электронной почте, либо записываться в журнал.
Файл начальной загрузки (bootstrap) – специальный текстовый файл, содержащий информацию об архивированных файлах и томах. Этот файл используется во время операции восстановления.

Типы резервного копирования

Полное копирование (Full backup) — производится копирование данных в полном объеме. Самый надежный способ копирования. В случае выхода из строя свежей копии данные можно восстановить из предыдущих копий. Эффективный и быстрый метод восстановления. Недостаток — требует носителей большого объема и длительного времени выполнения.
Дифференциальное копирование (Differential backup) — копируются файлы, изменившиеся после последнего Full backup. Данные копируются «нарастающим итогом», так что последняя копия всегда будет содержать все изменения с момента последнего Full backup. Выполняется быстрее чем Full backup, при повреждении одной из копий не приводит к потере всех данных за последующий и предыдущий период (при наличии живого Full backup). Так или иначе требуется регулярный Full backup и бывает что последняя копия (при длительной работе) по размеру изменений приближается к Full backup.
Инкрементное копирование (Incremental backup) — выполняется копирование только информации, измененной после выполнения предыдущего Incremental backup. Это самый быстрый метод резервирования и занимает меньше всего объема, но и самый ненадежный метод. В случае повреждения одной из копий все последующие становятся шлаком. И соответственно при повреждении Full backup все становиться негодным. Восстановление данных занимает продолжительное время.
Предпочтителен Full backup но это»дорого» обходиться. Если данные не очень ценны или ресурсов мало то используйте Incremental backup. Differential backup это компромисс, но бывает что последняя копия приближается объему полного копирования так что следите за ним. Есть еще и другие типы копирования такие как VirtualFull и Base вы можете познакомиться с ними сами.

Bacula поддерживает следующие типы сообщений:
информационное (info)
предупреждение (warning)
ошибка (error)
критическая ошибка (fatal)
остановка (terminate)
перечень пропущенных файлов (skipped);
список файлов, сохраненных без ошибок (saved)
список файлов, которые не удалось сохранить (notsaved)
перечень восстановленных файлов (restored)
потребность подключить новый том (mount)
ошибка авторизации (security)
все типы (all).

Для отправки сообщений Bacula использует собственный средство – bsmtp, который может отправлять сообщения не только локальным пользователям, но и на удаленный smtp-сервер.

В статье рассматривается установка и настройка Bacula Director, Bacula Storage Daemon на одном сервере. Также предполагается, что сервер MySql, в котором будет развёрнута база данных Bacula Catalog, уже установлен и запущен на этом же сервере
Клиентами Bacula File Daemon будут выступать локальный сервер Bacula и удаленный сервер на Ubuntu/Centos
На машинах, с которых будет выполняется резервное копирование, нужно установить bacula-fd (Bacula File Daemon)

1.Установка Bacula
Установка Bacula Director, Bacula Storage Daemon, Bacula File Daemon, bacula-console на Bacula-сервере

Ubuntu

При установке буде предложено настроить базу данных bacula
При подтверждении создания будет создана база данных с именем bacula, mysql пользователь bacula с доступом к этой базе и с паролем, указанным Вами
Эти данные автоматичски пропишутся в секцию
Catalog { }
В файле /etc/bacula/bacula-dir.conf
После успешной настройки проверяем наличие базы и таблиц в ней

Centos

В отличии от Ubuntu в Centos нужно вручную создавать базу bacula и таблицы в ней, пользователя с доступом к этой базе. Для этого воспользуемся штатными скриптами
В данном случаем используем рутовый MySQL-аакаунт

Задаем пароль для пользователя bacula

 

2. Настройка Bacula Director Daemon
Конфигурационный файл Директора bacula-dir.conf, как и остальные конфигурационных файлов Bacula, состоит из логических разделов, описывающих отдельные ресурсы. Раздел каждого ресурса взят в фигурные скобки {}. Строки с комментариями начинаются с символа #
В ключах регистр и пробелы полностью игнорируются. Поэтому ключи: name, Name, и N a m e полностью индентичны. Пробелы до и после знака «равно» игнорируются. Если «значение» содержит пробелы, оно должно быть заключено в двойные кавычки, а пробелы должны быть экранированы обратным слешем.

Для каждого компьютера, файлы которого архивируются, мы будем создавать отдельный ресурс Client, FileSet, Pool, Job Backup и Job Restore( Storage будет один для всех клиентов)
В конфигурационном файле вы должны описать к примеру работу для одного клиента несколькими переменными такими как Job, Pool, Client, FileSet, Storage, Schedule. Каждой переменной присваивается понятное имя и далее в Job указываются необходимые имена переменных чтобы это было законченной задачей и могло работать согласно вашим указаниям. Рабочий клиент состоит из 6ти элементов:
Job (Работа) — это объект которому присваивают понятное имя и это совокупность вещей и указаний как, кого, что и куда будем резервировать. По его имени эту задачу можно определять, исполнять и вызывать из консоли.
Client (Клиент) — здесь указывается имя клиента для этой работы, сам клиент и его имя определяется отдельно.
FileSet (Набор файлов) — указывается набор файлов\директорий и их исключений для этой работы, сам набор файлов и его имя определяется отдельно.
Schedule (Планировщик) — планировщик для этой работы, в нем описываем периодичность работы и перераспределение ресурсов это когда делать полное копирование когда дифференциальное и тд. Сам планировщик и его имя определяется отдельно и вы можете для удобства завести отдельный конфиг.
Storage (Хранилище) — Определение устройства хранения файлов для этой работы. В этом хранилище есть секция Device (см по имени) в котором есть указание, где будем хранить резервные копии.
Pool (Пул) — определяем для работы нужный нам Пул это отдельное описание для каждого набора томов (лент, DVD, файлов)

Повторюсь,что Storage у меня используется один и он описан в шаблоне DefaultJob, а все типы расписания описаны в файле bacula-dir.conf.Поэтому я буду в клиентcком файле задавать только эти значения
Client, FileSet, Pool, Job Backup и Job Restore

Это приводит разрастания конфигурационного файла до довольно больших размеров, поэтому удобнее описывать эти ресурсы в отдельном файле, который включается в bacula-dir.conf с помощью директивы @. Например, ресурсы Client, FileSet, Pool, Job Backup и Job Restore для сервера, на котором установлена система Bacula, можно поместить в файл localhost.conf, и включить его в bacula-dir.conf:
@/etc/bacula/conf.d/localhost.conf
У каждого клиента будет свой пул – метки на тома в этом пуле будут выставляться согласно меткам для каждого пула клиента автоматически(опция LabelFormat в пуле клиента).Это возможно благодаря опции
LabelMedia = yes; в файле bacula-sd.conf т.е нет необходимости вручную размечать тома

Для того,чтобы не повторять одни и теже опции в задании для всех клиентов
Type = Backup
Storage = File
Messages = Standard
Priority = 10
Используется шаблон DefaultJob
Параметры, которые меняются – уникальны для каждого клиента
Client
FileSet
Pool
Job
Job Restore

Все шаблоны расписаний описаны в файле bacula-dir.conf, эти шаблоны применяются при создании Job-задании бекапа клиента

Создаем каталоги для сохранения бекапа всех клиентов и для восстановления из бекапа локального сервера

 

3.Настройка Хранителя (Bacula Storage Daemon)

 

4. Настройка клиента локального (Bacula File Daemon)

 

5.Настройка консоли управления bconsole

 

6.Тестирование конфигурационных файлов и добавление сервисов в автозагрузку.
Запуск служб и проверка корректности запуска.

Логи смотрим

Проверяем статус всех трех компонентов

 

7.Запуск задания по созданию бекапа вручную

После чего проверяем статус , как описано выше
После окончания выполнения задания на почту придет уведомление
Также,е сли будут какие-то ошибки Bacula проинформирует через E-Mail
Логи смотрим

Проверяем статус после окончания выполнения бекапа

 

8.Настройка удаленного клиента, с которого будем снимать бекап
Имя клиента – app01.amazon.com

Установка и настройка Bacula File Daemon на клиенте
Centos

Ubuntu

Настройка iptables на клиенте для разрешения подключения на порт 9102 с Bacula Director сервера

Настройка Bacula Director на поддержку нового клиента

Bacula-Storage сервер должен принимать подключения от удаленных клиентов на порту 9103.
Поэтому не забудьте настроить ваш firewall на Storage-сервере

Проверка подключения к клиенту с Bacula-director

 

9.Создание бекапа удаленного клиента вручную

10.Восстановление каталогов/файлов
Например ,восстановим каталог /etc сервера app01.amazon.com на этот же удаленный сервер
Для этого запустим задание по восстановлению файлов/каталогов, которое было описано
в файле /etc/bacula/conf.d/app01.amazon.com.conf под именем Restore-app01-amazon-com-Files

Как видно из задания, файлы будут записываться на удаленном клиенте в каталог /bacula/restore
Если он не существует или / , тогда файлы восстановятся на свои места и перазапишут (!!!) существующие файлы. Путь должен начинаться со слеша.

Провереям наличие каталога /etc со всем содержимым на удаленном клиенте в каталоге /bacula/restore/

 

Источник:
https://www.ibm.com/developerworks/ru/library/l-Backup_4/
http://www.ignix.ru/book/freebsd/daemon/bacula
http://habrahabr.ru/post/135291/
https://habrahabr.ru/post/86526/
http://golddragonoptics.ru/sistema-rezervirovaniya-bacula-ustanovka-i-nastrojka.html
https://linux-notes.org/ustanovka-i-nastrojka-bacula-i-webmin-dlya-sozdaniya-be-kapov-servera-na-redhat-centos-fedora/

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика