Использование ghettoVCB для резервного копирования виртуальных машин VMware ESX / ESXi. |
22.10.13 13:18 |
Использование ghettoVCB для резервного копирования виртуальных машин VMware ESX / ESXi. Предисловие от VM Guru: С удовольствием представляем статью нашего нового автора Александра Прилепского, специалиста в области решений для виртуализации корпоративной инфраструктуры. Статья рассказывает о том, как помощью бесплатного скрипта ghettoVCB организовать резервное копирование виртуальных машин.
Копировать руками машину каждый раз, когда нужно внедрить какое-то оборудование, или просто для сохранения данных, это безумно неудобно. Вот для этого и была придумана технология автоматизированного бэкапа, написанная энтузиастами на скриптах perl: ghettoVCB. Ниже выложен гайд по установке скриптов, а также приведены конфиги сохранения скриптов как локально, так и на удаленном сервере с использованием хранилища сетевой файловой системы (NFS). В обоих вариантах нам необходимы программа для соединения с хостом VMware ESX по SSH, например Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html), а также сам скрипт (скачать скрипт). Для начала, выкладываем файл ghettoVCB.tar.gz на Datastore, после чего заходим в Putty, коннектимся к серверу ESX и проделываем следующие действия:
Откроется файлик (пока еще не созданный) со списком тех машин, которые нужно забэкапить (пока еще пустой :). Для ввода и редактирования информации жмем “a”, чтобы применить настройки Esc. Чтобы выйти с сохранениями :wq чтобы без :q! Вводим имена машин, далее вводим vi log и, ничего не изменяя в пустом файле, жмем :wq. Далее следует отконфигурить файл ghettoVCB.conf. Зайдя в неко командой vi (vi ghettoVCB.conf), мы увидим следующее: ghettoVCB # vi ghettoVCB.conf Не стоит пугаться обилия параметров, все они легко настраиваются и имеют особую важность. Итак, по порядку: VM_BACKUP_VOLUME Параметр, определяющий директорию создания бэкапов. В моем случае, я указал: /vmfs/volumes/Datastore. DISK_BACKUP_FORMAT Определяет формат забэкапленного диска, возможны варианты: zeroedthick, eagerzeroedthick, thin, 2gbsparse (см. типы дисков). VM_BACKUP_ROTATION_COUNT Определяет количество бэкапов на одну машину (каждый последующий будет удаляться скриптом). Если, например, скрипт (рассказывается ниже) будет бэкапить машины каждый час, то при указании числа 24, мы получим бэкапы каждый час на протяжении одного дня. POWER_VM_DOWN_BEFORE_BACKUP Определяет, будет ли машина выключаться перед бэкапом (enabled=1 disabled=0) (скрипт поддерживает бэкап при включенной машине). ENABLE_HARD_POWER_OFF Отключение дисков на время бэкапа (enabled=1 disabled=0). ITER_TO_WAIT_SHUTDOWN При включенном предыдущем параметре, определяет количество времени (1 единица=60 секунд), прежде чем скрипт выполнит принудительное отключение диска. POWER_DOWN_TIMEOUT При включенном параметре POWER_VM_DOWN_BEFORE_BACKUP, определяет количество времени (1 единица=60 секунд), прежде чем скрипт выполнит жесткое выключение (без использования ShutDown Guest) . ENABLE_COMPRESSION Параметр, при включении которого забэкапленные файлы будут помещаться в архиве (enabled=1 disabled=0) (Внимание: это тестовый параметр для данной версии скрипта, мой совет его отключать, так как есть риск потери не только файлов бэкапа, но и файлов машины). ADAPTER_FORMAT Формат диска машины (возможны: buslogic, lsilogic).
Параметры, отвечающие за снимки памяти, и если первый параметр “1”, то будет ли переведена машина на этот период в режим ожидания. ENABLE_NON_PERSISTENT_NFS=0 Все эти параметры нужны, если мы планируем создать директорию с бэкапами на удаленном сервере. Этими параметрами мы настраиваем доступ к NFS хранилищу (его местонахождение, директория на локально сервере и т.д.) Если создаем директорию бэкапа на том же DataStore, проигнорируем эти параметры. SNAPSHOT_TIMEOUT Данный параметр отображает, сколько минут будет дано время на создания снапшота работающей машины, после чего скрипт будет отключен (если повременной, то только этот бэкап не будет создан, далее всё пойдет в штатном режиме). Данный параметр необходим, если по каким либо причинам машина не сделала снимок, прежде чем переходить в режим ожидания, для того, чтобы не потерять данные машины в режиме работы. EMAIL_LOG=0 Следующие параметры будут отсылать логи на мэйл, при учете того, что в самом скрипте изначально прописаны данные smtp, pop и другие настройки.Данные параметры являются экспериментальными и не будут работать без дополнительных настроек. При желании отсылки логов на свой мэйл, требуется ознакомиться с основами perl и досконально изучить данную статью: http://www.waldrondigital.com/2010/05/11/ghettovcb-e-mail-rotate-logs-batch-file-for-vmware/ Мой совет – не заморачиваться. Далее я привожу два вида настройки этих параметров без особых углублений (1 – локально, 2 – через сервер NFS) ghettoVCB # vi ghettoVCB.conf ghettoVCB # vi ghettoVCB.conf Чтобы проверить данный скрипт можем запустить его разово. Для этого ознакомимся с параметрами запуска скрипта: -a Бэкапит все машины Запустим, например, всё это со следующими параметрами: /ghettoVCB # ./ghettoVCB.sh -f ./vmlist -g ./ghettoVCB.conf -l ./log В логах, при правильно настроенном конфиге мы увидим примерно следующее: 2011-02-21 15:08:20 -- info: ============================== ghettoVCB LOG START ============================== 2011-02-21 15:08:20 -- info: CONFIG - USING GLOBAL GHETTOVCB CONFIGURATION FILE = ./ghettoVCB.conf 2011-02-21 15:08:20 -- info: CONFIG - GHETTOVCB_PID = 69601 2011-02-21 15:08:20 -- info: CONFIG - VM_BACKUP_VOLUME = /vmfs/volumes/NFS1/ 2011-02-21 15:08:20 -- info: CONFIG - VM_BACKUP_ROTATION_COUNT = 3 2011-02-21 15:08:20 -- info: CONFIG - VM_BACKUP_DIR_NAMING_CONVENTION = 2011-02-21_15-08-19 2011-02-21 15:08:20 -- info: CONFIG - DISK_BACKUP_FORMAT = thin 2011-02-21 15:08:20 -- info: CONFIG - ADAPTER_FORMAT = lsilogic 2011-02-21 15:08:20 -- info: CONFIG - POWER_VM_DOWN_BEFORE_BACKUP = 0 2011-02-21 15:08:20 -- info: CONFIG - ENABLE_HARD_POWER_OFF = 0 2011-02-21 15:08:20 -- info: CONFIG - ITER_TO_WAIT_SHUTDOWN = 3 2011-02-21 15:08:20 -- info: CONFIG - POWER_DOWN_TIMEOUT = 5 2011-02-21 15:08:20 -- info: CONFIG - SNAPSHOT_TIMEOUT = 1 2011-02-21 15:08:20 -- info: CONFIG - LOG_LEVEL = info 2011-02-21 15:08:20 -- info: CONFIG - BACKUP_LOG_OUTPUT = ./log1 2011-02-21 15:08:20 -- info: CONFIG - VM_SNAPSHOT_MEMORY = 0 2011-02-21 15:08:20 -- info: CONFIG - VM_SNAPSHOT_QUIESCE = 0 2011-02-21 15:08:20 -- info: CONFIG - VMDK_FILES_TO_BACKUP = all 2011-02-21 15:08:20 -- info: CONFIG - EMAIL_LOG = 0 2011-02-21 15:08:20 -- info: 2011-02-21 15:08:21 -- info: Initiate backup for Testing 2011-02-21 15:08:21 -- info: Creating Snapshot "ghettoVCB-snapshot-2011-02-21" for Testing Destination disk format: VMFS thin-provisioned Cloning disk '/vmfs/volumes/datastore1/Testing/Testing.vmdk'... Clone: 100% done. 2011-02-21 15:08:37 -- info: Removing snapshot from Testing ... 2011-02-21 15:08:38 -- info: Backup Duration: 17 Seconds 2011-02-21 15:08:38 -- info: Successfully completed backup for Testing! 2011-02-21 15:08:38 -- info: ###### Final status: All VMs backed up OK! ###### 2011-02-21 15:08:38 -- info: ============================== ghettoVCB LOG END ================================
Самое главное: это последние 3-4 строчки: ###### Final status: All VMs backed up OK! ###### Если видим такое, бэкап прошел успешно. Если видим крики об ошибках, читаем, где накосячили. Основные типы ошибок:
После всего этого необходимо настроить режим создания бэкапов по времени. Для этого необходимо воспользоваться параметрами CronTab. Для этого проделываем следующее: ~# cd /var/spool/cron/crontabs/ var/spool/cron/crontabs/ # vi <имя пользователя> (по умолчанию root) Откроется повременной запуск скриптов. На новой строчке впишем следующее: * * * * * /ghettoVCB # ./ghettoVCB.sh -f ./vmlist -g ./ghettoVCB.conf -l ./log Файл crontab состоит из строк, содержащих шесть полей. Поля разделяются пробелами или символами табуляции. Первые пять полей - целочисленные шаблоны, задающие:
Шестое поле в строке файла crontab - строка, выполняемая командным интерпретатором в указанные моменты времени. Символ % (процент) в этом поле, если он не замаскирован \ (обратной косой), преобразуется в символ новой строки. Только первая строка (до символа % или до конца строки) поля команды выполняется командным интерпретатором. Другие строки передаются команде как стандартный входной поток. Любая строка, начинающаяся символом #, считается комментарием и игнорируется. Файл не должен содержать пустых строк. Например, если мы хотим, чтобы бэкапы происходили, каждый день по будням в 2 часа 15 минут, наша строка должна выглядеть следующим образом: 15 2 * * 1-5 /ghettoVCB/ghettoVCB.sh -f ./vmlist -g ./ghettoVCB.conf -l ./log |
Последнее обновление 22.10.13 13:25 |