UMGUM.COM 

Bacula ( Масштабируемое сетевое клиент-серверное решение для резервного копирования, архивирования и восстановления данных. )

12 ноября 2010  (обновлено 20 января 2019)

Не буду здесь рассказывать истории о том, как кто-то не делал резервные копии ценных материалов, а потом (почему-то) стал делать. Однозначно, резервное копирование в том или ином виде должно быть. Где то достаточно комбинации "cron + tar", а где-то следует разворачивать серьёзные схемы резервирования.

И так, наша задача: обеспечить резервирование ресурсов компьютеров (в основном - серверов) под управлением операционных систем MS Windows, Linux, *BSD, MacOS общим количеством от пятидесяти штук. Основные критерии выбора: бесплатность и масштабируемость.

Мой выбор за Bacula ( http://bacula.org/ ).


"Bacula" - весьма мощный и гибкий механизм управления резервным копированием и восстановлением. С помощью "Bacula" можно создавать развёртывать системы сложной логики, управлять ими, контролировать состояние, реагировать на события, управлять ими вручную или доверить автоматике.


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

В качестве базы данных для хранения мета-данных я использовал как СУБД "MySQL", так и "PostgreSQL". Встречал упоминания о том, что при больших объёмах мата-данных "MySQL" не справляется и приходится переходить на "PostgreSQL", но я с настолько чрезвычайно большими нагрузками не сталкивался и выбираю СУБД по настроению на тот момент.

На стороне сервера необходимо установить:

  bacula-director - "Director (DIR)" - осуществляет централизованный контроль и администрирование всего комплекса задач;
  bacula-sd - "Storage Daemon (SD)" - сервис, отвечающий за физическое хранение данных, читает и пишет данные на носители: диск, ленту, DVD;
  bacula-console - "Console" - управляющая консоль оператора или администратора;
  mysql-server - "Catalog Database (CD)" - база данных SQL (поддерживается "MySQL", "PostgreSQL" и "SQLite").

Все эти компоненты можно размещать на разных сетевых хостах, они отлично сообщаются между собой по протоколу TCP/IP с произвольной степенью защитой посредством шифрования; чаще всего в разнесении нет настоятельной необходимости, но именовать сервисы мы будем так, что бы перенос их на другие хосты не повлиял на их работоспособность. Вообще-то, в конфигурационных файлах "Bacula" местами требуется применение FQDN (Fully Qualified Domain Name - "полностью определённое имя домена"), проще будет применить это как абсолютное правило. Например, сервис "Director" именуем как "dir0.backup.local", "Storage Daemon" как "sd0.backup.local", "Catalog database" как "cd0.backup.local". В файле "/etc/hosts" делаем соответствующие записи (да и в DNS сети не мешало бы описать используемые имена сервисов):

# vi /etc/hosts

....
ip.address  dir0.backup.local
ip.address  sd0.backup.local
ip.address  cd0.backup.local
ip.address  con0.backup.local
....

На компьютерах, с которых будет выполнятся резервное копирование необходимо будет установить клиентский компонент:

  bacula-fd - "File Daemon (FD)" - своего рода "агент", сервис, выполняющий непосредственное копирование, восстановление и проверку данных по запросу "Director"-а. "File Daemon" должен быть установлен на каждой клиентской машине. "File Daemon" обменивается информацией с "Director"-ом и "Storage Daemon"-ом.

В репозитории "Linux Debian 5 (Lenny)" Bacula версии 2.4 - это выпуск января 2009 года. В репозитории "Debian 6 (Squeeze)" Bacula версии 5.0, в "Debian 7/8 (Wheezy/Jessie)" - 5.2, а в "Debian 9 (Stretch)" - 7.4. И от версии 2.4 до версии 7.4 разработчики умудрились сохранить практически полную обратную совместимость конфигурационных файлов. Это маленькое чудо - одно из тех, что свидетельствует об истинной заботе разработчиков о нуждах клиента, а не только об удовлетворении своего стремления к новым технологическим изыскам (порой отменяющих все предыдущие наработки). В течении десяти лет, с 2009 по 2019, раз в полгода я просто скопом обновлял всё системное и прикладное программное обеспечение сервера, управляющего системой резервного копирования, перезагружал таковой, и в итоге получал по прежнему стабильно функционирующую схему.

Обращаю внимание, что между сервером на "Bacula Dir/SD v7" и клиентом "Bacula FD v9" совместимость обеспечивается не в полной мере. Проблема в обновлённом протоколе соединения, в который включили ряд возможностей, не поддерживаемых старыми клиентами (типичная ошибка при соединении: "...bsock.c:569 ... packet size=... too big..."). Можно копать в сторону согласования протокола подключения (например новыми опциями "CommCompression" и тому подобными), но для стабильной работы надёжнее откатить клиента до версии сервера.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )