Как сделать бекап OpenVZ контейнера без даунтаймов

OpenVZ

OVZ - это просто грамотный chroot.

Виртуальные сервера — это очень удобно. Можно разделять проект на задачи и для каждой выделять VPS, и по мере роста проекта разносить эти виртуалки по разным физическим серверам.

Но удобство этим еще не заканчивается. В OpenVZ меня очень привлекает возможность создания полного бекапа без даунтаймов. Так как не все знают о такой возможности, я хочу описать ее более детально.

Прежде всего нам потребуется удаленный хост с поддержкой ssh протокола и наличием rsync. Сам бекап состоит из трех этапов:

  1. Первоначальная копия всех файлов (можно запускать только для первого бекапа)
  2. Копия дельты измененных файлов от первоначальной копии до текущего состояния контейнера
  3. Финальная копия остатка измененных файлов с заморозкой контейнера

Допустим нам нужно сделать копию контейнера 110 на сервер с именем host от пользователя user.
Первоначальный этап выполняется командой:

RSYNC_RSH="ssh Compression=no"  rsync -aHz \
--numeric-ids --bwlimit=1024 /vz/private/110 user@host:/backup/110

Рассмотрим опции более детально.

  • -o Compression=no — Отключаем сжатие средством ssh
  • -a — Сохранение прав доступа к файлам
  • -z — Использовать сжатие средством rync
  • --numeric-ids — Сохранять информацию о владельцах и группах в числовом формате
  • --bwlimit=1024 — Использовать 1Mb пропускной способности канала

Итак, первая часть бекапа проходит медленно и незаметно для работы VPS. Вторую часть следует выполнить в точности как и первую, добавив только опцию --delete, для удаления ненужных файлов и отключив лимитирование канала:

RSYNC_RSH="ssh Compression=no"  rsync -aHz --delete \
--numeric-ids /vz/private/110 user@host:/backup/110

Вторая часть бекапа пройдет быстрее, а пользователи VPS почувствуют только небольшие сетевые тормоза на короткое время.

А вот для третьего этапа мы сначала заморозим контейнер, потом быстро скинем изменившиеся файлы и вернем контейнер обратно в рабочее состояние.

vzctl chkpnt 110 --suspend
RSYNC_RSH="ssh Compression=no"  rsync -aHz --delete \
--numeric-ids /vz/private/110 user@host:/backup/110
vzctl chkpnt 110 --resume

Для пользователей VPS это будет выглядеть как небольшая задержка в сети на несколько десятков секунд, после чего работа будет продолжена, в том числе с сохранением всех сессий.

vzctl chkpnt VEID --suspend

Вы можете отслеживать комментарии к этой записи с помощью RSS 2.0. Комментарии и эхо-тестирование не разрешены.

Комментарии: 2 »

 
 
 
Хотите развивать бизнес для себя: тренинг лидерства. Хочешь стать лидером?. Купить мужское пальто в новосибирске мытищи пальто Купить.