Установка скрипта бэкапа виртуальных машин на VMWare ESXi

Вот тут существует отличный бесплатный скрипт для резервного копирования виртуальных машин на VMWare ESXi сервере, причем он работает на free версии ESXi 4 и 5 версий без установки всяких дополнительных приблуд типа VMA и т.п. Проблема только в том, что инструкция там не совсем точная, поэтому я долго возился с этим скриптом, чтобы он все-таки заработал именно в автоматическом режиме…

Подробно рассписывать как приконнектица к ESXi по SSH я не буду, распишу лишь шаги настройки, с которыми все заработало у меня.

Сначала качаем скрипт по ссылке выше и заливаем на сервер, заливать нужно прямо в архиве! Проще всего это сделать через vSphere Client. У меня на сервере два диска – на одном работают машины, а на другом лежат всякие iso-образы и сами бэкапы. Называются диски соответственно datastore1 и datastore2. Все бэкапы, скрипт и конфиги лежат в папке backup. Еще обратите внимание, что названия файлов и папок регистрозависимые, поэтому если папка называется backup, а вы пишите в скрипте Backup, то работать не будет!

  1. Заливаем архив со скриптом сюда /vmfs/volumes/datastore2
  2. Дальше в SSH cd /vmfs/volumes/datastore2 – переходим в директорию со скриптом
  3. Распаковываем скрипт из архива tar -zxvf имя_файла_архива.tar.gz
  4. Через vSphere переименуйте распакованную папку в нечто попроще, например просто backup
  5. Теперь зайдем в эту папку – cd backup
  6. Создадим внутри нее папку для хранения индивидуальных конфигов mkdir BackupConfig
  7. Теперь в BackupConfig закинем нужные индивидуальные конфиги для машин, если они не нужны и все машины надо бэкапить с одинаковыми настройками, можно оставить ее пустой
  8. Поправить через редактор vi переменные в конфигурационном файле, главное это пути бэкапа, т.е. первую строку меняем на такую: VM_BACKUP_VOLUME=/vmfs/volumes/datastore2/backup, ну а далее сами смотрите что вам еще нужно – vi ghettoVCB.conf
  9. Создать скрипт StartBackup.sh (2 строки) – vi StartBackup.sh
    2ю строку, где вызов самого скрипта, можете переделать под себя
    cd /vmfs/volumes/datastore2/backup

    ./ghettoVCB.sh -a -g ./ghettoVCB.conf -c BackupConfig -l ghettoVCB.log
  10. Выполнить chmod +x ghettoVCB.sh
  11. Выполнить chmod +x StartBackup.sh

1 этап завершен! Теперь если запустить StartBackup.sh, то начнется бэкап. На время отладки можете поменять 2ю строку на что-то типа вот этого ./ghettoVCB.sh -a -g ./ghettoVCB.conf -c BackupConfig -l ghettoVCB.log -d dryrun – это позволит запустить скрипт и отследить ход выполнения без самого копирования дисков. Чтобы резервное копирование проводилось более эффективно и быстро, рекомендую в настройках выставить тип диска thin.

Конфигурирование Cron (для автоматического запуска скрипта)

  1. Дать разрешение на запись в файл chmod +w /var/spool/cron/crontabs/root
  2. Добавляем через vi строку в /var/spool/cron/crontabs/root
    15 0 */3 * * /vmfs/volumes/datastore2/backup/StartBackup.sh
    Запуск в 00:15 ночи каждые три дня. У меня часовой пояс +4 Москва, т.е. на самом деле скрипт запускается в 4:15 утра, это будет видно по дате изменения лога через vSphere. Само собой время и периодичность можете выбрать другие.
  3. Теперь нужно выполнить две команды, чтобы перезапустить cron
    kill $(cat /var/run/crond.pid)
    crond
  4. Добавить с помощью vi 3 строки в самый конец файла /etc/rc.local
    Это нужно, потому что после перезагрузки сервера содержимое файла из 2го пункта с запуском нашего скрипта будет восстановлено до предыдущего состояния, поэтому в rc.local указываем, что после перезагрузки нужно выполнить следующие команды – остановка cron, добавление строки для автоматического запуска скрипта и запуск cron.
    /bin/kill $(cat /var/run/crond.pid)

    /bin/echo “15 0 */3 * * /vmfs/volumes/datastore2/backup/StartBackup.sh” >> /var/spool/cron/crontabs/root
    crond
  5. Теперь выполним выполнить команду /sbin/auto-backup.sh, чтобы удостовериться, что все наши изменения сохранились.

Небольшое пояснение – почему нужно создавать скрипт StartBackup.sh, а не просто взять и его содержимое поместить в /var/spool/cron/crontabs/root? Существует какое-то ограничение на размер этого файла и часть строк в нем просто не будет работать, хотя можете попробовать сделать и так, сначала у меня работало, но потом, видимо, вышли какие-то патчи и перестало. Более того, это просто удобнее – если потребуется изменить расписание резервного копирования, то вы просто правите файл StartBackup.sh и не нужно танцев с бубном вокруг cron с его перезапуском и внесением тех же изменений в /etc/rc.local.

PS: Время идет, все меняется, сам скрипт меняется, ESXi5 уже вышел, так что где-то, что-то может уже и не работать :)

Приложение: Синтаксис cron

Команда cron выглядит вот так:

1 2 3 4 5 /vmfs/volumes/datastore2/backup/StartBackup.sh

Где,
1: Минуты (0-59)
2: Часы (0-23)
3: Дни (0-31)
4: Месяцы (0-12 [12 == Декабрь])
5: День недели (0-7 [7 или 0 == Воскресенье])

Несколько примеров:

  1. Запуск в 5 минут первого ночи, каждый день
    5 0 * * * /vmfs/volumes/datastore2/backup/StartBackup.sh
  2.  Запуск в 2:15 каждый первый день месяца
    15 14 1 * * /vmfs/volumes/datastore2/backup/StartBackup.sh
  3. Запуск в 22:00 каждый рабочий день
    0 22 * * 1-5 /vmfs/volumes/datastore2/backup/StartBackup.sh
  4. Запуск в 23 минуты после полуночи и далее каждые два часа (2:23, 4:23… и т.д.), каждый третий день
    23 0-23/2 * * */3 /vmfs/volumes/datastore2/backup/StartBackup.sh

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>