Бекап виртуальных машин ESXi

Задача: Необходимо забекапить виртуальные машины ESXi. Бекап производить без отключения виртуальных машин.

Инструментарий: Для бекапа будем скрипт ghettoVCB(ссылка на github) и используем внешнее сетевое хранилище, доступное по NFS, либо локальный диск. В случае NFS подмонтируем его к ESXi-серверу.

Замечание:В принципе, на данный момент уже можно обойтись без монтирования - в используемом нами скрипте появилась возможность кидать бекап напрямую на NSF-шару, но на момент написания такой возможности не было. Да и сами настройки проводятся крайне просто, так что в описании они подробно не рассматриваются. Замечание 2: GhettoVCB не умеет бекапить машины, для которых есть снапшоты.

Установка ghettoVCB

  1. Загружаем ghettoVCB с github
  2. Распаковывем архив и переносим файлы на сервер esxi
    tar -xvfz GhettoVCB-master.tgz
  3. Даем файлу ghettoVCB.sh права на выполнение
    chmod +x ghettoVCB.sh
  4. Правим коныигурационный файл ghettoVCB.conf
    # Каталог, в которой будут храниться резервные копии. 
    # Это может быть как раз наш модмонтированный NSF-диск или локальный
    VM_BACKUP_VOLUME=/vmfs/volumes/backup
    
    # формат диска резервной копии
    # zeroedthick, eagerzeroedthick, thin или 2gbsparse
    # Для наиболее быстрого бекапа используем thin
    DISK_BACKUP_FORMAT=thin
    
    # Количество резервных копий одной машины, кторые будут хранится на диске
    VM_BACKUP_ROTATION_COUNT=3
    
    # Определяет, нужно ли выключать машину перед бекапом.
    # 0 - не надо. Сначала система делает снапшот, бекапит его, затем удаляет. 
    #     Прерывания доступа к машине не производится
    # 1 - Останавливать машину для бекапа, затем запускать заново. 
    #     В этом случае снапшот не делается, но виртуальная машина будет недоступна до окончания бекапа
    POWER_VM_DOWN_BEFORE_BACKUP=0
    
    # В случае, если остановка машины не удалась выключать ли ее жестко. 
    # Если 0 - не выключать
    # Если 1 - то выключение происходит после того, количества итераций (каждая по 60 сек),
    #          указанных в параметере POWER_DOWN_TIMEOUT
    ENABLE_HARD_POWER_OFF=0
    POWER_DOWN_TIMEOUT=5
    
    # Разешить сжатие данных при передаче. Замедляет бекап и восстановление. 
    # Используем только в тех случаях, когда не хватает места на бекапном диске
    ENABLE_COMPRESSION=0
    
    # Сколько итераций (каждая по 60 сек) ожидать создания снапшота
    SNAPSHOT_TIMEOUT=15
    
    # Далее следуют параметры для подмнотирования NSF на лету
    #ENABLE_NON_PERSISTENT_NFS=0
    #UNMOUNT_NFS=0
    #NFS_SERVER=172.16.0.210
    #NFS_VERSION=nfs
    #NFS_MOUNT=/mnt/backup/vm-backup/esxi.asealk.ru
    #NFS_LOCAL_NAME=nfs_storage_backup
    #NFS_VM_BACKUP_DIR=
    
    # Настройка почтовых уведомлений о бекапе
    #EMAIL_LOG=0
    #EMAIL_SERVER=auroa.primp-industries.com
    #EMAIL_SERVER_PORT=25
    #EMAIL_DELAY_INTERVAL=1
    #EMAIL_TO=auroa@primp-industries.com
    #EMAIL_FROM=root@ghettoVCB
    

Запуск бекапа

Тут все довольно просто. Если мы хотим забекапить одну машину, пишем:

./ghettoVCB.sh -m ИМЯ_МАШИНЫ -g ghettoVCB.conf

Если все, то:

./ghettoVCB.sh -a -g ghettoVCB.conf

Как заметно, можно использовать несколько профилей бекапа просто создав различные конфиг-файлы

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

  1. Дать разрешение на запись в файл
     chmod +w /var/spool/cron/crontabs/root
  2. Добавляем через vi строку в /var/spool/cron/crontabs/root
    10 2 */2 * * /ПУТЬ/К/ghettoVCB.sh -m ИМЯ_МАШИНЫ -g /ПУТЬ/К/ghettoVCB.conf

    Запуск в 02:10 ночи каждые два дня.

  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 “10 2 */2 * * /ПУТЬ/К/ghettoVCB.sh -m ИМЯ_МАШИНЫ -g /ПУТЬ/К/ghettoVCB.conf” >> /var/spool/cron/crontabs/root
    crond
    
  5. Теперь выполним выполнить команду
    /sbin/auto-backup.sh

    , чтобы удостовериться, что все наши изменения сохранились.

bekap_virtualnyx_mashin_esxi.txt · Последние изменения: 2015/02/19 11:36 — ansealk
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика