Рубрика:
Администрирование /
Продукты и решения
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСАНД БАЙРАК
Зеркалирование информации
В этой статье будет рассказано о создании простой и удобной системы зеркалирования информации с помощью пакета CVSup
Трудно переоценить ту пользу, которую приносят нам резервные копии, заботливо нами же и сделанные. Сколько нервов и времени не было благодаря им потрачено впустую…
Процесс зеркалирования хоть и схож по смыслу, но все же несколько отличается от классического резервного копирования информации. Более того, зеркалирование в полной мере не сможет его заменить. А зачем же тогда использовать зеркалирование, если оно не заменит процесс стандартного бекапа? Рассмотрим небольшой пример.
Почему я взял за основу 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 бекапа, чем вообще без них». Так что не пренебрегайте такой важной штукой, как резервное копирование информации.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|