ArtemZ 26.10.2009 03:22
How-to`s — OpenVZ: простейший бекапинг контейнеров c помощью vzdump
Когда я нечаянно форматнул выделенный сервер одного пользователя и вспомнив о 5 нодах, на каждой из которых находится 10-15 клиентов, я ощутил то, что в простонародьи называют попаболь. Рецепт от сиих неприятных ощущений прост - делать ежедневные бекапы. На нодах имеется несколько винчестеров, и наипростейшим решением является бекап заархивированных контейнеров на него. Если у вас похожая ситуация - это руководство отлично вам подойдёт. Это относительно надёжный и эффективный способ сохранения данных пользователей.Итак, приступим.
(!) Данное руководство подходит только для серверов на CentOS 5 i386 или x86_64! Не используйте его пожалуйста на других дистрибутивах, если вы плохо понимаете, что вы делаете!
1. Разбиваем на разделы нужный нам винчестер (в моём случае sdb, главное не перепутать проверьте 5 раз!) с помощью fdisk:
1 |
|
Если у вас на этом винчестере остались старые и ненужные разделы, которые вы хотите удалить - вводите d, потом номер раздела
Для создания нового раздела - n, потом p (primery), потом 1, потом два раза ввод (в этом случае под основной раздел будет использован весь, если вам нужно несколько разных разделов - разбирайтесь в fdisk, там всё крайне просто)
Записываем изменения на диск - w, выходим q.
2. Форматируем новый раздел, ext3 меня вполне устраивает для хранения крупных файлов:
1 |
|
и монтируем его в стандартную папку для бекапа контейнеров
1 |
|
и не забываем прописать это дело в /etc/fstab:
/dev/sdb1 /vz/dump ext3 defaults 1 1
Теперь место для хранения бекапов подготовлено и можно приступать к основному действу.
3. Ставим vzdump. В зависимостях у него cstream и perl(LockFile::Simple). В стандартных репах этих штук нет, можно можно найти и скачать нужные rpm пакеты из интернетов, но я не стал париться и просто подключил rpmforge:
Для CentOS 5 i386:
1 |
|
Для CentOS 5 x86_64:
1 |
rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
|
После чего ставим нужные пакеты:
1 |
|
Качаем непосредственно vzdump, ссылки на последние версии обычно можно найти здесь. На данный момент это 1.2:
1 |
|
vzdump готов к применению.
4. Составляем нужные параметры для vzdump:
Наиболее замечательными параметрами для vzdump являются следующие:
--all бекапить все контейнеры
--exclude VPSID исключить из бекапа VPS с идентификатором VPSID
--exclude-path REGEX исключить из бекапа впсов определённые папки, которые можно задать с помощью регэкспа REGEX
--stdexcludes исключать временные файлы и логи из бекапа
--compress сжать бекапы, используется gzip
--dumpdir DIR папка, в которую непосредственно сливать бекапы
--mailto EMAIL почта, на которую уведомлять о результатах работы
--restore FILENAME запустить восстановление впса из файла бекапа
У меня получилось следующее:
1 |
|
Эта комманда запустит бекап всех контейнеров, исключая временные файлы и логи в них, в папку /vz/dump и с уведомлением на почту руту.
5. Создаем задание для крона для еженедельного бекапа всех контейнеров:
Я пошёл путём создания файла с заданием в /etc/cron.weekly:
Назовём файл допустим weekly.dump, сохраняем в /etc/cron.weekly и не забываем поставить на него права на исполнение:
1 |
|
Готово, можно идти пить чай :-)
xT 26.10.2009 08:19 #
+ 1 -
На нодах имеется несколько винчестеров, и наипростейшим решением является бекап заархивированных контейнеров на него.
на кого него?! =)
Мы как то обходимся LVM-снапшотами+rsync на бэкап сервер, но все равно интересно.