FastNetMon

Sunday 6 December 2009

Использование vzdump для бэкапа / восстановления VPS

Очень часто наши клиенты просят сделать бэкапы OpenVZ контейнеров целиком, чтобы в случае проблем одним махом их восстанавливать. Пока мы эту услугу еще не предоставляем, но активно изучаем, как это можно делать :)

Итак, мы будем использовать утилиту vzdump от ProxMox - http://www.proxmox.com/cms_proxmox/en/virtualization/openvz/vzdump/

Подключаем Rpm-forge (для cstream и perl-LockFile-Simple)

wget -O/tmp/rpm-forge.rpm http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm && rpm -ihv /tmp/rpm-forge.rpm


Ставим зависимости

yum -y install perl-LockFile-Simple cstream


Сносим Rpm-forge:

yum remove -y rpmforge-release



Устанавливаем

rpm -ihv http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump-1.2-4.noarch.rpm


Запускаем

PERL5LIB=/usr/share/perl5 vzdump


Выполнение бэкапа запущенного контейнера

Делаем бэкап запущенного контейнера (контейнер 1624):

PERL5LIB=/usr/share/perl5 vzdump --dumpdir /root --compress --suspend 1624


Бэкап будет сделан по следующему алгоритму:
1. rsync private области VE с target директорией по результатам которого будет сделана не консистентная копия данных VE.
2. suspend VE
3. повторное выполнение rsync, результатом которого мы получаем консистентную копию данных VE.
4. resume VE (обращаю внимание, что время недоступности VE минимальное - оно составляет несколько секунд, что выражается в потере нескольких пингов и все)
5. архивация target директории в tar.gz
6. окончание архивации и сохранение бэкапа в папке /root под именем vzdump-openvz-1624-2009_12_06-13_45_56.tgz


Примерный лог бэкапа выглядит следующим образом:

INFO: starting new backup job: vzdump --dumpdir /root --compress --suspend 1624
INFO: Starting Backup of VM 1624 (openvz)
INFO: CTID 1624 exist mounted running
INFO: status = CTID 1624 exist mounted running
INFO: backup mode: suspend
INFO: bandwidth limit: 10240 KB/s
INFO: starting first sync /vz/private/1624/ to /root/vzdump-openvz-1624-2009_12_06-13_45_56.tmp
INFO: Number of files: 72299
INFO: Number of files transferred: 53078
INFO: Total file size: 1116763033 bytes
INFO: Total transferred file size: 931798969 bytes
INFO: Literal data: 931809649 bytes
INFO: Matched data: 0 bytes
INFO: File list size: 1575085
INFO: File list generation time: 0.554 seconds
INFO: File list transfer time: 0.000 seconds
INFO: Total bytes sent: 936167959
INFO: Total bytes received: 1420273
INFO: sent 936167959 bytes received 1420273 bytes 8562449.61 bytes/sec
INFO: total size is 1116763033 speedup is 1.19
INFO: first sync finished (109 seconds)
INFO: suspend vm
INFO: Setting up checkpoint...
INFO: suspend...
INFO: get context...
INFO: Checkpointing completed succesfully
INFO: starting final sync /vz/private/1624/ to /root/vzdump-openvz-1624-2009_12_06-13_45_56.tmp
INFO: Number of files: 72300
INFO: Number of files transferred: 11
INFO: Total file size: 1116777682 bytes
INFO: Total transferred file size: 842269 bytes
INFO: Literal data: 6445 bytes
INFO: Matched data: 835824 bytes
INFO: File list size: 1575126
INFO: File list generation time: 0.388 seconds
INFO: File list transfer time: 0.000 seconds
INFO: Total bytes sent: 1586649
INFO: Total bytes received: 7126
INFO: sent 1586649 bytes received 7126 bytes 1062516.67 bytes/sec
INFO: total size is 1116777682 speedup is 700.71
INFO: final sync finished (2 seconds)
INFO: resume vm
INFO: Resuming...
INFO: vm is online again after 2 seconds
INFO: creating archive '/root/vzdump-openvz-1624-2009_12_06-13_45_56.tgz'
INFO: Total bytes written: 1027010560 (980MiB, 12MiB/s)
INFO: archive file size: 445MB
INFO: delete old backup '/root/vzdump-openvz-1624-2009_12_06-13_40_33.tar'
INFO: Finished Backup of VM 1624 (00:03:21)
INFO: Backup job finished successfuly


Восстановление состояния VE из бэкапа (обращаю внимание, что эту функцию лично я НЕ тестировал, так что никаких гарантий ее корректной работы):

PERL5LIB=/usr/share/perl5 vzrestore /root/vzdump-openvz-1624-2009_12_06-13_45_56.tgz 1624


Основано на: отличной статье про OpenVZ иописании хака с путями до Perl модулей

No comments :

Post a Comment

Note: only a member of this blog may post a comment.