Vsphere клонирование виртуальной машины. HVBackup — backup виртуальных машин hyper-v

Для организации системы автоматического резервного копирования виртуальных машин, запущенных на сервере VMWare ESXi мы воспользуемся бесплатной утилитой MKSBackup , скачать которую можно (на момент написания статьи последняя доступная версия MKSBackup 1.0.4 от 24.01. 2013). Данная утилита является своеобразным фронтэндом, который интегрируется с различными скриптами резервного копирования, в том числе GhettoVCB (скрипт резервного копирования ВМ, написанный на perl и поддерживаемый энтузиастами). GhettoVCB позволяет в онлайн режиме создавать резервные копии запущенных виртуальных машин. Резервная копия ВМ создается путем создания ее снимка (снапшота).

Важно . GhettoVCB не работает с виртуальными машинами, имеющих собственные снимки. Для выполнения бэкапа виртуальной машины все снапшоты должны быть удалены (например, через Snapshot Manager).

MKSBackup одно из немногих средств резервного копирования, позволяющих выполнять онлайн бэкап виртуальных машин. MKSBackup можно использовать для бэкапа виртуальных машин, запущенных как на коммерческих редакция VMware ESXi , так и на бесплатном VMware Hypervisor. Утилита разработана на Python и является кроссплатформенной. Утилита MKSBackup не имеет графического интерфейса, работает через командную строку, и настраивается через конфигурационные файлы.

Естественно, удобство и управляемость решения для организации бэкапа виртуальных машин VMWare на базе MKSBackup, ниже чем у коммерческих продуктов, но во много компенсируется его бесплатностью, простотой настройки и скоростью развертывания.

Установка скрипта резервного копирования MKSBackup

Настройка параметров резервного копирования виртуальных машин

Следующий этап – настройка параметров резервного копирования виртуальных машин, запущенных на сервере ESXi. Настройка проводится путем редактирования конфигурационного файла mksbackup.ini (по умолчанию находится в папке C:\Magik).

Откройте файл mksbackup.ini в любом текстовом редакторе. По своей структуре файл представляет собой несколько секций, имя каждой секции заключено в квадратные скобки.
Секция:

В данной секции можно задать параметры оповещения по электронной почте. Нам это не интересно, поэтому оставим

Следующая секция . Эта секция представляет собой задание резервного копирование и описывает различные параметры, обеспечивающие запуск бэкапа виртуальных машин в среде Windows. В нашем примере задание выглядит так:

Program=ghettovcb host=10.10.1.89 port=22 login=root password=LI&f3ccc23 local=C:\magik\vmware global_conf=ghettoVCB.conf vm_list=vm1_https winXPtest destination=C:\magik\${vm} scp_bin="D:\Install\Putty\pscp.exe" -scp -r

Подробнее остановимся на параметрах задания:

program – программа резервного копирования, оставляем ghettovcb

host – имя/ip хоста ESXi, на котором запущены виртуальные машины

port – порт для доступа (по умолчанию 22 порт – протокол SSH)

login – имя пользователя с правами доступа к серверу ESXi (по умолчанию это root, но с целью безопасности лучше завести на сервере ESXi отдельного пользователя)

password – пароль пользователя

local – локальная директория, в которой хранится скрипт резервного копирования и его конфигурация

global_conf – файл с настройками скрипта ghettoVCB

vm_list – список виртуальных машин, для которых необходимо создать резервную копию. Если нужно забэкапить все виртуальные машины, этот параметр нужно оставить пустым. Если нужно исключить некоторые виртуалки, воспользуйтесь параметром vm_exclude.

destination – параметр позволяет указать тип выполняемой операции. Это может быть

  • backup – выполнить простое резервное копирование (место назначения указывать не нужно)
  • copy – выполнить резервное копирование и скопировать полученные файлы в указанный каталог
  • move — выполнить резервное копирование и переместить полученные файлы в указанный каталог

Остановимся на варианте move, как на более оптимальном. В этом случае на хосте ESXi создадутся локальные резервные копии виртуальных машин, которые затем будут перенесены на компьютер, запустивший скрипт.

mon-sun – предполагается, что скрипт может выполняться ежедневно (оставим так, так как периодичность запуска резервного копирования зададим через планировщик Windows).

Кроме того, укажем каталог, в который будут перемещаться резервные копии ВМ (C:\magik). Параметр ${vm} указывает, что для каждой виртуальной машины будет создан отдельный каталог с ее именем, куда и будут складываться фалы виртуальной машины.

Примечание . Подробное описание конфигурационных настроек скрипта и его синтаксиса приведено на сайте разработчика.

scp_bin – путь к утилите scp

Важно . Убедитесь, что на сервере ESXi включен демон SSH.

VM_BACKUP_VOLUME=/vmfs/volumes/msa2000/backup VM_BACKUP_ROTATION_COUNT=3

VM_BACKUP_VOLUME – каталог на сервере ESXi, в котором будут сохранятся копии виртуальных машин (естественно, что на VMFS разделе должно быть достаточно свободного места)

VM_BACKUP_ROTATION_COUNT – количество хранимых локальных копий (в нашем примере будут хранится 3 последние резервные копии)

Осталось с помощью утилиты plink (также входит в состав поставки Putty) сохранить ключ хоста в локальном кеше ssh. Например, так:

PLINK.EXE [email protected] ls /

Запуск резервного копирования виртуальных машин на хосте VMWare ESXi

Протестируем работу скрипта резервного копирования. Для это нужно открыть командную строку с правами администратора и выполнить команду:

C:\Magik\MKSBackup\mksbackup.exe -v -c C:\Magik\mksbackup.ini backup VMWARE_FROM_WINDOWS

Где ключ –v показывает, что нужно отображать подробную информацию, -c путь к файлу настроек mksbackup.ini, backup – означает что нужно запустить резервное копирование, в конце указывается имя задания из файла mksbackup.ini (в нашем примере задание VMWARE_FROM_WINDOWS).

Если все настроено корректно, утилита начнет в консоль выводить подробную информацию о процессе резервного копирования (сап процесс бэкапа довольно длительный, так что не стоит ожидать его быстрого завершения).

Процесс резервного копирования можно отследить по появлению событий создания/ удаления снапшотов в консоли VMware vSphere.

В процессе выполнения скрипта в каталоге назначения будут появляться папки, содержащие файлы виртуальных машин.

После выполнения тестового копирования можно перейти к автоматизации процесса создания резервных копий. Для этого создадим новое задание планировщика Windows.

Создадим, задание с именем «Backup ESXi», которое выполняется по пятницам и запускает команду: C:\Magik\MKSBackup\mksbackup.exe -v -c C:\Magik\mksbackup.ini backup VMWARE_FROM_WINDOWS

В настройках задания не забудьте указать, что его нужно запускать с правами администратора (опция «Run with highest privileges»).

Примечание . Если задание будет запускаться от имени другой учетной записи (не той, под которой выполнялось тестирование), необходимо не забыть, что в кэше новой учетной записи не будет нужного ключа. Для решений проблемы нужно выполнить указанную выше команду plink из-под новой учетной записи.

Недостатки данного данного метода резервного копирования виртуальных машин:

  • довольно низкая скорость создания резервных копий
  • большое количество свободного места, необходимое для хранения бэкапов ВМ

Указанные недостатки компенсируется его бесплатностью, но для крупных решений предпочтительно использовать коммерческие продукты резервного копирования, например Veeam или HP DataProtector.

Небольшой тест:
Локальная сеть - гигабит.
На локальное хранилище (аппаратный RAID 10 из 4 дисков 10К) - «time dd if=/dev/zero of=/vmfs/volumes/datastore/temp bs=1M count=1K» 8 секунд.
На «linux» хранилище (программный RAID 0 из 3 дисков 7,5К) - «time dd if=/dev/zero of=/vmfs/volumes/linbackup/temp bs=1M count=1K» 12 секунд.
На «windows» хранилище (аппаратный RAID 5 из 10 дисков 10К) - «time dd if=/dev/zero of=/vmfs/volumes/winbackup/temp bs=1M count=1K» 1 минута 44 секунды (сам в шоке).

Результаты говорят сами за себя. Да, на win-хранилище RAID 5, но врядли он один виноват в таком результате.

С СХД разобрались, теперь надо автоматизировать резервное копирование. Лучшим бесплатным средством является скрипт ghettoVCB , чтобы им воспользоваться, надо получить доступ к хосту ESXi по SSH. Как оказалось есть очень простой способ включения и выключения доступа прямо из vShere Client: Configuration > Software > Security Profile > Properties… > Remote Tech Support (SSH) > Options… > Start или Stop. По этим скриншотам думаю будет нагляднее:

Скачиваем последнюю версию скрипта. Можно пойти «тру» путём сделать как написано на страничке скрипта в секции «Setup:», но я поступил проще - распаковал архив у себя на компьютере, вместо редактирования конфигурационного файла - отредактировал сам скрипт, скопировал его на локальное хранилище (через «Browse Datastore»).

Вот основные параметры:

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

Остальные параметры можно и не править, но если интересно - на страничке скрипта все параметры подробно описаны, правда на английском, почти все параметры расписаны по русски.

Итак, скрипт скопирован на локальное хранилище, подключаемся по ssh, переносим скрипт куда нибудь ближе к корню, например в /ghettovcb/ghettovcb.sh, если вам не нужно бэкапить все виртуальные машины - необходимо создать файл со списком бэкапируемых виртуалок:
cd /ghettovcb
vi vmlist
жмём «a» вписываем имена виртуалок, каждое на новой строке, нажимаем «esc» и чтобы сохранить изменения ":wq" или чтоб выйти без сохранения ":q"

Переносы строк должны быть "\n", при переносах "\r\n" скрипт будет выдавать ошибку, поэтому не стоит создавать список в блокноте, с последующим копированием на хранилище, если вы ни разу не пользовались Notepad+ или EmEditor и не знаете что такое "\n" и "\r\n" - лучше создавайте список в vi.

Пробуем запустить скрипт:

./ghettovcb.sh -f ./vmlist -l ./log.txt

./ghettovcb.sh -f ./vmlist -g ./ghettovcb.conf -l ./log.txt
Скрипт отрабатывает, выдавая много информации, если в конце вывода видим "###### Final status: All VMs backed up OK! ######" значит всё хорошо, иначе - читаем log.txt и разбираемся что сделали не так.
Теперь надо создать расписание для бэкапов.
cd /var/spool/cron/crontabs
chmod u+w root
vi root
жмём «a», пишем расписание, только учтите - время указывается в UTC, т.е. для Москвы это локальное время минус три часа
00 20 * * * /ghettovcb/ghettovcb.sh -f /ghettovcb/vmlist -l /vmfs/volumes/linbackup/logs/`date +%F`.txt
или если вы создали файл конфигурации
00 20 * * * /ghettovcb/ghettovcb.sh -f /ghettovcb/vmlist -g /ghettovcb/ghettovcb.conf -l /vmfs/volumes/linbackup/logs/`date +%F`.txt
жмём «esc» и сохраняемся ":wq"
в заключении
chmod u-w root

Теперь ежедневно в 20:00 по UTC (в 23:00 по Москве) будет запускаться скрипт, логи о его выполнении будут сохранятся на хранилище в папке logs, отдельный лог на каждый день.

По логам у меня на бэкап уходит примерно 4 часа, посчитал скорость - примерно 4ГБ в минуту, т.е. примерно 70МБ в секунду, весьма не плохо. Хранилища в 2,7ТБ хватает на хранение двух копий каждой виртуалки, этого вполне достаточно, плюс остаётся свободное место, а оно нужно, т.к. сначала делается третья резервная копия и только после её создания удаляется самая старая копия.
Ну и ещё один камень в огород «windows» хранилища - пробовал делать бэкапы скриптом на него, storage просто отваливался, ну и собственно скрипт завершался с ошибкой. Понимаю, что всё дело в неверной настройки записи по NFS, но настройки были по умолчанию и разбираться в «тюнинге» не очень то и хотелось.

Эксперимент прошёл удачно, можно закупать сервер с хорошими дисками, планируется RAID 10 на 5ТБ, этого должно с запасом хватить и на будущие виртуалки.

Теги: vmware, vsphere, esxi, backup, резервное копирование

Добрый день уважаемые читатели, не так давно, мы с вами разбирали процесс клонирования виртуальных машин Hyper-V , сегодня же мы с вами разберем, его главное конкурента, а именно гипервизор ESXI, в котором мы так же произведем клонирование виртуальной машины VMware . Сам процесс не сложный, но может у начинающих системных администраторов вызывать ряд вопросов, на которые я отвечу в этой статье.

Принцип клонирования

Клонирование - это создание точной копии виртуальной машины, как с теми же настройками, так и с нужными изменениями. Очень удобно, как в тестовых целях, когда необходимо провести нужные изменения, но вы не знаете как поведет себя виртуальная машина, сделав ее копию вы это узнаете и сможете избежать простоя сервисов. Какие методы клонирования существуют:

  • Копирование файлов виртуальной машины (в выключенном состоянии), из минусов, нужно заново ее создавать в инвентории и подсовывать существующие диске.
  • С помощью VMware vCenter Converter Standalon e, это вариант когда нет vCenter Server. Там принцип простой, вы устанавливаете его в виртуальную машину и делаете его клон, как будто это физическая машину, все подробно описано, по ссылке выше.
  • Средствами резервного копирования виртуальных машин "Veeam Backup Replication"
  • С помощью vCenter Cerver.

Ниже опишу первый метод и последний, остальные уже имеют свои подробные статьи.

Копирование файлов VM

Находим нужный ESXI хост, выбираем нужный вам дисковый массив (Datastore) и щелкаем по нему правым кликом мыши, из контекстного меню выбирает "Browse Datastore".

Выбираем нужную папку и из контекстного меню пункт "Copy", далее с помощью встроенного проводника, перемещаем ее в нужное местоположение, можно назвать это таким клонированием виртуальной машины VMware, для бедных.

Далее, на новом месте, открываете папку и щелкаете правым кликом по файлу с расширением *.vmtx, это конфигурационный файл. По сути на этом все. Лично я, чтобы получить доступ к файловой системе ESXI использую WinSCP , либо вы еще можете воспользоваться функциями OVA шаблона .

Если в копируемой VM присутствую snapshot’ы их нужно или удалить перед копированием или скопировать вместе с другими файлами, иначе во время загрузки новой VM будет ошибка с сообщением о невозможности подгрузить файлы с snapshot’ами.

Копирование VM с помощью vCenter

У тех товарищей, кто централизованно управляет своей инфраструктурой, данная функция присутствует при установке. Ее преимущество в том, что клонировать можно как работающую, так и не работающую виртуальную машину. Выбираем нужную и щелкаем по ней правым кликом, в контекстном меню видим пункт "Clone".

На первом окне мастера вас спросят выбрать локацию (Datacenter)

Указываем хост назначения, если он подходит, вы увидите сообщение "Validation succeded"

Если же нет, то вы увидите сообщения:

  • Device CD/DVD drive 1 used backing - исправимая вещь, вам говорят, чтобы вы отмантировали ISO в виртуалке.
  • Network interface "имя адаптера" uses network "другое имя" - типа такой сети на хосте назначения нет, то же ничего страшного, пере воткнете в другой после клонирования.

На следующем шаге клонирования, вам необходимо и место назначения копии машины.

На последнем шаге, вас спросят, хотите ли вы применить кастомные настройки к клону. Customise - это дополнительная настройка, позволяющая задать огромное количество установок. Выбрав пункт "Do not customise" вы закончите процесс мастера клонирования.

Возникла задача организации резервного копирования виртуальных машин Hyper-V с отдельных хостов виртуализации (без кластера) на нескольких удалённых площадках. В силу того, что одной из вводных этой задачи является наличие очень скромных и нестабильных каналов связи, идея использования единого сервера резервного копирования на центральной площадке отпала сама по себе. Ибо одно дело, когда можно стягивать резервные копии в одно центральное место с учётом блочных изменений, сокращая при этом нагрузку на сеть, например тем же System Center DPM , и совсем другое дело, если в сжатые сроки потребуется выполнить полное восстановление ВМ на определённый момент времени по этим же слабеньким каналам. Таким образом, нужно было подумать над тем, как организовать резервное копирование виртуальных машин непосредственно на удалённой площадке, при условии отсутствия увеличения текущих затрат на лицензируемое ПО и на имеющемся оборудовании.

Так получилось, что на этих удалённых площадках помимо хоста виртуализации имеется выведенный ранее из эксплуатации, но вполне рабочий, старенький сервер IBM System x3200 , который можно использовать в качестве файлового сервера для хранения резервных копий виртуальных машин. Возникла идея установить на данный сервер дополнительные диски, в качестве базовой ОС развернуть Linux с пакетом QUADStor , с помощью которого, в свою очередь, создать виртуальный диск с поддержкой блочной дедупликации и по протоколу iSCSI презентовать этот диск хосту виртуализации Hyper-V , а уже на хосте виртуализации с помощью продукта настроить "горячее" резервное копирование виртуальных машин на этот самый iSCSI диск. В итоге должно получиться "дёшево и сердито". В этой заметке я опишу процедуру настройки такой конструкции.

Подготовка файлового сервера на базе Debian Linux c QUADStor

Дисковая корзина нашего будущего файлового сервера IBM System x3200 в имеющейся конфигурации поддерживает не более 4 SAS/SATA дисков 3.5". Учитывая то, что контроллер в этой модели сервера также очень скромный (LSI Logic SAS1064ET) и, упрощённо говоря, умеет только "страйп" или "зеркало", создадим две зеркальных пары дисков – первую на двух уже имеющихся SATA дисках малой ёмкости под операционную систему Linux, и вторую - на двух дополнительно установленных малобюджетных SATA дисках по 1TB для хранения резервных копий ВМ (под виртуальный диск QUADStor).

Итак, на первую зеркальную пару дисков без особых изысков устанавливаем ОС Debian GNU /Linux 8.6 (Jessie ). Вторую зеркальную пару больших дисков при этом оставляем неразмеченными.

Переходим к установке и настройке .

Порядок установки QUADStor на разные дистрибутивы Linux описан в документе Installation/Upgrading on RHEL/CentOS 5.x, 6.x, SLES 11 and Debian 6.x, 7.x . Исходя из того, что в нашем случае используется Debian, устанавливаем предварительно требуемые пакеты:

# apt-get install uuid-runtime build-essential sg3-utils iotop sysstat lsscsi apache2 psmisc firmware-qlogic linux-headers-`uname -r`

Включаем поддержку CGI для веб-сервера Apache :

# a2enmod cgi

Добавляем правило iptables , разрешающее входящие подключения к веб-серверу и сохраняем текущие правила:

# iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT # iptables-save > /etc/iptables.conf

Перезагружаем сервер и убеждаемся в том, что служба веб-сервера успешно стартует при запуске системы:

# systemctl status apache2.service

Теперь скачиваем и устанавливаем основной пакет QUADStor Storage Virtualization (ссылку на актуальную версию пакета берём здесь: Storage virtualization downloads ):

# mkdir ~/QUADStor-files # wget http://www.quadstor.com/virtentdub3z/quadstor-virt-3.2.11-debian7-x86_64.deb -P ~/QUADStor-files # dpkg -i ~/QUADStor-files/quadstor-virt-3.2.11-debian7-x86_64.deb ... Performing post install. Please wait... Synchronizing state for quadstor.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d quadstor defaults Executing /usr/sbin/update-rc.d quadstor enable Building required kernel modules Running /quadstor/bin/builditf. This may take a few minutes. Processing triggers for systemd (215-17+deb8u5) ...

Установка пакета должна завершиться без ошибок.

После установки служба quadstor не будет запущена, но при этом в процессе установки эта служба должна быть автоматически прописана в автозагрузку при старте системы. Перезагружаем сервер и убеждаемся в том, что после загрузки системы служба успешно автоматически стартует:

# systemctl status quadstor.service

Проверяем доступ к веб-интерфейсу пройдя по ссылке http://{сервер} . Веб-сервер должен будет перенаправить нас по ссылке http://{сервер}/cgi-bin/system.cgi

После того как установка завершена QUADStor, выполняем первичную настройку, которая принципиально не отличается от , а именно:

  • Настраиваем ограничение доступа к веб-серверу Apache , а так же, при необходимости, настраиваем поддержку HTTPS ;
  • Переходим в веб-интерфейс управления QUADStor и создаём там Storage Pool ;
  • Добавляем диск (Physical Storage ) в Storage Pool (при этом в качестве добавляемого диска используем вторую зеркальную пару дисков больших дисков на нашем сервере, которые в системе представлены как одно дисковое устройство) ;
  • Создаём виртуальный диск VDisk .

После того, как виртуальный диск QUADStor создан, настроим доступ к нему по протоколу iSCSI . Вообще информацию о том, каким образом возможно получить доступ к виртуальным дискам QUADStor, можно найти в документе Accessing Virtual Disks (VDisks) .

Функционал iSCSI Target реализован в QUADStor с помощью службы ietd , которая открывает в системе TCP -прослушиватель на порту 3260 , поэтому нам потребуется в iptables создать соответствующее разрешающее правило:

# iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3260 -j ACCEPT # iptables-save > /etc/iptables.conf

Чтобы задать настройки конфигурации iSCSI, касающейся созданного нами виртуального диска перейдём в свойства этого диска в веб-консоли QUADStor (Virtual Disks > Modify > iSCSI Configuration ):

Здесь в поле IQN увидим автоматически сгенерированный идентификатор iSCSI-диска и для ограничения доступа к этому диску зададим значения полей Incoming User и Incoming Password . В эти поля пропишем произвольные имя пользователя и пароль, которые наш файловый сервер будет запрашивать у iSCSI клиента (Initiator) при подключении к этому виртуальному диску QUADStor.

Подключение диска QUADStor к хосту виртуализации на Windows Server

Перейдя на наш хост виртуализации Hyper-V на базе Windows Server 2012 R2 , откроем Панель управления и найдём в ней апплет iSCSI Initiator . При первом обращении к этому апплету система сообщит о потребности в запуске системной службы, необходимой для корректной работы с протоколом iSCSI. Соглашаемся с запуском этой службы и переводом её в состояние автоматического запуска при старте системы:

После запуска службы откроется апплет управления iSCSI, где на закладке Discovery нажмём кнопку Discover Portal , чтобы добавить информацию о нашем файловом сервере на базе Linux

В открывшемся окне введём FQDN имя или IP адрес Linux-сервера (порт оставляем предлагаемый по умолчанию - 3260 ) и нажмём ОК

После этого в табличной части поля Discovered targets должен появится ранее упомянутый IQN нашего виртуального диска QUADStor со статусом Inactive . То есть диск успешно обнаружен на удалённом Linux-сервере и теперь для того, чтобы произвести подключение этого диска воспользуемся кнопкой Connect .

Add this connection to the list of Favorite Targets для того, чтобы диск был добавлен в список автоматически подключаемых при старте системы дисков и нажмём кнопку расширенных настроек подключения диска - Advanced

В открывшемся окне включим опцию Enable CHAP log on и укажем имя пользователя и пароль для доступа к диску QUADStor, которые мы задали ранее.

Сохраним сделанные настройки, закрыв окна кнопкой ОК

Если всё сделано правильно, то статус диска должен измениться на Connected .

Перейдём на закладку Favorite Targets и убедимся в том, что диск присутствует в списке на автоматическое подключение при запуске операционной системы.

На этом подключение виртуального диска QUADStor по протоколу iSCSI можно считать законченным. Теперь нужно выполнить инициализацию этого диска в системе и создать на нём раздел с файловой системой NTFS . Для этого перейдём в оснастку Disk Management (diskmgmt.msc), выберем подключенный диск и переведём его в состояние Online

Затем выполним инициализацию диска – Initialize Disk

Будет задан вопрос о выборе типа разметки диска. Так как мы используем виртуальный диск QUADStor, то, вероятно, со временем мы захотим увеличить размер диска, и он будет большего размера, чем сейчас. Напомню, что виртуальный диск QUADStor может быть в любое время увеличен до 64TB , несмотря на то, что реальный размер физических дисков, на которых расположен этот виртуальный диск будет невелик и/или будет оставаться на прежнем уровне. А учитывая то, что в MBR имеется ограничение на размер логических дисков в 2TB , то в нашем случае имеет смысл выбирать тип разметки GPT :

После того, как диск проинициализирован и на нём создана таблица разделов, создадим на этом диске раздел с файловой системой NTFS

Назначим этому диску отдельную букву, например E:\ , и дождёмся окончания процесса форматирования, которое в зависимости от размера диска может занять некоторое время.

По окончании процесса форматирования убедимся в том, что диск доступен нам в системе, и мы можем на нём создавать, модифицировать и удалять папки и файлы. После этих проверок выполним перезагрузку нашего хоста виртуализации и убедимся в том, что в процессе загрузки системы диск автоматически подключается и полноценно доступен.

Установка Veeam Backup Free Edition 9.5

Для резервного копирования виртуальных машин Hyper-V мы будем использовать программу Veeam Backup Free Edition 9.5 , которая позволит нам создавать полную резервную ВМ без её выключения.

Узнать об основных возможностях этого продукта можно из документа Product Overview .

С системными требованиями можно ознакомится загрузив документ Release notes .

Лицензионное соглашение EULA доступно по ссылке Veeam End User Software License Agreement .

Последняя версия 9.5.0.711 , доступная на текущий момент, может быть загружена с сайта Veeam .

Файл образа VeeamBackup&Replication_9.5.0.711.iso размером в 1,5GB после загрузки копируем на наш хост виртуализации на базе Windows Server и монтируем его в систему. Например, с помощью PowerShell сделать это можно так:

Mount-DiskImage -ImagePath " С:\Temp\VeeamBackup&Replication_9.5.0.711.iso "

На смонтированном диске запускаем программу установки Setup.exe , читаем и принимаем лицензионное соглашение, жмём Next

На шаге ввода лицензионного ключа оставляем все без изменений. Без ключа программа будет работать в режиме Free Edition с ограниченной функциональностью, которой в рамках нашей задачи будет достаточно.

Стоит отметить то, что на самом деле в систему устанавливается полноценный экземпляр Veeam Backup & Replication , и если в процессе первичной установки не был указан лицензионный ключ, то его можно добавить в приложение в дальнейшем и повысить режим его работы до редакций Standard , Enterprise или Enterprise Plus . Подробнее узнать о различиях бесплатной и платных версий можно из документа Veeam Backup: Free vs Paid

На следующем шаге, не изменяя набора устанавливаемых компонент, снова жмём Next

Компоненты доустанавливаются из дистрибутива, поэтому отдельно ничего загружать не придётся. После того, как нужные компоненты развёрнуты снова запускаем проверку с помощью кнопки Re-run и переходим к следующему этапу установки - Next .

Здесь мы увидим сводный экран текущих настроек, с которыми будет установлено приложение. Если включить опцию Let me specify different settings , то все указанные настройки можно будет изменить перед началом процесса непосредственной установки. Например, вместо устанавливаемого по умолчанию именованного экземпляра SQL Server 2012 Express , можно задать установку в уже существующий экземпляр SQL Server, поменять имя БД, сервисную учётную запись, расположение каталогов или номера портов. В большинстве случае предложенные настройки можно оставить в конфигурации по умолчанию и нажать кнопку Install .

В процессе установки на нашем хосте виртуализации будет развёрнут именованный экземпляр Microsoft SQL Server 2012 SP3 редакции Express (VEEAMSQL2012 ) и в нём будет создана база данных VeeamBackup . Дождёмся завершения процесса установки.

Регистрация хоста виртуализации в Veeam Backup

По окончании процесса установки, запускаем с рабочего стола или стартового меню ярлык Veeam Backup & Replication Console . В качестве сервера подключения используем localhost и порт по умолчанию 9392 . Включим опцию использования учётных данных текущего пользователя Use Windows session authentication и нажмём Connect

В первую очередь выполним в программе регистрацию нашего хоста виртуализации, чтобы появилась возможность резервного копирования виртуальных машин, расположенных на этом хосте. Для этого на вкладке VIRTUAL MACHINES в дереве инфраструктуры выберем Microsoft Hyper-V и в контекстном меню или верхней ленте кнопок выберем Add server .

В открывшемся мастере добавления сервера введём FQDN имя нашего сервера…

На шаге Type выберем тип Hyper-V сервера. В нашем случае это отдельно работающий хост – Standalone

На шаге Credentials потребуется указать административную учётную запись, с помощью которой Veeam Backup будет подключаться к хосту виртуализации и получать доступ к виртуальным машинам для операций резервного копирования. На мой взгляд, для этой цели правильней будет создать отдельную сервисную учётную запись. При этом можно использовать как локальную учётную запись, созданную на хосте виртуализации, так и доменную учётную запись. В нашем примере выбрана доменная учётная запись, которой на хосте виртуализации предоставлены административные права.

Жмём Next и дожидаемся окончания конфигурации Veeam Backup и подключаемого хоста виртуализации

После закрытия мастера добавления хоста в консоли Veeam Backup должен появится перечень виртуальных машин, расположенных на добавленном хосте.

Теперь можно перейти к проверке функций резервного копирования виртуальных машин c помощью Veeam Backup.

Проверка резервного копирования ВМ в Veeam Backup

На подключённом нами ранее по протоколу iSCSI диске создадим каталог, в который будут помещаться полные резервные копии виртуальных машин, сделанные из Veeam Backup. В нашем случае это будет каталог E:\VMBackups .

Затем в консоли Veeam Backup выберем какую-нибудь виртуальную машину и вызовем для неё пункт меню VeeamZIP

В открывшемся окне укажем путь к только что созданному каталогу для хранения резервных копий, если нужно, определим параметры удаления старых резервных копий и отключим компрессию. Компрессия резервных копий Veeam Backup, это вещь бесспорно интересная, однако в нашем случае включение компрессии приведёт к низким показателям дедупликации на диске QUADStor (проверено на практических опытах). Настроив все параметры текущей сессии резервного копирования жмём OK

Запуск задачи резервного копирования будет сопровождаться информационным окном с статусными показателями выполняемой задачи.

В ходе резервного копирования мы также сможем увидеть, что в консоли Hyper-V Manager виртуальная машина принимает соответствующий статус.

В результате выполнения задачи резервного копирования в указанном нами каталоге будет создана полная резервная копия ВМ в виде файла с расширением VBK . Этот тип фалов ассоциирован в системе с Veeam Backup и по его двойному клику будет автоматически запускаться консоль Veeam Backup и в ней будет открыта форма, из которой можно при необходимости произвести операцию восстановления как всей виртуальной машины, так и отдельных файлов внутри ВМ (Instant File-Level Recovery ).

Таким образом считаем, что резервное копирование, как таковое, у нас работает, но теперь нужно решить ещё одну немаловажную задачу. Дело в том, что бесплатная редакция Veeam Backup имеет ограничения, которые не позволяют нам настраивать запуск резервного копирования по расписанию непосредственно из интерфейса программы. Однако в составе Veeam Backup есть набор командлетов PowerShell , с помощью которых можно вызывать задачу резервного копирования в Veeam Backup. И если совместить эту возможность с Планировщиком заданий Windows (Task Scheduler ), то на выходе мы можем получить вполне работоспособное решение задачи автоматизации запуска резервного копирования по расписанию.

Автоматизация запуска резервного копирования ВМ

Получить онлайн-справку по PS-командлетам Veeam Backup можно по ссылке Veeam Backup & Replication 9.5 - PowerShell Reference . А уже готовый PowerShell скрипт, эксплуатирующий командлеты Veeam Backup, в частности Start-VBRZip , мы можем найти в статье Veeam Backup Free Edition: Now with PowerShell! . Я немного изменил этот скрипт, добавив возможность оповещений по электронной почте только в том случае, если в процессе резервного копирования возникла какая-то ошибка.

# ########################### User Defined Variables ############################ # Names of VMs to backup separated by comma (Mandatory). For instance, $VMNames = “VM1”,”VM2” $VMNames = " KOM-AD01-WS305 " , " KOM-AD01-DEV03 " # Name of Hyper-V host VMs to backup reside on (Mandatory) $HostName = " KOM-AD01-VM14 " # Directory that VM backups should go to (Mandatory; for instance, C:\Backup) $Directory = " E:\VMBackups " # Desired compression level (Optional; Possible values: 0 - None, 4 - Dedupe-friendly, 5 - Optimal, 6 - High, 9 - Extreme) $CompressionLevel = 0 # Quiesce VM when taking snapshot (Optional; VMware Tools are required; Possible values: $True/$False) $EnableQuiescence = $True # Protect resulting backup with encryption key (Optional; $True/$False) $EnableEncryption = $False # Encryption Key (Optional; path to a secure string) $EncryptionKey = "" # Retention settings (Optional; By default, VeeamZIP files are not removed and kept in the specified location for an indefinite period of time. # Possible values: Never , Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month) $Retention = " In1Week " # ########################### Notification Settings ############################ # Enable notification (Optional) # Possible values: 0 - None, 1 - Only Warnings&Errors, 2 - All notifications $EnableNotification = " 1 " $SMTPServer = " KOM-SMTP.holding.com " $EmailFrom = " [email protected] " $EmailTo = " [email protected] " $EmailSubject = " VEEAM Backup Notification " # ########################### Email formatting ############################ $style = " " # ########################### End User Defined Variables ############################ Asnp VeeamPSSnapin $Server = Get-VBRServer -name $HostName $MesssagyBody = @() foreach ($VMName in $VMNames ) { $VM = Find-VBRHvEntity -Name $VMName -Server $Server If ($EnableEncryption ) { $EncryptionKey = Add-VBREncryptionKey -Password (cat $EncryptionKey | ConvertTo-SecureString ) $ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(! $EnableQuiescence ) -AutoDelete $Retention -EncryptionKey $EncryptionKey } Else { $ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(! $EnableQuiescence ) -AutoDelete $Retention } If ($EnableNotification -in " 1 " , " 2 " ) { $TaskSessions = $ZIPSession .GetTaskSessions().logger.getlog().updatedrecords $FailedSessions = $TaskSessions | where { $_ .status -eq " EWarning " -or $_ .Status -eq " EFailed " } If ($FailedSessions -ne $Null ) { $MesssagyBody = $MesssagyBody + ($ZIPSession | Select-Object @{n = " Name " ;e = {($_ .name).Substring(0 , $_ .name.LastIndexOf(" (" ))}} ,@{n = " Start Time " ;e = { $_ .CreationTime}},@{n = " End Time " ;e = { $_ .EndTime}},Result,@{n = " Details " ;e = { $FailedSessions .Title}}) } Else { $MesssagyBody = $MesssagyBody + ($ZIPSession | Select-Object @{n = " Name " ;e = {($_ .name).Substring(0 , $_ .name.LastIndexOf(" (" ))}} ,@{n = " Start Time " ;e = { $_ .CreationTime}},@{n = " End Time " ;e = { $_ .EndTime}},Result,@{n = " Details " ;e = {($TaskSessions | sort creationtime -Descending | select -first 1 ).Title}}) } } } If ($EnableNotification -in " 1 " , " 2 " ) { If (($EnableNotification -eq " 1 " ) -And ($FailedSessions -eq $Null )) { exit } Else { $Message = New-Object System.Net.Mail.MailMessage $EmailFrom , $EmailTo $Message .Subject = $EmailSubject $Message .IsBodyHTML = $True $message .Body = $MesssagyBody | ConvertTo-Html -head $style | Out-String $SMTP = New-Object Net.Mail.SmtpClient ($SMTPServer ) $SMTP .Send($Message ) } }

Откроем с правами администратора консоль Windows PowerShell и выполним проверочный запуск скрипта выполнив команду:

& "C:\Tools\VeeamZip.ps1 "

Запущенный скрипт отобразит статус выполнения задачи создания резервной копии виртуальных машин:

После того, как мы убедились в том, что скрипт успешно отрабатывает при ручном запуске, настроим периодический запуск скрипта с помощью Планировщика заданий Windows. В качестве команды, выполняемой в задании Планировщика, укажем запуск powershell.exe с параметрами:

powershell.exe -NoProfile -command "C:\Tools\VeeamZip.ps1"

Настройку резервного копирования можно считать законченной.

Проверяем результат

Итак, в нашем примере PS-скрипт по расписанию (ночью, один раз в сутки) выполняет резервное копирование двух виртуальных машин с автоматическим удалением резервных копий старше семи дней. По прошествии семи дней проверим результат на нашем хосте виртуализации.

Как видим, у нас действительно имеется по 7 полных резервных копий для каждой из двух виртуальных машин, которые были указаны нами в скрипте. Общий размер используемого этими резервными копиями около 700GB . При этом, если мы заглянем в веб-консоль QUADStor и посмотрим свойства дискового пула на базе которого создан виртуальный диск, то увидим, что с учётом дедупликации реальная физическая дисковая ёмкость использована не более чем на 100GB .

На мой взгляд, результат выглядит совсем неплохо. И в данной ситуации, при необходимости, мы сможем увеличить срок хранения резервных копий до двух недель, а то и до месяца. Только нужно не забывать про то, что для этого нам потребуется увеличить размер виртуального диска QUADStor с последующим увеличением логического диска через оснастку Disk Management на хосте виртуализации.

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

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

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

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

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

Уже имеется у нас, но также можно все выполнить и в 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 уведомления. Подробнее параметры конфигурации описаны на сайте разработчика.!

Если необходимо копировать не все виртуальные машины, то создается файл со списком 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! ######». Если такого нет — проверяйте логи, синтаксис команд и путей к файлам.

Для того, чтобы добавить строку на запуск по расписанию (в 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 завершена.