Содержание


Системы резервного копирования и управления IT-активами предприятия

Часть 4. Установка и настройка Bacula

Comments

Серия контента:

Этот контент является частью # из серии # статей: Системы резервного копирования и управления IT-активами предприятия

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Системы резервного копирования и управления IT-активами предприятия

Следите за выходом новых статей этой серии.

Современные бизнес-процессы требуют от организаций такого же отношения к информационным ресурсам, как и к любым иным активам. К сожалению, сегодня наибольшее внимание уделяется обеспечению конфиденциальности данных. Вопросом обеспечения их целостности часто задаются, когда она уже была нарушена. В этой серии статей речь идет о программных решениях, направленных на защиту целостности данных.

Знакомимся с Bacula

Существует несколько свободных программных продуктов, позволяющих автоматизировать резервное копирование. Наиболее известные и функциональные – Bacula и Amanda. В этой статье мы рассмотрим первую из них.

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, обеспечивая резервирование части данных на одно устройство хранения, а части – на другое.

Если ваша инфраструктура включает в себя всего один сервер, то все необходимые элементы могут быть развёрнуты на нём. Более подробную информацию вы можете получить из подробного руководства администратора на официальном сайте http://bacula.org.

Установка и настройка

Теперь, когда мы разобрались со структурой Bacula, можно приступать к установке и настройке. В качестве примера будем использовать дистрибутив Fedora. В нашем примере мы будем рассматривать следующую инфраструктуру:

  • выделенный сервер dir.example.com (на нём будет функционировать Director Daemon);
  • выделенный сервер stor.example.com (на нём будет функционировать Storage Daemon);
  • персональный компьютер под управлением операционной системы Linux – client.example.com.

Предполагается, что сервер MySql, в котором будет развёрнута база данных Bacula Catalog, уже установлен и запущен на сервере stor.example.com. Установка будет производиться из RPM-пакетов. Но, в случае необходимости, может быть осуществлена сборка из исходных кодов, которая в общем виде может быть реализована в рамках формулы "configure,make,make install".

На сервере dir.example.com устанавливаются Director Daemon и Bacula Console:

	# yum -y install bacula-director-mysql bacula-console

На сервере stor.example.com устанавливается Storage Daemon:

	# yum -y install bacula-storage-mysql

Приступаем к инициализации Bacula Catalog. На сервере dir.example.com запускаем скрипты, которые создадут базу данных, все необходимые таблицы и привилегии:

	# cd /usr/libexec/bacula
	# ./create_bacula_database -h stor.example.com -u root -p
	# ./make_bacula_tables -h stor.example.com -u root -p
	# ./grant_bacula_privileges -h stor.example.com -u root -p

Были созданы база данных bacula и пользователь bacula, имеющий к ней все необходимые права доступа. По умолчанию пользователь bacula создаётся без пароля. Обязательно установите его.

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

Начнём подготовку системы резервирования с настройки Storage Daemon, который будет отвечать за непосредственную работу с устройством хранения данных. Bacula поддерживает широкий спектр устройств, начиная от оптических дисков и заканчивая полнофункциональными ленточными библиотеками. Список поддерживаемых устройств вы сможете найти на официальном сайте проекта. Мы рассмотрим самый распространённый вариант – обычный жёсткий диск с существующей файловой системой (например, ext3). Итак, на сервере stor.example.com редактируем файл /etc/bacula/bacula-sd.conf. В нём находим секцию основных параметров – Storage, где определяем параметр Name, который задаёт уникальное имя Storage Daemon. Остальные параметры можно оставить в значениях по умолчанию.

Секция Director необходима для указания уникального имени DD и пароля, с которым этот DD может подключаться к SD. Секций может быть несколько, что даёт возможность использовать единый сервер хранения данных для нескольких систем резервирования. Все остальные секции Director, найденные в файле, закомментируйте, они пока не понадобятся.

Storage {
  Name = example-storage
  SDPort = 9103
  WorkingDirectory = "/var/spool/bacula"
  Pid Directory = "/var/run"
  Maximum Concurrent Jobs = 20
}

Director {
  Name = example-director
  Password = "storage-password"
}

Но основные настройки, определяющие взаимодействие с устройствами хранения, кроются в секции Device. Рассмотрим параметры, необходимые для хранения резервных копий в рамках существующей файловой системы, подключенной в каталог /var/backups.

Параметр Name определяет уникальное имя подключенного устройства. Если вы планируете создавать изолированные друг от друга резервные копии для каждого из File Daemon, то вам необходимо создать несколько секций Device с уникальными именами. В противном случае резервируемые файлы со всех FD будут размещаться в одном и том же файле, что может несколько затруднить дальнейшее обслуживание системы.

Параметр Media Type определяет произвольное уникальное имя, которое будет использоваться Bacula при восстановлении данных. Согласно ему определяется устройство хранения, с которого будет производиться восстановление. Если вы храните резервные копии в файлах, то для КАЖДОЙ секции Device должен быть задан уникальный Media Type.

Параметр Archive Device указывает путь к файлу устройства в каталоге /dev или путь к каталогу, в котором будут размещаться резервные копии.

Параметр Device Type определяет тип устройства. Для размещения в существующей файловой системе указывается File.

Параметр Random Access указывает на возможность случайной (непоследовательной) адресации. Для файлов указывается Yes.

Параметр RemovableMedia указывает, возможно ли извлечение устройства хранения. Необходимо для ленточных устройств, приводов оптических дисков и т.д. Для файлов устанавливается в значение No.

Параметр LabelMedia указывает на необходимость автоматического маркирования носителей информации.

Device {
  Name = ExampleStorage
  Media Type = ExampleFile
  Archive Device = /var/backups
  Random Access = Yes;
  RemovableMedia = no;
  LabelMedia = yes;
}

Для базовой настройки этого достаточно, и можно приступать к конфигурированию Director Daemon в конфигурационном файле /etc/bacula/bacula-dir сервера dir.example.com. В первую очередь необходимо определить основные параметры в секции Director. На начальном этапе важно установить параметры Name и Password. Name задаёт уникальное имя Director Daemon, а Password – пароль, который будет использоваться при соединениях BC с DD. Остальные параметры можно оставить в значениях по умолчанию.

Director {
	Name = example-director
	DIRport = 9101
	QueryFile = "/etc/bacula/query.sql"
	WorkingDirectory = "/var/spool/bacula"
	PidDirectory = "/var/run"
	Maximum Concurrent Jobs = 1
	Password = "console-password"
	Messages = Daemon
}

Следующей группой параметров, которые необходимо определить, является секция Catalog. Здесь необходимо указать реквизиты доступа к базе данных, а также назначить уникальное имя данного Bacula Catalog с помощью параметра Name:

Catalog {
	Name = example-catalog
	dbname = "bacula"
	user = "bacula"
	dbpassword = "bacula"
	DB Address = stor.example.com
}

Теперь настала пора определить SD, на который будет производиться передача данных для дальнейшей записи на устройство хранения. Storage Daemon у нас настроен и готов к работе, определим реквизиты доступа к нему в секции Storage файла bacula-dir.conf.

Параметр Name – уникальное имя, использующееся для адресации секции Storage в рамках файла bacula-dir.conf

Параметры Device и MediaType дублируют одноимённые параметры файла bacula-sd.conf.

Параметр Password содержит пароль, который будет использоваться при подключении к Storage Daemon.

Storage {
  Name = Dir-ExampleStorage
  Address = stor.example.com
  SDPort = 9103
  Password = "storage-password"
  Device = ExampleStorage
  Media Type = ExampleFile
}

Последние шаги настройки

До завершения базовой настройки Director Daemon осталось совсем немного. Секция Pool определяет набор носителей информации и параметры, определяющие то, как SD будет их обрабатывать. Каждый Pool взаимодействует с устройством хранения данных, и поэтому необходимо создать столько же пулов, сколько определено устройств хранения. Фактически если для каждого File Daemon вы определяете отдельное устройство, то для каждого FD необходимо определить и Pool. Рассмотрим перечень наиболее значимых параметров.

Параметр Name определяет уникальное имя пула.

Параметр Pool Type определяет тип, и для резервных копий должен быть установлен в значение Backup.

Параметр Maximum Volume Jobs рекомендуется установить в значение 1. Это будет означать, что в рамках одного носителя данных могут быть размещены резервные данные, полученные в ходе выполнения только одного задания. Носитель данных – это устройство, на которое непосредственно записываются данные (оптические диски, магнитные ленты). Если размер созданной резервной копии много меньше размера носителя, то имеет смысл сохранить на него и другие копии, которые будут создаваться в будущем. Но если мы говорим о файлах, то желательно придерживаться правила "один файл – одна копия", т.е. в одном файле Bacula должны храниться резервные данные, которые были сформированы в рамках выполнения одного задания. Для каждого последующего будут создаваться новые файлы.

Volume Retention – время, по прошествии которого данные о резервной копии, хранящейся на носителе, будут удалены из каталога. Для обеспечения работоспособности Bacula необходимо помнить о том, что информация обо всех зарезервированных файлах хранится в базе данных, по записи на каждый файл. Если вы резервируете тысячи файлов, то очень скоро база данных станет огромной, что может затруднить работу Bacula. Поэтому очень важно своевременно очищать базу от устаревшей информации. При этом сам носитель информации не будет очищен автоматически. Он будет промаркирован как устаревший, но вы всегда сможете использовать его для восстановления данных в ручном режиме.

Maximum Volumes – максимальное количество носителей (в нашем случае файлов), доступных в данном пуле.

Параметр Recycle указывает на необходимость повторного использования носителей, помеченных как устаревшие. При этом реальная перезапись носителя произойдёт лишь в случае, когда свободных носителей не останется. Свободные носители определяются из параметра Maximum Volumes.

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

Параметр Label Format определяет префикс, который будет использован Bacula для маркирования носителей информации, в нашем случае – для именования файлов.

Параметр Storage указывает на имя устройства хранения данных, указанного в параметре Name секции Storage файла bacula-dir.conf.

Pool {
    Name = example-pool
    Pool Type = Backup
    AutoPrune = yes
    Recycle = yes
    Volume Retention = 1 months
    Maximum Volume Jobs = 1
    Maximum Volumes = 32
    Storage = Dir-ExampleStorage
    Label Format = "volumeExample-"
}

Одна из интересных секций – FileSet, она позволяет предопределить несколько наборов резервируемых файлов. Например, один набор для Windows, другой – для Linux или один для серверов, а другой – для рабочих станций. Основные параметры здесь следующие.

Параметр Name определяет уникальное имя набора.

Секция Include содержит пути к резервируемым файлам/каталогам, а Exclude – пути к файлам и каталогам, которые необходимо исключить из списка резервируемых. В секции Include возможна секция Options, в которой определяются параметры резервирования.

Параметр signature указывает алгоритм вычисления контрольных сумм файлов.

Параметр compression указывает алгоритм компрессии файлов.

Параметр recurse указывает на необходимость рекурсивного резервирования, включая подкаталоги и файлы.

FileSet {
    Name = "example-set"
    Include {
        Options {
           signature = MD5
           compression= GZIP
           recurse = yes
        }
    File = /etc
    File = /var
    }
    Exclude {
        File = /var/tmp
    }
}

Теперь на время отложим Director Daemon и перейдём к настройке File Daemon на рабочей станции client.example.com. Для этого сначала установим программный продукт:

	# yum -y install bacula-client

Для настройки используется файл /etc/bacula/bacula-fd, в котором для базовой настройки достаточно лишь определить параметры секции Director, где указывается пароль, который будет использовать DD при подключении к FD, а также секции FileDaemon, где указываются настройки FD. Все остальные секции Director, найденные в файле, закомментируйте, они пока не понадобятся.

Director {
  Name = example-director
  Password = "client-password"
}

В секции FileDaemon нас, на данном этапе, интересует только параметр Name, в котором указывается уникальное имя File Daemon:

FileDaemon {
  Name = example-client
  FDport = 9102
  WorkingDirectory = /var/spool/bacula
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}

Ну, а теперь вернёмся к серверу Director Daemon, где в конфигурации укажем параметры нашего единственного Агента. Хочется надеяться, что значения всех параметров вам уже ясны.

Client {
    Name = example-client
    Address = client.example.com
    FDPort = 9102
    Catalog = example-catalog
    Password = "client-password"
}

Ну, а теперь финальный аккорд. Всё, что мы настраивали на протяжении этих страниц, мы свяжем воедино с помощью секции Job, в которой мы даём задание планировщику по выполнению резервирования данных. Здесь мы уже не будем описывать все параметры, отметив лишь основные.

Параметр Type указывает на тип задания. Типов существует несколько, и к ним мы еще вернемся в продолжение цикла. Здесь же достаточно указать Backup.

Параметр Schedule указывает на предопределённое расписание, согласно которому будет выполняться резервирование данных. Все расписания определены здесь же, в файле bacula-dir.conf. Пример расписания WeeklyCycle приведён ниже, комментировать в нём нечего.

Параметр Write Bootstrap указывает путь к файлу, в который будет записываться информация, с помощью которой данные могут быть восстановлены из резервной копии без наличия подключения к Bacula Catalog. Вместо %n будет подставлено значение параметра Name:

Schedule {
  Name = "WeeklyCycle"
  Run = Full sun at 20:05
  Run = Incremental mon-sat at 23:05
}

Job {
    Name = "example-backup"
    Type = Backup
    Client = example-client
    FileSet="example-set"
    Schedule = "WeeklyCycle"
    Messages = Standard
    Pool = example-pool
    Write Bootstrap = "/var/spool/bacula/%n.bsr"
    Priority = 1
}

Последний штрих – закомментируйте все остальные секции: Job, JobDefs, Client и Console, на данном этапе они нам не понадобятся. Также убедитесь, что в netfilter определены правила, разрешающие прохождение трафика Bacula. Как вы понимаете, трафик будет идти по тем портам, что указаны в конфигурационных файлах каждого из компонентов Bacula.

Теперь запустим все компоненты соответствующими командами, данными на соответствующих серверах:

	# service bacula-dir start
	# service bacula-fd start
	# service bacula-sd start

Первый запуск

Настало время запуска создания нашей первой резервной копии файлов компьютера client.example.com. Для этого необходимо настроить доступ к DD со стороны Bacula Console в файле /etc/bacula/bconsole.conf сервера dir.example.com:

Director {
  Name = example-director
  DIRport = 9101
  address = localhost
  Password = "console-password"
}

Запускаем Bacula Console и оказываемся в командном интерпретаторе, где команда help выдаст список и краткое описание всех возможных команд. Нас интересует команда принудительного запуска задания – run. После того как вы дадите эту команду, Bacula, основываясь на том, что в конфигурации определена всего одна секция Job, автоматически предложит выполнить именно это задание. Подтвердите выполнение и запустите процедуру резервирования файлов компьютера.

После запуска вам будет периодически выдаваться предупреждение о том, что появились новые сообщения. Для их просмотра используйте команду messages. Отследить статус запущенного задания вы можете командой:

	status client example-client

Если в поле Status для вашего задания стоит значение OK, то радуйтесь: вы только что создали свою первую резервную копию с помощью Bacula.

Заключение

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


Ресурсы для скачивания


Похожие темы

  • Системы резервного копирования и управления IT-активами предприятия. Часть 1.
  • Системы резервного копирования и управления IT-активами предприятия. Часть 2.
  • Системы резервного копирования и управления IT-активами предприятия. Часть 3.

Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=492232
ArticleTitle=Системы резервного копирования и управления IT-активами предприятия: Часть 4. Установка и настройка Bacula
publish-date=05272010