Рубрики
Записки

Установка скрипта бэкапа виртуальных машин на 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 не будет опубликован. Обязательные поля помечены *