Рубрика:
Администрирование /
Продукты и решения
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АНДРЕЙ МАРКЕЛОВ
Linux на страже Windows Обзор и установка системы резервного копирования BackupPC
Думаю, в настоящее время никто уже не станет спорить с утверждением, что процесс вхождения Linux в корпоративный мир стал необратимым, а процент установок этой операционной системы на серверах в различных организациях постоянно возрастает.
Можно бесконечно спорить о преимуществах одних операционных систем над другими, но когда у меня возникло желание сделать единое хранилище для ежедневных архивов информации с более десяти серверов своей организации, работающих под управлением нескольких различных ОС, я свой выбор остановил на платформе Linux. До сих пор каждый сервер с помощью уникальных для него скриптов в назначенное время сбрасывал по сети на сервер резервного копирования или stand by-сервер какие-то свои данные, например, пользовательские файлы с сетевых дисков, или дампы базы данных. Для этого использовались различные протоколы: ftp, SMB или штатные средства СУБД. При этом приходилось следить за уникальным для каждого сервера лог-файлом, и в случае каких-либо изменений в стратегии резервного копирования править скрипты на каждой машине.
Чтобы как-то упростить администрирование и сократить время, затрачиваемое на поддержку и мониторинг всего этого «зоопарка», я начал искать систему, которая бы поддерживала копирование информации по сети, умела делать инкрементальные бэкапы, поддерживала бы удаленное администрирование и не требовала установки клиентского программного обеспечения. Кроме того, было важно, чтобы система умела работать по протоколу SMB, так как часть серверов, в частности основной файл-сервер, работали под управлением ОС Windows.
Спустя непродолжительное время такая система была найдена. Ею оказалась открытая, распространяющаяся по лицензии GNU система архивирования данных масштаба предприятия BackupPC. Сайт расположен по адресу http://backuppc.sourceforge.net.
Основные особенности рассматриваемой программы:
- Язык программирования, на котором написана система, – Perl.
- Минимизация хранимой информации за счет того, что идентичные файлы из разных резервных копий хранятся только в одном экземпляре.
- Настраиваемая степень сжатия данных.
- Поддержка работы по протоколам smb/ssh/rsh/nfs.
- Мощный CGI-интерфейс, позволяющий управлять сервером по сети посредством веб-браузера.
- Поддержка архивирования информации с машин, получающих настройки сети через DHCP, разрешая имена при помощи nmblookup.
- Гибкие настройки планирования архивации данных.
- Оповещения о выполненных действиях администратора и пользователей посредством электронной почты.
- Поддержка клиентов, работающих под управлением Linux, Freenix, Solaris Win95, Win98, Win2000 и WinXP. Сервер тестировался на Linux, Freenix и Solaris.
- Очень подробная документация.
В данной статье я хочу обобщить свой опыт установки, настройки и эксплуатации этой системы, а также поделиться решением нескольких проблем, которые возникли в процессе установки.
Я проверял работу BackupPC версии 2.1.0, последней на момент написания статьи, при помощи тестовой машины под управлением Fedora Core 2, и на «боевых» серверах, работающих на Red Hat Linux 9 и White Box Enterprise Linux 3. Операционная система, стоящая на тестовом сервере фактически является альфа-версией будущего Red Hat Enterprise Linux 4, а White Box Enterprise Linux 3 перекомпиляцией из свободно доступных исходных текстов текущей, третьей версии коммерческого Linux-дистрибутива от Red Hat.
Необходимость использовать не поддерживающуюся более «девятку» возникла при установке RAID-контроллера Promise SuperTRAX SX6000, для которого существовали драйвера только под эту операционную систему.
Требования к установке
Прежде чем приступить непосредственно к инсталляции и настройке самой системы резервного копирования BackupPC, необходимо определиться с требованиями к программному окружению, в котором должен работать сервер.
Во-первых, как я уже писал, это операционная система, в роли которой может выступать Linux, Solaris либо другая UNIX-подобная система. Во-вторых, необходимо предусмотреть наличие вместительного RAID-массива, или использовать LVM. Кроме того: Perl версии 5.6.0 или выше, Samba- и Apache-сервер.
В этой статье я не буду касаться настройки клиента Samba, в частности, работы в составе Active Directory. Я предполагаю само собой разумеющимся, что если вы планируете производить архивацию информации с Windows-серверов, работающих в составе домена, то и должны обеспечить к ним доступ вашей Linux-машины. Отсутствие описания процесса конфигурирования Samba-сервера в данной статье, думаю, компенсируется многочисленными материалами на эту тему в Интернете.
Также предполагается, что вы используете кодировку KOI-8 вместо установленной по умолчанию в большинстве современных дистрибутивов UTF-8. Red Hat, в частности, перешла на ее использование с версии 8.0 своего продукта. Но дело в том, что поддержка русского языка при помощи UTF-8 во многих приложениях далека от совершенства. Безусловно, лучшим решением была бы работа с UTF-8, но в данном случае я предпочел пойти по пути «наименьшего сопротивления» и воспользоваться уже существующими у меня наработками.
Соответственно должен быть настроен и веб-сервер, у которого в качестве кодировки по умолчанию должно быть указано KOI8-R.
Приступая к установке BackupPC, в системе необходимо иметь следующие perl-модули: Compress::Zlib, Archive::Zip и File:RsyncP. Проверить наличие установленных модулей можно, дав команду:
perldoc <имя модуля>
Если в ответ будет получено сообщение вида:
No documentation found for "Compress::Zlib" |
следовательно, в вашей системе данный модуль еще не установлен. Оба дистрибутива, в которых я устанавливал BackupPC, по умолчанию этих модулей не содержат.
Процедура установки модулей, которые можно скачать с www.cpan.org, следующая:
#tar zxvf имя_архива.tar.gz // разархивируем исходники
#perl Makefile.PL // формируем makefile
#make // компилируем исходники
#make test // после выполнения этой команды мы должны получить сообщение, что все тесты пройдены успешно
#make install
Имеющие опыт общения с оболочкой cpan, могут поступить проще – для установки модулей воспользоваться ею.
В случае RHEL3 для успешной компиляции модуля Archive::Zip пришлось дать команду:
export LANG=en_US
без которой он отказался «собираться».
Кроме того, мне пришлось установить отсутствующую в дистрибутивах от Red Hat утилиту par2, которая создает «избыточную информацию» для файлов с использованием кодов Рида-Соломона, и позволяет восстанавливать файлы, повреждённые до определённой степени. Скачиваем с сайта http://parchive.sourceforge.net исходники в виде файла par2cmdline-0.4.tar.gz, и выполняем команды:
#tar zxvf par2cmdline-0.4.tar.gz
#cd par2cmdline-0.4
#./configure
#make
#make check
#make install
В принципе установка par2cmdline не обязательна, так как по умолчанию BackupPC работает и без нее. Но все же я рекомендовал бы ее установить, особенно при отсутствии RAID-массива на сервере.
Также для корректной работы CGI-интерфейса при стандартной установке системы, когда веб-сервер запускается из-под специально выделенного для этих целей пользователя (httpd или apache), требуется Suid Perl. В Red Hat дистрибутивах соответствующий пакет называется perl-suidperl.
Ну и, наконец, добавим пользователя, из-под которого будет выполняться запуск системы резервного копирования:
#useradd backuppc
После окончания тестирования системы нелишним будет убрать для пользователя backuppc возможность интерактивного входа.
Установка BackupPC
Теперь можно приступить непосредственно к установке BackupPC. Развернем архив и запустим конфигурационный скрипт:
#tar zxvf BackupPC-x.x.x.tar.gz
#cd BackupPC-x.x.x
#perl configure.pl
В ходе установки вам потребуется ответить на ряд вопросов. На первый – просьбу указать полный путь к уже установленной старой версии – можно ответить, просто нажав «Enter», поскольку выполняется первоначальная установка. После вам будут показаны пути к утилитам, требуемым BackupPC, которые скрипт определил самостоятельно, с просьбой подтвердить их расположение. Затем необходимо проверить, правильно ли скрипт определил имя хоста и имя пользователя, которого мы создали ранее, а также директорию для установки исполнимых файлов и директорию для хранения данных.
В зависимости от быстродействия сервера вам необходимо будет выбрать уровень компрессии резервируемых данных. Уровень можно менять от 1 до 9. По умолчанию предлагается третий уровень. По заявлениям разработчиков, при увеличении c «умолчальной» тройки до пятерки, например, загрузка процессора увеличивается на 20%, а данные занимают на 2-3% меньше места. По этим данным видно, что особого смысла увеличивать степень сжатия нет. При первоначальной установке я бы порекомендовал оставить тройку. Позднее можно попробовать поэкспериментировать с этим значением, поменяв его в конфигурационном файле.
Следующий вопрос касается пути к cgi-bin директории вашего веб-сервера (в Red Hat-подобных дистрибутивах это /var/www/cgi-bin/) и пути к директории с устанавливаемыми иконками для CGI-интерфейса (/var/www/html/BackupPC). Кроме того, будет предложено ввести часть URL, указывающего на иконки, а именно расположение относительно корневого каталога веб-сервера. Обратите внимание, что путь должен начинаться со слэша. В нашем случае он будет выглядеть как /BackupPC.
Настройка BackupPC
Как и большинство программ, работающих под управлением UNIX-подобных систем, настройка и изменение параметров сервера BackupPC производится правкой конфигурационных файлов. К чему мы и приступим.
Интересующий нас файл config.pl расположен в подкаталоге /conf, который был создан внутри директории, предназначенной для хранения данных. На самом деле этот файл очень хорошо документирован, поэтому я пройдусь лишь по основным параметрам. Config.pl состоит из четырех групп настроечных значений, содержащих:
- основные параметры сервера;
- описание тех машин, информацию с которых нужно архивировать;
- указания, как часто это надо делать;
- параметры CGI-интерфейса.
- $Conf{WakeupShedule} – как часто сервис должен проверять, были ли изменения на подлежащих архивированию компьютерах, и в случае изменений выполнять резервирование данных. По умолчанию – каждый час, кроме полуночи.
- $Conf{MaxBackups} – максимальное число одновременных процессов архивирования.
- $Conf{DfMaxUsagePct} – при заполнении указанного в процентах объема диска, заданного для хранения данных, архивирование не производится. По умолчанию 95%.
- $Conf{SmbShareName} – имя расшаренного ресурса на Windows-машине. По умолчанию – это диск C:, который в Win2000/XP доступен через SMB по имени «С$».
- $Conf{SmbShareUserName} – имя пользователя на Windows-машине, которому даны права на ресурс общего доступа .
- $Conf{SmbSharePasswd} – его пароль. В настоящее время он приводится в открытом виде. В следующих версиях планируется хранение в зашифрованном виде.
- $Conf{FullPeriod} – период в днях между полными резервными копиями.
- $Conf{IncrPeriod} – период в днях между инкрементальными резервными копиями.
- $Conf{FullKeepCnt} – максимальное число сохраняемых полных резервных копий. $Conf{BackupFilesOnly} – список директорий, которые необходимо архивировать. По умолчанию – не определено.
- $Conf{BackupFilesExclude} – то же самое, но для директорий-исключений.
- $Conf{ArchivePar} – при использовании par2cmdline процент избыточных данных в архиве. По умолчанию – 0.
- $Conf{EmailAdminUserName} – почтовый адрес администратора, на который будут приходить сообщения об ошибках и предупреждениях.
- $Conf{CgiAdminUserGroup} и $Conf{CgiAdminUsers} – пользователи и группы, которым доступен CGI-интерфейс.
Обратите внимание, что параметры, относящиеся к конкретной машине, могут быть переопределены машинно-зависимым файлом Config.pl, который хранится в поддиректории каталога с данными /BackupPC/pc/<имя_компьютера>/. Действительно, на каждой машине могут быть свои конкретные папки общего доступа, списки исключений, свой локальный пользователь с паролем, для которого установлены свои разрешения.
Теперь настроим список компьютеров, данные с которых необходимо архивировать. Файл с настройками находится в том же каталоге, где и основной конфигурационный файл, и называется hosts. Собственно, синтаксис файла максимально прост. Каждая строчка содержит три параметра: имя машины, имя (e-mail) ее хозяина и признак, получает ли данный компьютер сетевые настройки по DHCP или нет.
Теперь осталось скопировать скрипт старта и остановки сервиса из дистрибутива /init.d/linux-backuppc в /etc/rc.d/init.d/backuppc, в случае Red Hat дистрибутива, а затем можно попробовать стартовать BackupPC командой:
#service backuppc start
Кроме того, нелишне добавить автоматический старт при загрузке сервера в консоль и в X-Window:
#chkconfig - -add backuppc
#chkconfig - -level 35 backuppc on
К сожалению, данные действия приходится делать вручную, так как разработчики не включили эти операции в установочный скрипт.
В лог-файле messages вашего сервера должно появиться сообщение об успешном старте сервиса, а в директории с данными /BackupPC/log будет создан подробный лог самого сервиса. После успешного старта можно попробовать запустить браузер, и обратиться по адресу http://имя_сервера/cgi-bin/BackupPC_Admin. Если вы сделали все правильно, то должны получить нечто подобное тому, что изображено на рисунках. В случае проблем с доступом к CGI-интерфейсу рекомендую обратиться к FAQ на сайте http://backuppc.sourceforge.net. В большинстве случаев в первую очередь необходимо проверить права доступа к файлам и директориям BackupPC. Однако, если вы следовали приведенному порядку установки, таких проблем возникнуть не должно.
Русификация
Еще одной проблемой при работе с CGI-интерфейсом, решение которой, однако, пришлось искать самому, может стать некорректное отображение русских имен файлов и папок. Для исправления этой ситуации придется внести небольшие изменения в файл Lib.pm, расположенный в подкаталоге /CGI директории с исполняемыми файлами программы. Данный файл содержит системные процедуры BackupPC.
Во-первых, найдите в теле процедуры Header строчку:
print $Cgi->header();
и замените ее на:
print $Cgi->header(-charset=>"koi8-r");
Ну а во-вторых, в процедуре EscHTML закомментируйте предпоследнюю строчку, стоящую перед «return»:
$s=~s{([^[:print:]])}{sprintf("%02X;", ord($1));}eg;
Теперь все имена будут отображаться в нормальном виде, используя кодировку KOI-8.
Кроме того, рекомендую обратить внимание на папку /lib/BackupPC/Lang, которая находится в директории с исполнимыми файлами. Там находятся файлы с локализованными сообщениями, выводимыми CGI-интерфейсом. В комплект поставки русский язык не входит, но вам ничего не мешает создать свой файл по образцу существующих, переведя сообщения с английского на русский язык. Часть этой работы я уже проделал для своего «внутреннего» использования. Перевод, не претендующий на полноту и высокое литературное качество, я выложил на своем сайте. Скачать архив можно по ссылке http://www.markelov.net/program/bpcrus.tgz.
Интерфейс
Интерфейс системы достаточно прост и нагляден. Обратившись по адресу: http://имя_сервера/cgi-bin/BackupPC_ Admin, вы попадаете в окно с общей информацией по серверу BackupPC. В левой части окна присутствует меню с ссылками на более подробную информацию по работе всего сервера, а также выпадающее меню с возможностью выбора информации по конкретному архивируемому хосту.
Зайдя в меню по конкретному хосту, можно получить всю информацию касательно выполненных операций резервирования данных, просмотреть списки архивных копий, а также «провалиться» в любой из них и восстановить файлы и каталоги полностью или частично. Также имеется возможность скопировать любой из файлов средствами браузера на ту машину, с которой вы зашли на сервер.
Заходя в инкрементальную резервную копию, вы видите полную картину сохраненной файловой системы, то есть полную резервную копию плюс наложенную на нее инкрементальную копию. А для всех измененных файлов можно просмотреть список версий и восстановить нужную из них.
Кроме того, все операции по работе с архивами можно выполнять из командной строки, но я не вижу смысла приводить здесь синтаксис команд, поскольку он подробно описан в документации, идущей в составе дистрибутива.
В конце мне хотелось бы поблагодарить Павла Шера за ряд ценных советов, которые мне пригодились при написании статьи.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|