Бесплатный backup (резервное копирование) виртуальных машин на базе VMware ESXi

Автор | 07.11.2014

Бесплатный backup (резервное копирование) виртуальных машин на базе VMware ESXi

VMware-ESXi-2

Для VMware ESXi вопрос резервного копирования виртуальных машин стоит особо остро. Дополнительное бесплатное ПО неудобно в использовании из-за ограниченного функционала. Поэтому наш backup будет основан на бесплатном скрипте — ghettoVCB. Это самый лучший вариант существующих скриптов, хотя у него такое забавное название и всего проекта в целом — www.virtuallyghetto.com, автор William Lam. Его алгоритм — создание снапшота и клонирование VM.

Для настройки полноценной схемы резервного копирования нам потребуется:

  • NFS сервер для хранения файлов;
  • подключение по SSH к ESXi;
  • скрипт ghettoVCB.sh добавляется на сервер ESXi (в корень или папку будущего бекапа). Это делается через SFTP любым удобным для вас способом, например, FileZilla;
  • даем права на выполнение скопированного скрипта;

Теперь более подробно остановимся на каждом из пунктов. Для повышения быстродействия и отказоустойчивости файлового сервера/сервера резервного копирования лучше использовать RAID10. Предпочтительны в данном случае являются ОС Linux (Debian, Ubuntu, «удобная вам») и файловая система XFS, т.к. в такой конфигурации скорость записи (основной приоритет для быстрого бекапа) будет выше.

Инструкция по настройке протокола SSH для подключения к ESXi уже имеется у нас, но также можно все выполнить и в vSphere client: Configuration > Software > Security Profile > Properties… > Remote Tech Support (SSH) > Options… > Start или Stop.

Переходим к конфигурации скрипта ghettoVCB.sh, основные параметры, которые нам понадобятся:

VM_BACKUP_VOLUME — путь к папке бэкапов, в моём случае /vmfs/volumes/datastore1/backup
DISK_BACKUP_FORMAT — формат диска, thin для бэкапов подходит лучше всего
VM_BACKUP_ROTATION_COUNT — количество хранимых бэкапов (для каждой виртуальной машины), у меня 3
ADAPTER_FORMAT — тип адаптера, в моем случае — lsilogic

Остальные параметры отвечают за копирование файлов по сети и e-mail уведомления. Подробнее параметры конфигурации описаны на сайте разработчика. Описание на русском языке будет добавлено на сайт gotoADM.ru в скором времени — подписывайтесь на обновления!

Если необходимо копировать не все виртуальные машины, то создается файл со списком VM, включенных в бекап. Создаем такой файл в vi:

  • переходим в папку со скриптом — cd /ghettovcb или backup
  • vi vmlist
  • нажимаем «a» вписываем имена VM (каждое имя на новой строке)
  • нажимаем «esc» и чтобы сохранить изменения  — «:wq» (без сохранения «:q»)

Запускаем скрипт:

  • ./ghettovcb.sh -а -l ./log.txt — запуск копирования всех машин, запись логфайла в той же директории
  • ./ghettovcb.sh -f ./vmlist -l ./log.txt — запуск копирования машин, указанных в файле vmlist, логи сохраняются в той же директории
  • ./ghettovcb.sh -f ./vmlist -g ./ghettovcb.conf -l ./log.txt — аналогочно, только с использованием .conf файла

О корректном выполнении скрипта будет сигнализировать строка с надписью: «###### Final status: All VMs backed up OK! ######». Если такого нет — проверяйте логи, синтаксис команд и путей к файлам.

Далее необходимо установить/настроить автоматический запуск данного скрипта.  Согласно KB Article: 1033346 cron работы с планировщиком ведутся здесь — /usr/spool/cron/crontabs или /var/spool/cron/crontabs.

Для того, чтобы добавить строку на запуск по расписанию (в cron), необходимо выполнить правку файла «/etc/rc.local.d/local.sh» , выполнив следующее:

  • перейти в каталог /etc/rc.local.d/local.sh
  • chmod u+w local.sh
  • открыть файл редактором — vi local.sh
  • включить редактирование клавищей «i» или «insert»
  • дописать перед строкой exit0 следующее:

/bin/kill $(cat /var/run/crond.pid)
/bin/echo 0 20 * * * /vmfs/volumes/datastore/script/ghettoVCB.sh -a -l /vmfs/volumes/backup/log/log.txt >> /var/spool/cron/crontabs/root
/bin/crond

  • при этом указываем расписание (время указывается в UTC, т.е. для MSK -3 часа), т.е. «00 20 * * * «
  • нажимаем «esc» и сохраняемся —  «Shift+:» и «wq»
  • в конце выполняем chmod u-w local.sh

Таким образом, в 23:00 по МСК будет выполняться резервное копирование файлов виртуальных машин. В нашем случае будет оставаться 3 копии.

Настройка backup для ESXi через ghettoVCB.sh завершена.

  • Геннадий Уткин

    Добрый день!
    Спасибо за полезную статью.
    Пара замечаний:
    1) vi не закроется по «:q» если в файле есть несохраненные изменения. Нужно «:q!» чтобы от них отказаться и выйти
    2) cron берет не время по UTC, а время с учетом таймзоны установленной для учетной записи, от которой сам cron и работает, либо для всей системы (это уж как настраивали). То есть, если вы в 2:15 ночи это запускать решили, то так и пишите 15 2 * * *, при условии, что таймзона установлена местная. Ну, а если таймзона не настроена, то можно и с UTC развлекаться, при условии, что вы указали «использовать время UTC» при установке системы.