OpenVZ: резервное копирование и клонирование контейнеров

Запись создана 20 октября, 2009

В последние несколько месяцев активно работаю с OpenVZ. Соответственно вопрос который возникает после того как система развернута, это резервное копирование.

Расскажу как реализовать его проще всего, на примере CentOS 5.3
[cc lang=»bash»]
[root@root ~]# yum install cstream perl-LockFile-Simple
[root@root ~]# rpm -Uvh http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump-1.1-2.noarch.rpm
[root@root ~]# rpm -Uvh http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump-1.2-4.noarch.rpm
[root@root ~]# vzdump —help
Unknown option: help
usage: /usr/sbin/vzdump OPTIONS [—all | VPSID]

—exclude VPSID exclude VPSID (assumes —all)
—exclude-path REGEX exclude certain files/directories
—stdexcludes exclude temorary files and logs

—compress compress dump file (gzip)
—dumpdir DIR store resulting files in DIR
—tmpdir DIR store temporary files in DIR

—mailto EMAIL send notification mail to EMAIL.
—quiet be quiet.
—stop stop/start VPS if running
—suspend suspend/resume VPS when running
—snapshot use LVM snapshot when running
—size MB LVM snapshot size

—node CID only run on pve cluster node CID
—lockwait MINUTES maximal time to wait for the global lock
—stopwait MINUTES maximal time to wait until a VM is stopped
—bwlimit KBPS limit I/O bandwidth; KBytes per second

—restore FILENAME restore FILENAME
[/cc]

Согласно хелпу был написан простой скриптик для резервного копирования.
[cc lang=»bash»]
[root@root ~]# cat /bin/backup.sh
#!/bin/bash

mkdir /vz/dump/`date «+%Y%m%d»`

/usr/sbin/vzdump —suspend —compress —exclude-path /tmp/ —all —mailto your@mail.com —dumpdir /vz/dump/`date «+%Y%m%d»`/
[/cc]

данный скрипт будет создавать в папке /vz/dump/ папку с текущей датой и в нее складывать дампы, пожатые в tgz, контейнеров. И слать уведомление на your@mail.com
скриптик этот нужно закинуть в крон, сам его допилить слегка для того чтобы убивались старые бакапы (man find).

для восстановления следует использовать vzdump с ключиком —restore
отсюда вытекает возможность клонировать контейнер.
[cc lang=»bash»]
vzdump —compress —suspend 110
vzdump —restore /vz/dump/vzdump-110.tgz 120
vzctl set 120 —hostname newhostname.com —save
vzctl set 120 —ipdel 192.168.0.110 —save
vzctl set 120 —ipadd 192.168.0.120 —save
vzctl start 120
[/cc]

в версии 1.2 восстановление делается так:
vzrestore /vz/vzdump-110.tgz 130

таким образом мы сделали копию контейнера 110 с VID 120, сменили ему ip и хостнейм. По тому же принципу накладываются новые ограничения.

возможные проблемы:
[cc lang=»bash»]
[root@server ~]# vzdump —compress —suspend —dumpdir /backup/ —tmpdir /backup/tmp/ 120
……………..
Nov 19 20:10:51 INFO: Error: No checkpointing support, unable to open /proc/cpt: No such file or directory
Nov 19 20:14:34 ERROR: Backup of VM 120 failed — command ‘/usr/sbin/vzctl chkpnt 120 —suspend’ failed with exit code 16
[/cc]

это лечится с помощью:
[cc lang=»bash»]modprobe vzcpt[/cc]

еще одна:
[cc lang=»bash»]
[root@vm1 ~]# vzdump —help
Can’t locate PVE/VZDump.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/sbin/vzdump line 27.
BEGIN failed—compilation aborted at /usr/sbin/vzdump line 27.
[/cc]

лечится так:
[cc lang=»bash»]
[root@vm1 ~]# cp -r /usr/share/perl5/PVE/ /usr/lib/perl5/5.8.8/
[/cc]

Если возникли вопросы или нужна помощь, буду рад помочь.

» Запись из раздела CentOS Linux, OpenVZ | 3 комментария

Комментарии



3 комментария to “OpenVZ: резервное копирование и клонирование контейнеров”

  1. Дмитрий on 31 декабря, 2009 20:37

    Хм, а как установить утилиты vzdump, vzrestore?

  2. Артур Шакиров on 31 декабря, 2009 21:22

    внимательно статью прочтите, в самом начале указано как установить.

  3. Alexey on 26 апреля, 2010 23:19

    Большое спасибо за статью! :) Столкнулся с ошибкой ‘Can’t locate PVE/VZDump.pm in @INC’, а в статье нашёл решение :)




Ответить