В последние несколько месяцев активно работаю с OpenVZ. Соответственно вопрос который возникает после того как система развернута, это резервное копирование.
Расскажу как реализовать его проще всего, на примере CentOS 5.3
[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
Согласно хелпу был написан простой скриптик для резервного копирования.
[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"`/
данный скрипт будет создавать в папке /vz/dump/ папку с текущей датой и в нее складывать дампы, пожатые в tgz, контейнеров. И слать уведомление на your@mail.com
скриптик этот нужно закинуть в крон, сам его допилить слегка для того чтобы убивались старые бакапы (man find).
для восстановления следует использовать vzdump с ключиком –restore
отсюда вытекает возможность клонировать контейнер.
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
в версии 1.2 восстановление делается так:
vzrestore /vz/vzdump-110.tgz 130
таким образом мы сделали копию контейнера 110 с VID 120, сменили ему ip и хостнейм. По тому же принципу накладываются новые ограничения.
возможные проблемы:
[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
это лечится с помощью:
еще одна:
[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.
лечится так:
[root@vm1 ~]# cp -r /usr/share/perl5/PVE/ /usr/lib/perl5/5.8.8/
Если возникли вопросы или нужна помощь, буду рад помочь.