Алексей Коршунов
Box Backup – горячие резервные копии
Вопросы резервного копирования никогда не утратят свою актуальность. Это то, без чего невозможно представить ни одну информационную структуру. Существует необычный способ создания резервных копий, а именно – метод online-бэкапирования.
Как делают «обычное» резервировное копирование
Когда говорят о создании бэкапов существующей информационной структуры, на ум сразу приходят скрипты из 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 Linux. Установка в других системах будет отличаться только несколькими деталями.
Итак, сначала установим серверную часть системы. Ebuild Box Backup есть в стандартном дереве портов, так что мы воспользуемся стандартной процедурой установки пакетов в системе Gentoo Linux.
#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
это установит в нашу систему клиента системы Box Backup. После того как клиент установлен, настроим его на работу с нашим сервером.
Здесь возможны два варианта:
- 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 (см. рис. 1).
Рисунок 1. Вывод справки утилитой bbackupquery
Эта утилита работает как удалённый шелл. Она не нуждается в работающем демоне bbackupd и позволяет общаться с сервером бэкапов посредством вводимых команд. Соединение с сервером устанавливается при помощи всё тех же SSL-сертификатов и по-прежнему проходит при TLS-шифровании канала.
На рис. 1 показан вывод команды help. Как вы видите, доступно большое количество команд, среди которых есть даже compare, позволяющая сравнивать версии файлов на локальном жёстком диске и файлов, имеющихся в резервной копии. Работа с bbackupquery в чем-то аналогична общению с ftp-сервером посредством консольного клиента, поэтому останавливаться на ней подробно я не буду (см. рис. 2).
Рисунок 2. Список директорий (по меткам из конфигурационного файла)
Графическая оболочка Boxi
Существует графическая оболочка для работы с бэкапом. Проект под названием Boxi [1]. Она обладает спартанским интерфейсом, но тем не менее позволяет гораздо удобнee общаться с вашей резервной копией, нежели консольная bbackupquery и позволяет выполнять все основные операции по работе с резервной копией. Такие как сравнение версий, удаление из архива, восстановление файлов, обзор структуры каталогов и так далее (см. рис. 3).
Рисунок 3. Аскетичная Boxi
Однако на данный момент использование Boxi невозможно. Причина в том, что эта утилита может работать только с версией Box Backup 0.09, а как я уже писал выше, версия 0.10 претерпела множество изменений и рекомендована к уставновке. По словам разработчика этой утилиты, следующей версии Boxi, готовой к работе с Box Buckup 0.10, следует ожидать не ранее чем через три месяца.
Но если удобство для вас важнее, то, может быть, имеет смысл установить более старую версию, чтобы иметь возможность работать с графической утилитой.
Следует так же отметить, что для работы Boxi нуждается во всех конфигурационных файлах Box Backup-системы. Поэтому при её использовании многие запускают процесс bbackupd не от системы, а от своего пользователя.
Резервное копирование Windows-систем
Пока что я обходил вниманием использование системы резервного копирования Windows-рабочих станций (и серверов, конечно). Объясню почему.
На сайте [2] вы можете найти 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 использует в работе дату последнего изменения файлов.
Удачного вам горячего резервного копирования!
Ссылки:
- http://boxi.sourceforge.net
- http://boxbackup.hostworks.ca/index.php/0.10