Журнал Системный Администратор, Май 2004

Журнал Системный Администратор

Май 2004

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке

Версия для печати Вернуться к оглавлению

Зеркалирование информации

Александр Байрак

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

Трудно переоценить ту пользу, которую приносят нам резервные копии, заботливо нами же и сделанные. Сколько нервов и времени не было благодаря им потрачено впустую…

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

На работе у X есть веб-сервер, X как добросовестный админ выполняет каждодневное резервное копирование, даже скрипты для автоматизации процесса написал. И все бы ничего: резервные копии ведутся, хотите контент сайта двухнедельной давности? Пожалуйста! Но случилось страшное, злобные script-kiddies взломали веб-сервер и снесли все содержимое сайта. Конечно, не беда, есть резервные копии, и все можно воcстановить, но сколько времени это займет? Да, казалось бы, не долго, минут 20 (в лучшем случае), и все будет на месте, но эти самые 20 минут сайт компании будет в простое, (это если только содержимое сайта(ов) снесли, а что делать, если злодеи недрогнувшей рукой набрали rm –rf / )… невеселая картина вырисовывается. Вот для того чтобы этого не произошло, можно (и нужно) зеркалировать информацию. (Конечно, зеркалирование не спасет вас от script-kiddies, но подразумевается, что восстановление работоспособности сайта (или всего сервера) займет намного меньше времени.) Если бы у нашего админа имелась зеркальная копия веб-сервера, он использовал бы ее для работы, на время восстановления основного веб-сервера.

Почему я взял за основу CVSup? CVSup является пакетом программ для передачи и обновления файлов через сеть. Он состоит из двух частей – клиента и сервера. Да, есть аналогичные средства – sup и rdist, а чем CVSup-то лучше? CVSup более гибок в настройках, и обеспечивает большую скорость работы по сравнению с вышеуказанными средствами. CVSup может эффективно копировать файлы любых типов, вплоть до файлов устройств. С помощью CVSup можно зеркалировать как отдельные каталоги, так и весь сервер целиком. А что? Очень удобно получается.

Я установил систему зеркалирования на FreeBSD, но ее так же можно установить на любую другую BSD-систему или на Linux.

CVSup мной был установлен из пакаджей, которые шли вместе с системой. При желании пользователи BSD-систем могут установить этот пакет из коллекции портов, а можно самостоятельно скомпилировать из исходников, которые располагаются тут: ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup.

В сети есть и rmp-пакеты CVSup.

В общем, проблем с получением и установкой возникнуть не должно. Расписывать пошагово весь процесс не вижу смысла.

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

Перейдем от теории к практике:

Предположим, нам нужно держать зеркальные копии следующих каталогов: /var/ftp; /info; /home/user22. Для начала нам нужно создать каталоги, в которых разместятся файлы конфигурации, роль которых – указывать демону cvsupd, какие данные пересылать зеркальной машине.

#cd /etc

#mkdir –p cvsup/sup

#cd cvsup/sup

#mkdir ftp info user22

После этого создаем в каждом каталоге по 2 файла следующего содержания (расписываю на примере ftp):

Создаем первый файл:

#touch ftp.cvs

Помещаем в него следующее:

Upgrade ftp

rsymlink *

Создаем второй файл:

#touch releases

В котором пишем:

ftp list=ftp.cvs prefix=/var

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

Проделываем аналогичные манипуляции с остальными каталогами.

После успешного завершения запускаем сервер cvsupd:

#cvsupd –b /etc/cvsup –C 1 –l /dev/stdout

После опции –b указываем, где у нас лежит каталог, в котором располагаются файлы конфигурации. По умолчанию это /usr/local/etc/cvsup, если файлы с настройками вы поместили именно туда, эту опцию можно опустить. Опция –C отвечает за определение максимального количества клиентов, которые могут одновременно забирать файлы. В нашем случае это 1. После опции –l указывается место, куда выводить логи. Для меня более удобным и наглядным является вывод этой информации непосредственно на экран. Но никто не мешает вам в качестве места для логов указать какой-либо файл. Например, –l /var/log/cvsup.log – и все сообщения будут помещаться в этот файл. Если все запустилось без ошибок, то переходим к настройке машины «зеркала», на этой нам больше делать нечего. Если же возникнут какие-либо ошибки, изучайте файл, который вы определили для вывода информации.

Важное замечание: CVSup по умолчанию работает через 5999-й порт, так что не забудьте открыть его на своем межсетевом экране.

Создаем в каталоге /etc файл mirror (хотя название вы можете выбрать произвольное).

В этот файл мы поместим следующее:

*default host=hostname

*default delete use-rel-suffix

*default compress

*default preserve

*default base=/backup/var

*default releases=ftp

ftp

В качестве hostname вам нужно указать имя вашего хоста, информацию с которого вы хотите получать. Кстати, писать *default в начале каждой строки абсолютно не обязательно, это делается только для удобочитаемости файла. delete use-rel-suffix – эта инструкция дает CVSup право удалять файлы на вашем компьютере. А почему в *default base= указано именно /backup/var, а не /var ?

Потому что /var «основной» машины будет храниться в каталоге /backup/var «резервной» машины. Как вы поняли, это сделано для того, чтобы каталог /var с «основной» машины не заместил собой каталог /var на «резервной» машине.

Такое можно допустить только в том случае, если вы поддерживаете полное зеркалирование сервера. Вроде бы все готово, пробуем запустить CVSup:

#cvsup –L 2 /etc/mirror

Число после опции –L указывает уровень подробности выводимой информации. По умолчанию используется 1. В данном случае 2 – самый подробный вывод. При 0 в качестве параметра опции –L информация о процессе не выводится. За ней следует указание месторасположения файла с настройками. Вот пошел процесс синхронизации.

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

Хочу обратить ваше внимание на одну очень важную деталь: CVSup не копирует файлы, у которых совпадает контрольная сумма и права доступа.

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

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

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

Если все отлажено и отлично работает, вполне логичным может выглядеть добавление нового задания для демона cron. Через какой промежуток времени запускать процесс зеркалирования – решать вам. У меня он происходит каждые полчаса.

Существует перевод на русский язык оригинального CVSup faq, который я очень рекомедую вам внимательно почитать. Находится он на: http://ozz.pp.ru/cvsup.html.

Завершая эту небольшую статью, невольно вспоминаются золотые слова: «Лучше 2 бекапа, чем вообще без них». Так что не пренебрегайте такой важной штукой, как резервное копирование информации.




Все права зарезервированы. Этот материал принадлежит или лицензирован компании PLARANA INC. Только для частного использования. Любое распространение запрещено без письменного разрешения PLARANA INC
Версия для печати Вернуться к оглавлению