Pull to refresh

Box Backup – горячие резервные копии.

Reading time14 min
Views20K
Вопросы резервного копирования никогда не утратят свою актуальность. Это то, без чего не возможно представить ни одну информационную структуру. Сегодня мы поговорим об on-line способе создания резервных копий.


Как это делают «обычно»?
Когда говорят о создании бэкапов существующей информационной структуры, на ум сразу приходят скрипты из cron'а, инкрементные архивы, мощный сервер с огромным дисковым массивом, стример и другие устройства записи на внешние носители. Без всего этого довольно сложно представить себе полноценную систему резервного копирования, хотя многие до сих пор каким-то образом работают вообще без бэкапов. Не стану описывать и доказывать необходимость иметь «крепкие тылы», потому что это известно всем.

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

Вы берёте за основу одну из схем резервирования, ДОБАВЛЯЕТЕ необходимую на ваш взгляд ИЗБЫТОЧНОСТЬ и вводите полученное решение в эксплуатацию. Не самым плохим вариантом будет схема приведённая ниже:

• Раз в месяц делается полное резервное копирование абсолютно всех нуждающихся в этом файлов.
• Ежедневно происходит копирование изменённых за текущий день данных.
• Еженедельно копируются все изменённые за неделю данные.
• Раз в две недели копируются все изменённые за этот период файлы или же объединяются архивы за две недели.
• Схема повторяется снова до тех пор, пока не наступит новый месяц.

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

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

Схемы, подобные описанной, используются во многих компаниях. Используя такую схему можно быть уверенным в том, что все файлы будут восстановлены на момент создания последней «дневной» копии. При достаточно больших объёмах данных (что разумеется не редкость) вы вынуждены использовать внешние носители для хранения и иметь необходимое количество пространства на жёстких дисках для создания хотя бы одной полноценной копии. (Условие не обязательное, но сильно упрощающее жизнь.)

Данная и похожие на эту схемы работают во многих компаниях и весьма давно. Однако, они имеют ряд существенных недостатков. Среди которых:

• Известные проблемы при резервном копировании «внешних» пользователей. Вы не можете заставить пользователей ноутбуков ежедневно оставлять свои компьютеры включёнными в офисе.
• Проблемы безопасности резервных копий.
• Сравнительно большое количество времени для восстановления, как единичных утраченных файлов, так и больших массивов.
• Неудобство работы с архивами – время поиска по базе резервных копий может оказаться весьма продолжительным.
• Необходимость в помощи системного администратора для работы с архивами.

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

Online бэкапирование Box Backup.
Система относится к online резервному копированию. Почему оно носит такое название?

В отличие от описаной выше схемы, «горячее» резервное копирование делается… постоянно. Это как замена вышедшего из строя блока питания сервера без его выключения. (Думаю, вы сталкивались с такими компьютерами или хотя бы слышали о них.) Создание резервной копии файлов пользователя происходит в интерактивном режиме по мере их изменения. Схема работы проста:

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

Другими словами, в резервной копии всегда (!) находятся самые последние версии файлов. В случае потери данных на исходной системе, вы можете безболезненно и быстро восстановить их в полном объёме. Заманчиво не правда ли?

Система Box Backup может работать в довольно внушительном списке OS:
• OpenBSD;
• Linux;
• NetBSD;
• FreeBSD;
• Darwin / Mac OS X 10.5;
• Cygwin (Windows) (только клиент);
• Native Windows (только клиент);
• Solaris.

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

• Если пользователь удалил файлы, что будет с резервной копией?
• Постоянное копирование файлов подразумевает огромный сетевой трафик и большую загрузку сервера бэкапов. Как решить эту проблему?
• Чем обеспечивается безопасность копий?
• А если файлов очень много, то сколько ресурсов для своей работы потребуется программе для проверки изменений?

Процедура удаления.
Файлы которые были удалены из системы на самом деле никуда не исчезают. (Я говорю, разумеется, не о клиентском компьютере.) В резервной копии они лишь помечаются как удалённые. Пользователь (да-да, пользователь, а не системный администратор, но об этом позже) в любое время может спокойно попросить систему вернуть удалённый по ошибке файл. Из архива промаркированные данные исчезнут только тогда, когда допустимый объём отведённый под резервирование приблизится к той отметке, за которой выбора нет – либо вычищать помеченные файлы, либо некуда копировать новые.

Требовательность к ресурсам.
Большую сетевую нагрузку, как и следовало ожидать, на самом деле можно наблюдать только при создании первоначального бэкапа, когда системе необходимо единовременно перенести большое количество данных. Однако, приоритет процесса (по-умолчанию) клиента Box Backup довольно низок и рассчитан так, чтобы не мешать общей работе компьютера. Он работает в фоновом режиме и не вносит ощущения дискомфорта от «задумчивости» системы в целом. В последствии, системе потребуется переносить только новые или изменённые файлы, а это не такой большой трафик.

Безопасность резервного копирования.
Обеспечению безопасности уделено не мало внимания.

• Авторизация клиента на сервере бэкапов.
• Безопасность передачи данных.
• Шифрование данных.
• Защита структуры данных.
• Безопасность хранения данных.

Для авторизации клиента на серверной стороне системы Box Backup используется SSL. На каждом компьютере, данные которого нуждаются в резервировании создаётся SSL сертификат, который подписывается на сервере.

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

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

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

Установка серверной части Box Backup.
Я буду рассматривать установку Box Backup на примере системы gentoo. Установка в других системах будет отличаться только несколькими деталями, о которых я упомяну позже.

Итак, сначала установим серверную часть системы. ebuild Box Backup'а есть в стандартном дереве портов, так что нам потребуется только воспользоваться стандартной процедурой установки пакетов в системе gentoo.

#emerge -av boxbackup

Обратите внимание, что по-умолчанию вам будет предложено установить более старую версию системы – 0.09. Я бы рекомендовал проследовать по дереву портов до нужной ветки и установить более новую версию, так как в неё внесли множество исправлений.

#cd /usr/portage/app-backup/boxbackup
#emerge -av boxbackup-0.10.ebuild

Разумеется, можно внести исправления в ваш /etc/portage/package.keywords, но смысла делать это ради одного пакета (система не потребует других пакетов для своей работы) я не вижу.

После того, как сборка пакета закончится, можно приступить к конфигурированию. Здесь важно отметить один момент. Если в вашей системе для резервного копирования нет raid контролера, а используются просто несколько дисков – Box Backup предлагает создать несколько директорий, которые обеспечат избыточность в случае ошибок на дисках.

В случае, если raid установлен, то от использования этой структуры можно смело отказываться.

Для использования «raid'а» от Box Backup выполним следующую команду:

#raidfile-config /etc/boxbackup 2048 /raid/0.0 /raid/0.1 /raid/0.2

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

#raidfile-config /etc/boxbackup 2048 /raid/0.0

Список параметров в этой команде:
• /etc/boxbackup – директория, где будут созданы конфигурационные файлы. (Если вы устанавливаете систему не в gentoo linux, то по-умолчанию используйте директорию /etc/box);
• 2048 – размер блока файлов;
• /raid/0.0 и остальные – директории, где будут храниться непосредственно бэкапы. Эти директории должны быть созданы вами. Автоматически они созданы не будут.

После того, как файл конфигурации готов, создадим пользователя от которого будет работать Box Backup.

#useradd _bbstored

И создадим основной конфигурационный файл системы:

#bbstored-config /etc/boxbackup hostname _bbstored

Где:
• /etc/boxbackup – директория конфигурационных файлов;
• hostname – имя компьютера;
• _bbstored – имя пользователя, от которого работает система.

Если вы собирали пакет самостоятельно в другой системе – для конфигурационных файлов используйте директорию /etc/box.

Выполнение этой команды создаст основной конфигурационный файл системы Box Backup /etc/boxbackup/bbstored.conf, в котором прописываются основные параметры.

Присвоим нашему пользователю _bbstored права на директорию

#chown -R _bbstored /etc/boxbackup/bbstored
#chmod -R go-rwx /etc/boxbackup/bbstored

На этом конфигурирование серверной части системы Box Backup закончено. Остаётся лишь создать сертификат SSL нашей системы и добавить учётные записи клиентов. Сделаем это после установки клиентской части на машину, с которой будет производиться резервное копирование.

Установка клиентской части системы Box Backup в Linux.
Так как мы говорим о gentoo linux и в предыдущем выводе команды

#emerge -av boxbackup-0.10.ebuild

наверняка заметили флаг -client-only, то им и воспользуемся. Выполним на системе, нуждающейся в резервировании следующую команду:

#cd /usr/portage/app-backup/boxbackup
#USE='client-only' emerge boxbackup-0.10.ebuild

это установит в нашу систему клиента системы.

После того, как клиент установлен, настроим его на работу с нашим сервером. Здесь возможны два варианта:

• lazy – в этом режиме демон резервного копирования bbackupd постоянно следит за изменениями файлов и как только изменённый файл закрывается – переносит его в резервную копию.
• snapshot – работа этого режима понятна по его названию. Раз в установленный вами промежуток времени, запускается команда bbackupctl sync, получив которую демон bbackupd начинает сканировать все указанные в конфигурационном файле директории. В случае обнаружения несовпадений даты последнего изменения – файл переносится на сервер резервных копий.

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

Разумеется, никто не мешает вам установить сервер Box Backup так, чтобы он был доступен извне. Но в таком случае следует учитывать количество трафика, которое будет создаваться компьютерами при резервном копировании.

Запустим команду, которой создадим основной конфигурационный файл, ключ системы и SSL сертификат для авторизации на удалённом сервере.

#bbackupd-config /etc/boxbackup lazy account_name hostname /var/bbackupd /home

Где:
• /etc/boxbackup – место хранения конфигурационных файлов;
• lazy – способ резервирования;
• 99 – имя учётной записи на сервере бэкапов (обычно, я использую просто последние цифры ip адреса компьютера);
• hostname – сетевое имя сервера бэкапов (Не укажите в данном параметре случайно имя вашего компьютера!);
• /var/bbackupd – место, где будут храниться временные файлы системы Box Backup (убедитесь, что там достаточно свободного места);
• /home – путь для резервного копирования (папки легко настраиваются в конфигурационном файле и мы скоро об этом поговорим).

Теперь нам осталось только указать папки, резервные копии которых мы хотим делать и правила для них. Основной конфигурационный файл Box Backup клиента находиться в директории /etc/boxbackup и называется bbackupd.conf.

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

Структура описания такова:

BackupLocations
{
home-directory
{
Path = /home
ExcludeDir = /home/ftp
ExcludeFilesRegex = *.(avi|AVI)$
}
etc
{
Path = /etc
}
}

home-directory и etc в данном случае это условные описания директорий для системы Box Backup. Именно под этими именами они будут отображаться при запросе в резервную копию.

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

ExcludeDir – это, как несложно догадаться опция исключения из резервирования некоторой подпапки.

ExcludeFilesRegex – маска, указывающая расширения файлов, которые следует игнорировать и не переносить в резервную копию.

Остальные опции не менее понятны и в отдельном описании не нуждаются.

Режимы lazy и snapshot в конфигурационных файлах отличаются только параметрами:

AutomaticBackup = no
UpdateStoreInterval = 0
MinimumFileAge = 0
MaxUploadWait = 0

(в случае режима snapshot). Для изменения режима работы достаточно поменять значения этих переменных на другие параметры, которые всегда можно посмотреть на соседней системе. Не стоит заново запускать команду конфигурирования, так как она подменит ваш ключ шифрования и SSL сертификаты. В таком случае, процедуру подписи придётся повторять. (Конечно, можно предварительно скопировать ключ и SSL сертификат, но… не проще ли изменить значение нескольких переменных?)

Теперь, когда мы настроили клиентскую и серверную часть системы Box Backup, самое время разобраться с сертификатами SSL для авторизации.

SSL сертификаты для серверной части.
Для создания базовой структуры сертификатов запустим команду:

#bbstored-certs ca init

Если вы получили какие-либо ошибки при выполнении этой команды, пожалуйста, убедитесь в первую очередь, что у вас установлен пакет OpenSSL.

После формирования сертификата, подпишем его:

#bbstored-certs ca sign-server hostname-csr.pem

На этом подготовка сертификатов для серверной части Box Backup завершена.

SSL сертификаты для клиентской части.
У нас уже есть клиентский SSL сертификат, нам лишь необходимо подписать его на сервере, а заодно и скопировать на клиента сертификат с сервера. Для этого, необходимо передать (scp, samba, ftp или другим способом) на сервер файл /etc/boxbackup/bbackupd/account_name-csr.pem

Лучше всего поместить клиентский сертификат на сервере в папку /etc/boxbackup/bbackupd/

После этого, выполнить на сервере команду:

#bbstored-certs /ca sign /etc/boxbackup/bbackupd/account_name-csr.pem

Ответив на запрос Yes, мы подпишем сертификат и увидим инструкцию о том, что нам необходимо скопировать на клиента два файла:

/ca/clients/account_name-cert.pem
/ca/roots/serverCA.pem

На клиентской стороне эти файлы положим в /etc/boxbackup/bbackupd.

Теперь осталось только создать учётную запись для нашего клиента на резервирование.

Создание учётной записи в системе резервного копирования.
Для создания учётной записи воспользуемся командой:

#bbstoreaccounts create account_name 0 10000M 15000M

Где:
• account_name – имя учётной записи в числовом виде (например, как я уже говорил, последняя цифра в ip адресе клиента).
• 10000M – мягкий лимит на размер бэкапа. В данном случае, я выделил 10 гигабайт на пользователя (можно так же указать 10G).
• 15000М – жёсткий лимит на размер бэкапа.

После этого можно смело стартовать сервисы клиента и сервера системы Box Backup. Система резервного копирования готова!

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

Команда:
#bbstoreaccounts info account_name

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

Account ID: 00000003
Last object ID: 390831
Blocks used: 59659618 (116522.69Mb)
Blocks used by old files: 110818 (216.44Mb)
Blocks used by deleted files: 1670369 (3262.44Mb)
Blocks used by directories: 73637 (143.82Mb)
Block soft limit: 61440000 (120000.00Mb)
Block hard limit: 64000000 (125000.00Mb)
Client store marker: 1145862657000000

Как вы видите, всё довольно прозрачно и понятно.

Команда:
#bbstoreaccounts setlimit account_name 30000M 35000M

изменит допустимый объём резервной копии для данного пользователя. (Как я уже писал выше, объём можно указывать и в гигабайтах.)

Для проверки резервной используйте команду:
#bbstoreaccounts check account_name

и, в случае возникновения ошибок, исправляем с помощью:
#bbstoreaccount check account_name fix

Ну и напоследок, команда:
#bbstoreaccounts delete account_name

удалит существующую учётную запись.

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

Вывод справки утилитой bbackupquery.
Рис 1. Вывод справки утилитой bbackupquery.

Эта утилита работает, как удалённый шелл. Она не нуждается в работающем демоне bbackupd и позволяет общаться с сервером бэкапов посредством вводимых команд. Соединение с сервером устанавливается при помощи всё тех же SSL сертификатов и по прежнему проходит при TLS шифровании канала.

На рисунке 1 показан вывод команды help. Как вы видите, доступно довольно большое количество команд, среди которых есть даже compare позволяющая сравнивать версии файлов на локальном жёстком диске и файлов, имеющихся в резервной копии. Работа с bbackupquery в чем-то аналогична общению с ftp сервером посредством консольного клиента, поэтому останавливаться на ней подробно я не буду.

Список директорий (по меткам из конфигурационного файла).
Рис 2. Список директорий (по меткам из конфигурационного файла).

Графическая оболочка Boxi.
Разумеется, мир не без добрых людей и существует графическая оболочка для работы с бэкапом. Проект под названием boxi. Она обладает довольно спартанским интерфейсом, но тем не менее позволяет гораздо удобнее общаться с вашей резервной копией, нежели консольная bbackupquery и позволяет выполнять все основные операции по работе с резервной копией. Такие как – сравнение версий, удаление из архива, восстановление файлов, обзор структуры каталогов и так далее.

Аскетичная boxi.
Рис 3. Аскетичная boxi.

Однако, на данный момент использование Boxi не возможно. Причина в том, что эта утилита может работать только с версией Box Backup 0.09, а как я уже писал выше, версия 0.10 претерпела множество изменений и рекомендована к уставновке. По словам разработчика этой утилиты, следующей версии, готовой к работе с 0.10 версией, следует ожидать не ранее, чем через три месяца.

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

Следует так же отметить, что для работы Boxi нуждается во всех конфигурационных файлах Box Backup системы. Поэтому при её использовании многие запускают bbackupd процесс не от системы, а от своего пользователя.

Резервное копирование windows систем.
Пока что я обходил вниманием использование системы бэкап копирования windows рабочих станций (и серверов, конечно). Объясню почему.

На сайте вы можете найти Windows native client, работающий как минимум в системах семейства Windows 2000 и Windows XP. В архиве вы найдёте все необходимые файлы, которые рекомендуется скопировать в директорию c:\Program Files\Box Backup\

Останется только сформировать сертификат клиента, подписать его на сервере и передать подписанный и серверный сертификаты обратно. И тут могут возникнуть некоторые сложности. Дело в том, что скрипты отвечающие за формирование сертификатов написаны на языке perl и нет никаких гарантий, что он окажется в вашей windows системе. Можно путём долгих мучений добиться желаемого результата, но есть способ гораздо более быстрый и удобный.

На любой вашей linux системе, предварительно сохранив директорию /etc/boxbackup/bbackupd в надёжном месте… сформировать сертификаты для windows системы. А почему нет? Ведь не важно, где будет создан ключ шифрования и сертификат. После этого останется только подписать вновь созданный сертификат и передать необходимые файлы на windows систему. И не забудьте вернуть содержимое папки bbackupd на его законное место.

Таким образом подключение windows рабочей станции к резервному копированию так же становится весьма простой задачей.

В MS Windows вам точно так же доступны все опции конфигурационных файлов Box Backup и оба режима – lazy, snapshot. Для того, чтобы проинсталировать bbackupd в качестве системного сервиса достаточно запустить команду:

bbackupd -i

Графическая оболочка Boxi так же существует под Windows, но по описанным выше причинам она вам вряд ли пока что пригодится, только если вы не собираетесь вернуться к версии 0.09 Box Backup'а.

Это важно.
Важно помнить, что вся информация в резервной копии зашифрована и не может быть извлечена без наличия ключа FileEncKeys.raw. Поэтому, настоятельно рекомендуется скопировать содержимое всех папок /etc/boxbackup/bbackupd в защищенное от постороннего доступа место, а так же перенести на внешний носитель и убрать подальше. В случае утраты ключа, восстановление файлов из архива станет невозможным.

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

Удачного вам горячего резервного копирования!

Ссылки:
[1] boxi.sourceforge.net
[2] boxbackup.hostworks.ca/index.php/0.10

akeeperКоршунов Алексей.
Впервые опубликовано в журнале «Системный администратор».
Tags:
Hubs:
+5
Comments8

Articles

Change theme settings