Услуги

Мы не ставим перед собой задачу перечислить все услуги, которые предоставляла, предоставляет или может предоставить наша компания. Ниже вы найдете лишь общие очертания того, чем регулярно занимаются во «Фланте» и какие конкретные решения наиболее часто применяют.

Резервное копирование

При организации систем резервного копирования мы используем популярный Open Source-инструмент Bacula. Проекту уже более 10 лет, и за ним стоит коммерческая компания Bacula Systems, с успехом построившая бизнес вокруг этой разработки. Одним из существенных плюсов Bacula является её качественная документированность: более 500 страниц мануалов для операторов и администраторов можно найти на официальном сайте bacula.org.

В инфраструктуре Bacula приняты следующие обозначения основных компонентов:

  • Хранилище (storage director, sd). Отвечает непосредственно за хранение данных (взаимодействует с носителями). Система резервного копирования должна иметь хотя бы один sd, но их может быть и больше.
  • Агент (file daemon, fd). Устанавливается на каждом клиенте, где будет осуществляться создание бэкапов. Агент Bacula передает данные в sd (или — в случае восстановления — наоборот, принимает их от sd).
  • Директор (director, dir). Управляет всем процессом, в том числе и расписанием. Всегда только один.
  • Консоль (bconsole). Консоль управления позволяет оператору отдавать команды dir.

Взаимодействие основных компонентов Bacula

Что и откуда?

Первое, на что стоит обратить внимание, говоря о резервных копиях, — сам предмет бэкапов: «Для чего [для каких объектов] можно создать бэкап?». Немаловажную роль играет и вопрос поддержки разных операционных систем, для которых может осуществляться создание резервных копий.

В случае использования Bacula на эти вопросы можно ответить так:

  • Резервные копии могут создаваться как для файлов (т.е. файловых систем), так и всех разделов жёсткого диска целиком. При этом имена файлов не ограничены языком или длиной, сами файлы — своим размером.
  • Представлена поддержка наиболее распространенных операционных систем: GNU/Linux, Microsoft Windows и Mac OS X. Есть поддержка и менее популярных ОС, таких как FreeBSD, NetBSD, OpenBSD, Solaris, HP-UX, Tru64 и IRIX.
  • Предусмотрена возможность сохранения атрибутов и прав доступа (ACL) для Linux и для Windows (в последнем случае рекомендуется использование SetACL).
  • Для Windows поддерживается технология VSS (Volume Snapshot Service, более известна как Shadow Copy).
  • Дополнительные скрипты позволяют учитывать специфику подготовки бэкапов для популярного программного обеспечения:
    • СУБД MySQL, PostgreSQL и MS SQL Server;
    • KVM/QEMU + libvirt;
    • Linux LVM;
    • Microsoft Exchange Server;
    • другие специализированные приложения (например, у нас есть опыт написания скрипта для создания резервных копий настроек аппаратных коммутаторов).

Кроме того, определённую гибкость Bacula даёт возможность определять список файлов/директорий как в конфигурационных файлах директора (dir), так и в конфигурационных файлах непосредственно клиента (fd).

Куда?

Следующий логичный вопрос: «Где можно разместить бэкап?». В плане поддерживаемых платформ, обслуживающих сервер с резервными копиями (sd), мы предпочитаем работать с GNU/Linux. Впрочем, в Bacula есть поддержка и других ОС, среди которых — Windows, FreeBSD и Solaris. (Подробности можно найти в официальной документации)

Bacula поддерживает следующее аппаратное обеспечение:

  • обычные жесткие диски и любые RAID-массивы, внешние диски и т.п., поддерживаемые Linux;
  • подавляющая часть стримеров (ленточных накопителей), поддерживаемых Linux;
  • все авточенджеры, поддерживаемые в Linux через команду mtx или через другие скрипты;
  • CD/DVD-диски (в том числе и с авточенджером);
  • внешние жёсткие диски или USB-флэшки (в таком случае напоминание подключить устройство можно высылать оператору, например, по SMS).

Как правило, в простейшем случае для бэкапов используются жёсткие диски, а для более промышленных решений — конфигурации на кассетах стандартов LTO-3, LTO-4, LTO-5 и ленточные накопители таких производителей, как IBM и HP (у нас есть положительный опыт работы и с простыми, и с enterprise-моделями накопителей).

Кроме того, в Bacula поддерживается как программное сжатие данных с помощью библиотеки gzip (это повышает требования к процессору, но не критично), так аппаратное сжатие (если оно поддерживается стриммером).

Как?

Bacula поддерживает три типа резервного копирования файловых систем:

  • Полный бэкап (full) — сохраняются все файлы.
  • Дифференциальный бэкап (differential, «разностный») — сохраняются файлы, изменившиеся с последнего полного бэкапа. Для восстановления потребуются последний полный и последний дифференциальный бэкапы.
  • Инкрементальный бэкап (incremental, «добавочный») — сохраняются файлы, изменившиеся с любого последнего бэкапа (полного, дифференциального или инкрементального). Этот вариант использует меньше места, но при восстановлении потребуются последний полный и все инкрементальные бэкапы.

В случаях использования дифференциального и инкрементального бэкапа Bacula учитывает важные нюансы:

  • система правильно отслеживает и сохраняет изменения прав доступа;
  • для отслеживания изменения файлов можно использовать не только время модификации файла, но и контрольную сумму MD5 или SHA1;
  • правильно отслеживается удаление файлов (sd формирует полный список файлов и передаёт его fd, который сообщает, какие из этих файлов были удалены).

Когда?

Грамотное создание резервных копий во многом определяется расписанием, которое должно соответствовать бизнес-процессам предприятия. Bacula обладает широкими возможностями в определении графика подготовки бэкапов:

  • можно указывать время (часы, минуты, секунды), дни недели, дни месяца, номера недель в году и т.п.;
  • можно оперировать такими понятиями, как «каждая третья неделя» или «каждое пятое воскресенье»;
  • расписание можно определять отдельно для каждого вида бэкапа (полного, дифференциального, инкрементального) и для каждого клиента (или даже набора файлов).

При этом Bacula позволяет устанавливать в графике максимальное время выполнения бэкапа («Max Run Sched Time»). Наличие и соответствующее использование этой функции позволяет осуществлять резервное копирование, не загружая системы, задействованные в производстве (во время рабочего дня).

Управление

Резервное копирование, реализованное на базе Bacula, управляется с помощью различных интерфейсов. Наиболее распространенные из них:

  • bconsole — консольный (основной);
  • Bacula Administration Tool — графический интерфейс на базе Qt, доступный для GNU/Linux и Windows;
  • webacula — веб-интерфейс; видео с демонстрацией его основных возможностей можно найти на YouTube: часть 1 и часть 2.

Самая частая задача оператора системы бэкапов — это восстановление файлов. Для её решения вне зависимости от выбранного интерфейса нужно выполнить следующие шаги:

  • Определить, какие файлы и в каком состоянии (с изменениями от какого числа) восстанавливать.
  • Определить, куда восстанавливать (на какой клиент и в какую директорию).
  • Запустить процесс восстановления и дождаться окончания.

Все остальные операции возьмёт на себя сама Bacula.

Другие особенности

Управление набором файлов

В терминологии Bacula набор файлов называется FileSet. С его помощью можно определить, какие файлы входят в бэкап. Для этого используются секции включения и исключения: Include и Exclude. Перечислять файлы можно с помощью шаблонов: либо строк со «звёздочками» (wild strings), либо регулярных выражений. Различные параметры (сжатие, способ определения изменения файлов и многое другое) для каждой Include-секции задаются индивидуально.

Определять список файлов / директорий для резервного копирования можно:

  • простым перечислением в конфигурационном файле;
  • указанием файла со списком на директоре (dir) или на клиенте (fd);
  • вызовом команды, возвращающей список файлов, на директоре (dir) или клиенте (fd).

Вызов скриптов

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

Так, для каждого «задания» резервного копирования можно определить один и более скриптов, которые будут вызываться:

  • в случае успешного завершения создания бэкапа;
  • при ошибке во время создания бэкапе;
  • до и/или после создания бэкапа.

Сами скрипты могут запускаться как на клиенте (fd), так и на директоре (dir).

В настройках хранилища можно задавать следующие скрипты:

  • скрипт для авточенджера;
  • команда для проверки состояния носителя после окончания каждого бэкапа (для проверки на наличие аппаратных ошибок записи);
  • скрипт монтирования / демонтирования.

Не стоит забывать и про поддержку скриптов, возвращающих перечень файлов для бэкапа (см. предыдущую секцию — «Управление набором файлов»).

База данных для Bacula

Bacula хранит метаинформацию обо всех файлах и созданных бэкапах в своей базе данных. В терминологии Bacula она называется Catalog. Для организации этой БД поддерживаются MySQL и PostgreSQL. Есть и поддержка более скромной SQLite, однако её использование не рекомендуется из соображений производительности.

На случай, если в результате сбоя была потеряна база данных самой Bacula (Catalog), предусмотрена возможность генерации и восстановления по bootstrap-файлам.

Связь

Для функционирования системы резервного копирования на базе Bacula необходимо обеспечить доступ некоторых компонентов друг к другу:

  • директор (sd) должен иметь доступ ко всем элементам системы (скорость связи не является критичной);
  • агенты (fd) должны иметь доступ к хранилищам (sd), на которые записываются их бэкапы (здесь скорость связи, равно как скорость чтения с fd и записи на sd, влияет на общее время создания резервных копий).

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

Для обеспечения связности узлов на разрозненных объектах, как правило, отдельно настраивается VPN-сеть.

Уведомления

Уведомления в Bacula настраиваются в конфигурационных файлах хранилища (sd), агента (fd) и директора (dir).

Как правило, все уведомления отправляются директору (dir), который затем рассылает их операторам / администраторам системы резервного копирования.

Отправка уведомлений осуществляется вызовом произвольной команды, что позволяет использовать любой удобный способ оповещения (например, письмо по электронной почте, сообщение в Jabber или SMS) и складывать все нужные сведения в базу данных для последующего контроля.

Итог

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

Бэкапы с Bacula в компании с филиалами

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