Для задач резервного копирования в системах Linux существует ряд продуктов (кроме специализированных стандартных утилит), которые обладают высокой эффективностью и универсальностью использования. Среди таковых особенно выделяется Bacula, которая кроме всех прочих достоинств обладает также и ещё некоторыми немаловажными особенностями — это свободное распространение и открытый исходный код. Как правило, подобные системы, в большинстве случаев – проприетарные, поэтому Bacula для системного администратора может явиться самым удачным и рациональным выбором.
Утилита способна выполнять резервное копирование, восстановление, а также проверку данных в любой распределённой системе, будь то домашняя сеть (настольный ПК и пара ноутбуков), или же огромная корпоративная интрасеть. Bacula легко масштабируема в зависимости от условий применения, к тому же, поддерживает огромный набор UNIX-систем. Поскольку Bacula разработана в полноценной кроссплатформенной реализации, она способна работать и выполнять задачи даже если среди её клиентов есть машины под управлением ОС Windows. Bacula включается в состав репозиториев практически любого Linux-дистрибутива, но при необходимости можно скачать архив с исходными текстами с официального сайта разработчиков http://blog.bacula.org и собрать из них рабочую систему, что особого труда не составляет, т. к. продукт очень хорошо документирован и активно поддерживается разработчиками.
Основные преимущества Bacula
Стоит отдельно остановиться на конкретных возможностях Bacula, выделяющих её среди аналогичных продуктов:
- Открытый исходный код и свободное распространение.
- Работа в смешанных системах – UNIX, Linux, Mac OS и Windows.
- Модульная, легко масштабируемая архитектура с чётким разделением функционала, данных и элементов управления/взаимодействия с системой.
- Организация и управление базами данных с помощью MySQL, PostgreSQL и даже
- Работа с несколькими ленточными устройствами хранения, в том числе и с автоматической заменой лент.
- Шифрование сетевого трафика, а также данных резервных копий.
- Централизованные контроль и управление резервным копированием всей системы в распределённых системах любой сложности.
- Возможность создания сигнатур MD5 или SHA1 для каждого обрабатываемого файла.
- Возможность копирования файлов, размером больше 2 Гбайт.
- Поддержка выполнения сценариев в процессе резервного копирования.
Справедливо отметить, что далеко не каждый коммерческий закрытый продукт обладает всеми перечисленными возможностями.
Принцип работы Bacula
Утилита состоит из функциональный компонентов, каждый из которых ответственен за свой круг задач. Каждый компонент функционирует в системе в виде отдельного демона. Они (демоны) обмениваются данными между собой автоматически, а также посредством графического пользовательского интерфейса (GUI) или через командную консоль управления.
Итак, основные демоны Bacula:
- Управления — этот компонент управляет задачами резервного копирования и восстановления, а также координирует проверку файлов, подлежащих резервированию.
- Управления файлами работает в каждой системе, в которой необходимо резервное копирование. Он отправляет демону управления данные об атрибутах резервируемых файлов.
- Хранения — выполняет чтение/запись с устройств хранения. По-умолчанию он работает на тех машинах, к которым непосредственно подключены устройства хранения, однако можно запускать этот демон и на удалённом компьютере — отдельно.
- Каталог — это компонент представляет собой служебную базу данных (БД) для организации и учёта резервного копирования, восстановления и проверки файлов. Благодаря каталогу, утилита располагает всей информацией о всех файлах и устройствах хранения в ретроспективе.
Настройка Bacula
Как уже было отмечено, Bacula из-за своей модульной и многослойной архитектуры может легко разворачиваться и работать в системах самого различного масштаба и сложности. Во всех случаях для настройки утилиты необходимо выполнить следующие действия:
- установить демоны;
- установить и настроить внешние СУБД (системы управления базами данных), а также создать саму БД и таблицы для использования;
- установить и настроить клиентские демоны управления файлами;
- запустить демоны Bacula;
- определить носители хранения и добавить их в пул Bacula;
- проверить работоспособность путём выполнения тестового резервного копирования.
Обычно, на клиентских компьютерах устанавливаются демоны управления файлами, а все остальные демоны работают на серверной машине. В больших и сложных системах с высокой нагрузкой рекомендуется отступать от этой схемы, равномерно организуя нагрузку на сервера, устанавливая отдельные компоненты (демоны) Bacula на отдельных машинах, в том смысле, что на отдельных машинах не должно выполняться сразу несколько демонов.
Установка базы данных
Как уже было сказано, Bacula имеет функциональный компонент — каталог для организации, хранения и использования в своих задачах ретроспективы данных. Этот каталог хранится в БД и обслуживается СУБД, которая, в свою очередь, предварительно должна быть установлена и настроена.
Сама же БД утилиты, т. е. её каталог также должна быть предварительно создана. Также и должны быть созданы и необходимые таблицы внутри этой БД. Обычно всё это делается автоматически при разворачивании утилиты в системе, когда она устанавливается из репозиториев дистрибутива. Для этого используются специализированные скрипты, которые можно найти в каталоге src/cats дистрибутива с исходными кодами Bacula, если сборка и установка производится вручную. Скрипт create_mysql_database создаст базу данных, а другой скрипт make_mysql_tables – таблицы для этой БД. Ещё один скрипт grant_mysql_privileges предоставляет пользователю MySQL разрешения для пользования этой БД.
Конфигурирование демонов
Для каждого компонента Bacula и демона предусмотрен отдельный конфигурационный файл. После установки и настройки СУБД, а также создания БД таблиц каталога Bacula необходимо выполнить конфигурацию и её компонентов. В следующей таблице представлены конфигурационные файлы основных компонентов утилиты, которые находятся в каталоге /etc/bacula:
Компонент |
Конфигурационный файл |
Компьютер |
Управления |
bacula-dir.conf |
Сервер, запускающий демон управления |
Хранения |
bacula-sd.conf |
Любой сервер, содержащий демон хранения |
Управления файлами |
bacula-fd.conf |
Любой клиент, для которого нужно создавать резервные архивы |
Консоль управления |
bconsole.conf |
Любой компьютер, который можно использовать для управления |
Стоит отметить, что хранение конфигурации в отдельных для каждого компонента файлах — очень удобно и способствует лучшей масштабируемости системы, ведь таким образом легко «расфасовать» разные демоны с их конфигурационными файлами по разным машинам. Например, если нужно хранить архивы на «стороннем компьютере», то для этого достаточно установить и настроить демон хранения на этом «стороннем компьютере».
Для того, чтобы более подробно рассмотреть механизм конфигурирования демонов, следует разобраться с несколькими базовыми понятиями, характерными для Bacula, а именно:
- Задания — это базовые компоненты, характеризующие процесс работы утилиты, т. е. то, что представляет активность системы в виде выполняемых ею процессов. Задания построены на основе других компонентов: наборы файлов, клиенты, пулы памяти, а также схемы задания.
- Наборы файлов — это, собственно перечни как самих файлов, так и файловых систем. Они могут быть как включены в задания, так и исключены из них.
- Сообщения — информация, включающая в себя данные о состоянии Bacula, которой демоны обмениваются между собой. Сообщения могут сохраняться в файлах журнала, а также отправляться по e-mail.
- Пулы — это наборы физических устройств хранения.
В Bacula существует также такое понятие как «Разделы конфигураций» или «ресурсы» из которых и состоят файлы конфигурации. Описание ресурса заключено в фигурные скобки. Файлы конфигураций всех демонов включают в себя ресурс «Director» — это основной ресурс Bacula, который поддерживает функционирование демонов:
Director {
Name = bull-dir # a canonical name for our Bacula director
DIRport = 9101
Query File = "/etc/bacula/query.sql"
Working Directory = "/var/Bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 1
Password = "zHpScUnHN9"
Messages = Standard
}
Данный ресурс содержит описание того, как собственно, должен вести себя демон: какой должен использоваться порт для обмена данными с другими демонами, сколько задач может выполнять демон, его рабочая директория, где он хранит временные файлы, пароль и тип сообщений. Пароли, хоть и хранятся в конфигурационных файлах в открытом виде, однако всегда передаются и обрабатываются с применением шифрования. Пароли применяются для «узнавания» демонами друг друга для повышения безопасности и предотвращения возможных коллизий в их работе.
Также все демоны имеют ресурс Messages для генерации, обмена и обработки сообщений:
Messages {
Name = Standard
director = bull-dir = all
}
В более сложном случае, характерном для файла конфигурации bacula-dir.conf ресурс Messages имеет следующий вид:
Messages {
Name = Standard
mailcommand = "/sbin/bsmtp -h localhost -f \"\(BaculaX)
bacula@admin.com\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/sbin/bsmtp -h localhost -f \"\(BaculaX)
bacula@admin.com\" -s \"Bacula: Intervention needed for %j\" %r"
mail = backups-admins@admin.com = all, !skipped
operator = backups-tapeadmins@admin.com = mount
console = all, !skipped, !saved
append = "/var/log/bacula.log" = all, !skipped
}
В данном случае описание ресурса Messages предписывает Bacula отправлять сообщения по e-mail, а также регистрировать их в файле журнала /var/log/bacula.log.
Можно определить несколько ресурсов Messages и привязать их к отдельным заданиям, которые, в свою очередь, описываются в другом ресурсе Job. Самую подробную информацию о правилах описания ресурсов для разных случаях можно найти в официальной технической документации к Bacula.
Самой сложной конфигурацией является конфигурация демона управления — bacula-dir.conf. Она должна включать в себя описания ещё семи (кроме рассмотренных Director и Messages) ресурсов: Job, Client, Catalog, Storage, Schedule, FileSet, Pool. В предоставляемых в дистрибутивах или пакетах утилиты можно найти примеры конфигурационных файлов, в которых описываются ресурсы с подробными комментариями и на их основе создать собственную конфигурацию.
Для конфигурирования демона управления файлами на конкретном компьютере должен быть (после предварительной установки этого демона на этот компьютер) отредактирован файл bacula-fd.conf. В нём нужно, в ресурсе Director указать, какое устройство управления использовать для планирования задач для этого клиента, а также пароль — такой же, который указан в ресурсе Client в файле конфигурации демона управления. В ресурсе FileDemon определяются имена клиентов, а также порт, через который демон управления файлами слушает для получения команд от демона управления. Ну и конечно, должен быть определён ресурс Messages.
Запуск демонов Bacula
После того как все демоны и клиенты установлены и настроены. Можно запускать Bacula с помощью скрипта ./bacula start, который запустит все демоны системы. На клиентских машинах (на которых находятся демоны управления файлами). Для запуска клиентских демонов используется эта же команда. Сам же скрипт находится в каталоге с установленным сервером/демоном.
Для проверки состояния работы демонов, а также для управления Bacula можно использовать программу bconsole. Которая также находится в каталоге установки Bacula. Пользоваться bconsole можно с любого компьютера в сети, если конечно она правильно установлена и настроена:
$ sudo ./bconsole
Connecting to Director bull:9101
1000 OK: bull-dir Version: 2.4.4 (23 December 2009)
Enter a period to cancel a command.
Для включения автозапуска Bacula при начальной загрузке системы можно (и нужно) также добавить команду ./bacula start в автозагрузку. В зависимости от используемой Linux-системы.