Backup виртуальных машин vmware esxi. Создание резервных копий виртуальных машин

«Есть системные администраторы, которые не делают резервное копирование, и есть те, которые уже делают резервное копирование».
(с) Из этих ваших интернетов.

Добрый день.

В данной статье речь пойдет о таком необходимом и насущном вопросе в системном администрировании, как средства резервного копирования для виртуальных машин (ВМ) . Данную статью можно справедливо считать логическим продолжением пары предыдущих, где рассматривались процессы развертывания систем гипервизоров на базе продуктов VMware и Microsoft соответственно. На этот раз разговор о том, как настроить сервер, который будет отвечать за создание и хранение резервных копий виртуальных машин платформ vSphere ESXi и Hyper-V.
Для обоих вариантов основой будет служить бесплатная версия программы резервного копирования Veeam Backup & Replication (далее Veeam B&R) . В качестве «сервера бэкапов» в моем случае был выбран обычный ПК с ОС Windows 7 (64 бит) . Про разрядность ОС в скобках упомянуто не случайно - с некоторой версии (вероятно с 7-й или ранее) Veeam B&R поставляется как 64-битное приложение, отказавшись от 32-разрядных систем для сервера Veeam Backup & Replication.
Полную информацию со списком поддерживаемых версий ОС сервера можно найти в справочнике к свежему релизу (на момент написания статьи - v9) , который в свою очередь всегда можно найти на странице FAQ Veeam.

Желая получить бюджетный вариант проекта и максимально возможный выигрыш в стоимости, насколько это возможно в рамках соблюдения лицензионных соглашений, будем использовать бесплатную версию пакета Veeam Backup & Replication. Это в свою очередь несколько ограничит рабочий функционал пакета. В частности в бесплатной версии нет доступа к планировщику заданий и, например — режима инкрементного копирования (только цельные полные копии ВМ, вместо частичных — по изменениям между версиями бэкапов) . Если без второго худо-бедно можно жить, хотя и с оговорками, то в первом случае мы в качестве альтернативы воспользуемся встроенным планировщиком Windows.
Запускать же наш планировщик будет задания, основанные на исполняемых сценариях Windows Powershell, для которых в дистрибутиве Veeam B&R (начиная с версии 8 +update 3) имеются необходимые командлеты, что очень хорошо.

Если вы будете работать с гипервизором ESXI 6-й версии (как в данной статье) , то поверх установленного Veeam B&R v8 должно быть установлено обновление kb2068 или более поздняя версия самой программы — в противном случае вы не сможете подключиться к ESXI (ошибка Failed to login to «SERVER_IP» by SOAP, port 443, user «root», proxy srv: port:0 Unknown API version format: «dev») .

Резервное копирование ВМ VMware vSphere ESXi

Полагаю описывать процесс установки Veeam Backup & Replication на будущий сервер бэкапов нет необходимости - он мало отличается от большинства windows-инсталляторов, если не считать большой длительности из-за установки всех необходимых компонентов, поэтому сразу приступим к обзору пакета от Veeam.

Установка, настройка и проверка работы Veeam Backup & Replication

После установки, запускаем Veeam B&R – для запуска требуются права администратора.

Рис. 01

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

Add Server – VMware vSphere .

Рис. 02

Следующие шаги демонстрируют процесс добавления нового сервера ESXi, помимо IP-адреса, большей частью это заведение аккаунта администратора сервера (Credentials) .

Рис. 03

На следующей вкладке добавляем сам аккаунт администратора ESXi (root)

Рис. 04
Сервер добавлен.

Рис. 05

По завершении добавления, в ноде «VMware vSphere», в списке серверов, мы увидим наш новый гипервизор. Кликнув на его имени, можно увидеть список размещенных на сервере виртуальных машин и их краткое описание.

Рис. 06

Перед дальнейшими действиями по настройке, выполните тестовое резервное копирование виртуальной машины, для чего в списке ВМ, кликните на любой из них правой кнопкой мышки и дайте команду VeeamZIP.

Рис. 07

Откроется диалог с выбором расположения будущего архива с образом ВМ. Выбираете локацию и подтверждаете изменения.

Рис. 08

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

Рис. 09

По завершении процесса в назначенном каталоге будет записан архив с резервной копией нашей ВМ (файл с расширением *.vbk) .

Скорость процесса во многом зависит как от размера файловой системы ВМ (занимаемое место на диске) , характеристик бэкап-сервера и гипервизора (дисковая система, скорость сетевого интерфейса) , так и от архитектуры сети, через которую данная операция выполняется.
В моем примере диски SATA-II и гигабитные сетевые контроллеры, как на бэкап-сервере так и на гипервизоре, между ними коммутатор — также с портами на 1GB/s, сетевые патчкорды небольшой длины и обжаты соответственно под работу на данном стандарте пропускной способности (аналог «стоечной» кроссировки соединений) .
Помимо прочего, могу порекомендовать на все ВМ работающие на продуктах VMware, устанавливать в гостевых ОС пакет VMware Tools для оптимизации работы всех взаимосвязанных служб и утилит внутри инфраструктуры VMware.
Идем далее.

Создание задания для планировщика в Windows PowerShell

После того, как мы убедились, что в ручном режиме нет никаких затруднений, приступаем к добавлению задания в планировщик заданий Windows. Но перед этим, создадим собственно сам исполняемый объект, который будет нашим заданием - сценарий powershell.
Можете создать сценарий с нуля, а можете воспользоваться готовым, который можно позаимствовать в блоге (он же на русском языке) одного из разработчиков из компании Veeam. Из свежих рекомендаций - версия powershell должна быть начиная с 3-й, дабы избежать вероятных проблем в работе командлетов со старой версией (если надо, то обновите перед началом творческих изысканий) . Узнать текущую версию можно набрав команду в консоли powershell:

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

Ниже можно увидеть, как выглядит мой сценарий после изменений (файл с именем VeeamZIP2.ps1) . Измененные поля с моими значениями подсвечены красным цветом.

# Author: Vladimir Eremin # Created Date: 3/24/2015 # http://forums.veeam.com/member31097.html # ################################################################## # User Defined Variables ################################################################## # Names of VMs to backup separated by semicolon (Mandatory) # example from V. Eremin: # $VMNames = "VM1", "VM2", "VM3" $VMNames = "win_xp1", "zabbix" # Name of vCenter or standalone host VMs to backup reside on (Mandatory) $HostName = "192.168.55.100" # Directory that VM backups should go to (Mandatory; for instance, C:\Backup) $Directory = "d:\backup\arch\veeam-esxi\" # Desired compression level (Optional; Possible values: 0 - None, 4 - Dedupe-friendly, 5 - Optimal, 6 - High, 9 - Extreme) $CompressionLevel = "5" # 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 = "In3days" ################################################################## # Notification Settings ################################################################## # Enable notification (Optional) $EnableNotification = $False # Email SMTP server $SMTPServer = "" # Email FROM $EmailFrom = "" # Email TO $EmailTo = "" # Email subject $EmailSubject = "" ################################################################## # Email formatting ################################################################## $style = "" ################################################################## # End User Defined Variables ################################################################## #################### DO NOT MODIFY PAST THIS LINE ################ Asnp VeeamPSSnapin $Server = Get-VBRServer -name $HostName $MesssagyBody = @() foreach ($VMName in $VMNames) { $VM = Find-VBRViEntity -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) { $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) { $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) }

Как видно из примера выше, я изменял только несколько полей:

$VMNames = "win_xp1", "zabbix"

имена виртуальных машин из списка в Veeam B&R

$HostName = "192.168.55.100"

IP-адрес гипервизора ESXi

$Directory = "d:\backup\arch\veeam-esxi\"

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

$EnableEncryption = $False

отключение шифрования архивов

$Retention = "In3days"

автоматическое удаление архива образа виртуальной машины по истечении указанного в переменной периода времени.

Тут вы можете выставить свое значение. — возможные варианты перечислены в комментариях сценария.

$EnableNotification = $False

Здесь я отключил уведомления на e-mail т. к. пока не планировал такую функцию для себя. При желании вы можете настроить это, если потребуется.

Когда все опции определены, необходимо проверить работу нашего сценария.
Запустите консоль CMD от имени администратора и выполните команду:

Powershell –file “c:\bin\VeeamZIP\vmware\VeeamZIP2.ps1”

Если все настроено правильно, вы увидите выполнение сценария:

Рис. 10

Рис. 11

По завершении данного шага приступаем к следующему этапу.

Добавление задания в планировщик задач Windows

Запускаем от имена администратора «Планировщик заданий Windows».
Правой кнопкой мышки кликаем на папке «Библиотека планировщика заданий» и выбираем «Создать простую задачу». Даем нашей задаче имя: «VeeamZIP-test» и задаем свойства новой задачи.

Рис. 12

Опишем характер задачи при необходимости

Рис. 13

Установим график для новой задачи

Рис. 14

Зададим действия, которые надо выполнить для задачи.

Рис. 15

Обратите внимание на данный шаг, а именно на то, как распределены команда и ее аргументы по форме:
— в моем случае планировщик согласился выполнять мой сценарий только при таком методе заполнения полей (Отдельно 2 строки: «Программа…» и «Добавить аргументы…») .

Рис. 16

Рис. 17

Рис. 18

Рис. 19

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

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

Рис. 20

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

Ниже показан характерный пик активности на интерфейсе lan-pci во время загрузки образов ВМ с ESXi на сервер Veeam B&R:

Рис. 21

Записанные архивы образов ВМ в каталоге назначения (хранилище резервных копий) .

Рис. 22

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

Хотелось бы несколько слов сказать касательно типов лицензий.

Для функционирования вышеописанного метода резервного копирования необходимо соблюдения следующих условий по используемому ПО:
ОС бэкап-сервера - Windows 7 x64 sp1/ Server 2008R2 / 2012 или новее;
Veeam Backup & Replication (Free, не ниже v8 +обязательная установка последних обновлений, но не ниже upd v.3) ;
VMware ESXi 6 (вполне возможно будет работать с v5.5) Essential Kit или выше (более расширенная лицензия) . Бесплатная (ESXi Freeware) версия блокирует возможность создавать бэкапы ВМ.

По состоянию на первую половину 2016 года, стоимость лицензий при вышеприведенной схеме будет в пределах 45 т. руб. (ESXi Essential Kit x 3 servers) + 10 т. руб. на Windows 7 (8) .
По поводу ESXi можно отдельно заметить, что лицензия Essential Kit позволит получить доступ к функционированию механизма резервного копирования цельных копий виртуальных машин. В случае наличия финансовой возможности расширить лицензию, скажем до Enterprise, для использования откроется режим частичного копирования (инкрементная схема и еще ряд других полезных и интересных опций) .
Этот режим конечно еще более оптимален, если не смотреть на итоговую смету. Более того, если есть средства на полные корпоративные пакеты VMware ESXi, то тут уже видимо можно вести речь про закупку полной коммерческой версии для Veeam Backup & Replication, что уже откроет дорогу к использованию всех опций данного ПО, включая планировщик. Нетрудно заметить, что такой вариант заставляет задуматься о целесообразности использовать описанную в статье технику работы с бэкапами и очевидно, приведен для общего ориентирования по теме.
В случае, если лишних финансов на расширенные лицензии у вас не наблюдается, то полагаю использование описанной в статье связки выглядит более чем оптимально и бюджетно.

На этом пожалуй завершу первую часть статьи посвященной резервному копированию виртуальных машин с гипервизора VMware ESXi 6 в хранилище сервера Veeam Backup & Replication v8. Во второй части будет рассмотрена настройка бэкап-сервера для работы с виртуальными машинами на базе Hyper-V.

Рассмотрим и сравним два способа резервного копирования виртуальных машин VMware.

Исходные данные

Тестовый стенд представляет собой два гипервизора ESXi на сервере Fujitsu Primergy BX2560 M2 подключённые по SAN (два порта по 8 Gbit/s) и LAN (два порта по 10 Gbit/s). Версия ESXi и VSCA 6.5. Для ESXi диски презентованы системой хранения данных Fujitsu ETERNUS DX8700 S2. В качестве системы хранения бэкапа используем EMC Data Domain 6300, подключенный по SAN (четыре порта по 8 Gbit/s). Для выполнения backup, в целях экономии времени, воспользуемся готовым инструментом Backup Exec, сервер управления системы установлен на физическом сервере HP ProLiant BL460c Gen8 и так же имеет подключение к сети по SAN и LAN двумя портами.

Для тестирования создано три виртуальных машины: VM1 (146Gb), VM2 (157GB) и VM3 (284Gb). Процедура тестирования будет выглядеть следующим образом: выполним три раза FULL Backup каждой системы, после этого вычислим среднюю скорость резервного копирования(Gb/min) для каждого способа.

Система Backup Exec имеет четыре способа получения доступа к данным виртуальной машины, для физического сервера это SAN, LAN (NBD), NBDSSL и четвертый, если сервер Backup Exec установлен на виртуальной машине, HotAdd. Протестируем вариант, когда Backup Exec установлен на отдельном физическом сервере, сравним плюсы и минусы выполнения бэкапа по SAN и LAN.

Настройка Backup Exec достаточно проста и состоит из следующих шагов:

  1. Выбрать существующее или создать новое задание на выполнение бэкапа виртуальных машин
  2. Открыть свойства этого задания
  3. Перейти на вкладку Virtual Machines > подраздел VMware
  4. Отметить нужный нам способ подключения (допустимо активировать сразу все четыре способа и выставить их очередность использования)


СПОСОБ ПЕРВЫЙ: РЕЗЕРВНОЕ КОПИРОВАНИЕ ВИРТУАЛЬНЫХ МАШИН ПО SAN


Для того, чтобы Backup Server мог выполнить бэкап виртуальных машинESXi по SAN, ему необходимо в первую очередь презентовать те же LUN (-ы), которые были презентованы ESXi. В этом случае Backup Server, используя vStorage API, запрашивает информацию у vCenter, в каком LUN находится VMDK виртуальной машины, делает моментальный снимок (snapshot) диска и забирает его по SAN.

В результате этого эксперимента средняя.

СПОСОБ ВТОРОЙ: РЕЗЕРВНОЕ КОПИРОВАНИЕ ВИРТУАЛЬНЫХ МАШИН ПО LAN (NBD)


В этом режиме Backup Server запрашивает у vCenter сведенья о том на каком ESXi находится нужная нам виртуальна машина, делается моментальный снимок и выполняет его передачу по локальной сети с ESXi сервера на Backup Server.

В результате второго эксперимента средняя.

ВЫВОДЫ, ПЛЮСЫ И МИНУСЫ

Если строить с нуля современную инфраструктуру используя сетевое оборудование с пропускной способностью 10 Gbit/s, то применение бэкапа в режиме подключения к данным по локальной сети (NBD) скорее всего, по затратам и времени окажется более эффективно. В случае, когда сеть между ESXi и Backup Host составляет 1 Gbit/s, а необходимое оборудование для подключения по SAN уже есть, то первый способ будет более эффективный и быстрый.

Основной плюс выполнения бэкапа по SAN заключаются в том, что передача данных не загружает локальную сеть и выполняется на достаточно высокой скорости, но в случае 10 Gbit/s сети это уже не является столь явным преимуществом, поскольку даже при сравнительно больших объемах информации окно резервного копирования занимает не значительное время.

Основной плюс выполнения бэкапа по LAN, это возможность использования более дешевого оборудования в качестве системы хранения данных. И как показал тест, построение современной сети на 10 Gbit/s оборудовании обеспечит более быстрый бэкап, чем 8 Gbit/s SAN.

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

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

Используемая в статье информация взята из официальных источников.

Бесплатный 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 завершена.

Существует отличный бесплатный скрипт для резервного копирования виртуальных машин на 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
  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 )
5: День недели (0-7 )

Несколько примеров:

  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

1. Резервное копирование виртуальных машин VMware ESXi

Введение

В данном документе представлены различные способы и стратегии резервного копирования VMware ESXi с помощью vSphere и Bacula Enterprise Edition версий 8.0, 8.2 и 8.4. Плагин Bacula Enterprise Edition для резервного копирования виртуальных машин VMware с помощью vSphere дает возможность восстанавливать исходное состояние виртуальной машины, в то время как резервное копирование файлов на уровне гостевой ВМ упрощает защиту данных критически важных приложений. Резервное копирование VMware использует технологию под названием Changed Block Tracking (CBT), гарантируя в целях создания более эффективных резервных копий и уменьшения нагрузки на сеть отправку в текущий поток инкрементальной или дифференциальной резервной копии только тех блоков, которые были изменены после первоначального полного и/или последнего инкрементального и/или дифференциального резервного копирования.

Основные характеристики резервного копирования VMware

  • Онлайн резервное копирование через VADP
  • Создание VSS снапшотов внутри гостевых ОС для приостановки приложений
  • Полное, дифференциальное и инкрементальное резервное копирование ВМ на уровне образа
  • Восстановление полного образа ВМ
  • Восстановление vmdk файлов в альтернативный каталог
  • Доступ к хранилищу VMware, как по TCP/IP, так и через SAN (FC/ISCSI)

Обзор резервного копирования VMware

Текущая версия плагина для VMware vSphere поддерживает vSphere версий 6.0, 5.5, 5.1, 5.0, 4.1 (минимум 7 версия виртуального аппаратного обеспечения). В данном документе представлены решения для ПО Bacula Enterprise Edition 8.0 и последующих версий, которые не применимы к более ранним версиям ПО.

Глоссарий резервного копирования VMware

В данном документе используются следующие термины, связанные с тем, как сделать бэкап VMware:

  • CBT – технология отслеживания изменённых блоков.
  • Datastore – название используемое VMware для обозначения хранилищ данных.
  • vSphere — представляет собой технологию VMware для виртуализации ОС и выполнения облачных вычислений.
  • VDDK – это набор библиотек C/C++, который позволяет создавать и получать доступ к виртуальным дискам VMware. VDDK используется параллельно с vSphere API для написания ПО для создания резервных копий и восстановления, или схожих приложений.
  • При использовании сервера VMware ESXi файлы виртуальной машины помещаются во внешнюю память большого объёма.
  • NBD – сетевое блочное устройство. vSphere позволяет получать доступ к файлам, размещенным в Datastore с помощью технологии прямого доступа к файлам, доступа через NBD, NBD over SSL или SAN. В случае доступа к файлам через NBD в качестве сетевого протокола используется протокол TCP/IP.
  • SAN . vSphere позволяет получать доступ к файлам в хранилище данных с помощью технологии прямого доступа. SAN может использовать сеть Fibre Chanel (технология резервного копирования без загрузки локальной сети Lan free backup) или технологию ISCSI over TCP/IP.
  • VMware ESX и VMware ESXi – архитектура гипервизора, устанавливаемого на сервер без операционной системы. Меньшая по размеру кодовая база ESXi предполагает меньшую “поверхность для атаки” и меньший размер кода для патча, что позволяет повысить надежность и безопасность системы.
  • VCB – метод консолидированного резервного копирования VM Более ранний VMware API , который, как правило, больше не используется. Плагин VMware не использует технологию VCB.
  • VADP – следующее поколение инфраструктуры защиты данных VMware, реализованное в vSphere 4.0, позволяющее ПО для резервного копирования создавать централизованные, эффективные бэкапы VMware вне хост-машин и без загрузки локальной сети.
  • .vmdk — файловый формат, используемый для виртуальных устройств, разработанных для продуктов VMware.
  • .bvmdk – внутренний файловый формат, используемый плагином Bacula Enterprise для обработки разреженных блоков и дифференциальных/инкрементальных бинарных бэкапов VMware. После конвертации с помощью инструмента vddk файл превращается в «сырой» образ исходного диска, который можно конвертировать в формат vmdk с помощью утилиты qemu-img.
  • В ESX 3.x используется 4 версия виртуального аппаратного обеспечения, в vSphere 4.x – 7 версия, а в vSphere 5 – 8 версия.
  • Отпечаток может быть сгенерирован их ESXi хоста
    openssl x509 -sha1 -in /etc/vmware/ssl/rui.crt \-noout -fingerprint | cut -d ‘=’ -f 2
  • guestfish – оболочка и инструмент командной строки для просмотра и изменения файловой системы ВМ.
  • VM (или ВМ) аббревиатура термина «виртуальная машина».
  • vSphere – это платформа для виртуализации серверов с возможностью согласованного управления виртуальными датацентрами.
  • SELinux — Security-Enhanced Linux (SELinux, Linux с улучшенной безопасностью) — это модуль безопасности ядра Linux, который обеспечивает механизм поддержки политик безопасности контроля доступа, включая полномочное управление доступом (MAC).

1.1 Как сделать бэкап VMware в гостевой ОС

1.1.1 Установка клиента Bacula Client в каждой гостевой ОС

Первая стратегия не предполагает использования плагина Bacula Enterprise Edition для vSphere. Вместо этого на каждую ВМ устанавливается Bacula Enterprise File Daemon, как если бы эти ВМ были обычными физическими серверами. С целью оптимизации потоков ввода/вывода на серверах VMware ESX/ESXi используются задачи Schedule , Priority и Maximum Concurrent Jobs для распределения задач резервного копирования в окне резервного копирования. Поскольку все сервера используют один и тот же набор дисков, выполняя все задачи резервного копирования в одно и то же время, возможно образование узких мест в подсистеме диск/сеть.

Рисунок 1: Установка bacula-fd на каждую гостевую ВМ

Установка Bacula Enterprise File Daemon на каждую ВМ позволяет управлять виртуальными серверами, как если бы они были физическими серверами, а также использовать все функции ПО Bacula Enterprise, такие как:

  • Быстрое восстановление отдельных файлов
  • Вычисление контрольной суммы для отдельных файлов с целью обнаружения вирусов и программ-шпионов
  • Проверка задачи
  • Исключение файла/каталогов (например файлов подкачки и временных файлов)
  • Сжатие на уровне файлов и т.д.

1.1.2 Резервное копирование VMware с помощью плагина Bacula Enterprise Edition для vSphere

В случае стратегии создания бэкапа образа виртуальной машины VMware, плагин Bacula Enterprise Edition для vSphere сохраняет диски Клиента в качестве «сырых» образов в контексте VMware/vSphere. Для того чтобы реализовать данную стратегию не нужно устанавливать Bacula File daemon на каждой гостевой машине.

Плагин Bacula для vSphere свяжется с хостом VMware ESXi для считывания и сохранения содержимого дисков ВМ через NBD или SAN. При непосредственном доступе к образу vmdk, сохраненному в хранилище данных , ПО Bacula не придется прогонять через файловую систему Клиента для открытия/чтения/закрытия файлов. Соответственно ПО будет потреблять меньше ресурсов ESXi инфраструктуры, чем если бы создание бэкапа VMware происходило на каждой гостевой машине. В то же время ПО Bacula также прочитает и сохранит бесполезные данные, например, файлы подкачки и временные интернет-файлы.

Рисунок 2: Создание резервной копии по TCP с помощью NBD

Если плагин vSphere для создания бэкапа использует метод транспортировки данных через NBD, данные передаются поточно на сервер для хранения резервных копий через порт VMkernel системы ESXi.

Плагин Bacula Enterprise для vSphere также может использовать инфраструктуру сети SAN в целях снижения нагрузки на сервера ESXi. Однако, несмотря на потребление меньшего объема ресурсов на сервере ESXi, данные по-прежнему должны будут считываться с ваших дисков, что может привести к конфликту при попытке одновременной передачи/приема данных.

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

1.1.3 Сравнение стратегий резервного копирования VMware

Таблица 1. Сравнение стратегий создания резервных копий

Процедура восстановления отдельных файлов из бэкапа машин VMware, созданного с помощью плагина для vSphere, описана в разделе 2 на странице 27.

1.2 Установка

Документация с детальным описанием процесса установки доступна по запросу.

1.2.1 Конфигурирование

Параметр Plugin Directory утилиты File Daemon, хранящийся в /opt/bacula/etc/bacula-fd.conf, должен указывать на то, где установлен плагин vsphere-fd. so . Как правило, по умолчанию плагин Bacula устанавливается в каталог: /opt/bacula/plugins

Утилита File daemon должна иметь прямой доступ к сети vSphere или доступ через SAN. Проверить подключение можно с помощью программы telnet.
Сетевой доступ vSphere к ESX или серверу vCenter необходимо сконфигурировать в /opt/bacula/etc/vsphere_global.conf.

Рисунок 3. Создание резервной копии через сеть SAN

Параметр Обязательный Значение по умолчанию Описание
Раздел общих настроек global
keep_generation Нет 100 Макс. кол-во бэкапов между двумя полными бэкапами.
profile_all_vm Нет vsphere_all_vm.profile Название внутреннего файла, используемого для хранения информации о профиле ВМ.
root_directory Нет /opt/bacula/working/vsphere Корневой каталог плагина vSphere.
vddk_path Нет /opt/bacula/bin/vddk
Раздел настроек vsphere
username Да Имя пользователя, которому разрешено подключаться к vSphere.
password Да Пароль для имени пользователя, которому разрешено подключаться к vSphere.
hpassword Нет Скрытый пароль для имени пользователя, которому разрешено подключаться к vSphere.
timeout Нет 60 Время ожидания подключения к серверу vSphere в секундах.
thumbprint Да Отпечаток SSL сертификата vSphere сервера.
server Да Сервер vSphere ESXi, используемый для создания бэкапа.
url Да Адрес сервера vSphere ESXi или vCenter используемый в целях осуществления вызова с помощью SOAP.
Default_datastore Нет datastore1 Хранилище данных для восстановления, используемое по умолчанию.
default_restore_host Нет ESX сервер, используемый по умолчанию для восстановление, если в vCenter доступно несколько серверов.
default_ovf Нет Описание OVF по умолчанию, используемое в случае, если текущее описание OVF не может быть загружено в VMWare .
root_directory Нет /opt/bacula/working/vsphere Каталог, используемый для хранение внутренних данных плагина.
datastore_minimum_space Нет Минимальный размер для хранения данных в хранилище данных. Например, 5ГБ.
datastore_allow_overprovisioning Нет Да Позволяет восстанавливать ВМ с помощью функции Over Provisioning. Если параметру присвоено значение «Нет », при восстановлении необходимо гарантировать, что размер всех дисков соответствует размеру хранилища Datastore.
datastore_refresh_interval Нет 600 Интервал, используемый для обновления статистики хранения данных в Datastore.

Таблица 2. Конфигурирование подключения vSphere с помощью файла vsphere_global.conf

Отпечаток можно получить с помощью экрана консоли, нажав F2, а затем авторизовавшись. Отпечаток Thumbprint отобразится в окне View Support Information под SSL Thumbprint (SHA1) . Или же вы можете подключиться по ssh:

Использование нескольких серверов vSphere

Вы можете указать несколько серверов vsphere в файле vsphere_global.conf. При использовании данной функции вам необходимо задать параметр server=xxx в командной строке плагина. Также обязательно указать альтернативный каталог на случай, если ваша ВМ будет иметь то же самое значение MoRef.

Примите во внимание тот факт, что дефолтный раздел является обязательным в файле vsphere_global.conf.

Параметр Обязательный Значение по умолчанию Описание Пример
host Нет Имя гостевой ВМ host=srv1
host_include Нет Образ гостевой ВМ, который необходимо включить host_include=srv3
host_exclude Нет Образ гостевой ВМ, который необходимо исключить host_exclude=srv
disk_exclude Нет Список дисков, которые необходимо исключить disk_exclude=0,2,4
keep_cbt Нет Не пытайтесь активировать CBT keep_cbt
quiesce_host Да Остановить гостевую ВМ перед тем, как сделать снапшот (попытаться, да, нет) quiesce_host=no
server Нет Указать сервер vsphere server=vsrv2
Debug Нет Разрешить отладку debug
abort_on_error Нет Прекратить выполнение задачи после обнаружения ошибки
update_timeout Нет Изменить первоначальное время ожидания обновления

Таблица 3. Параметры команд плагина vSphere

Примите во внимание тот факт, что команды host_include и host_exclude являются регулярным выражением Java.

Скрыть пароль vSphere

Начиная с версии плагина 8.0.3 вы можете скрывать пароль vSphere в файле vsphere_global.conf . Поле скрытого пароля называется hpassword . Для генерации скрытого пароля можно использовать команду @encode . Примите во внимание тот факт, что, если строка, которую вы хотите зашифровать, содержит выражение “=”, при прописывании команды вы должны использовать формат string= ключевое слово.

Тестирование конфигурации vSphere

Чтобы протестировать работу плагина для vSphere, можно использовать следующую команду (в качестве root-пользователя):

При использовании команды обновления vsphere-ctl должен появиться список всех ВМ, которые заданы на сервере ESXi. Если этого не произошло, пожалуйста, проверьте правильность настройки своих учетных данных в файле vsphere_global.conf .

Команда list позволяет отображать информацию, обнаруженную на ESX-хостах и в хранилищах данных.

Пример использования функции Job

При запуске задач по созданию инкрементального/дифференциального бэкапа необходимо обязательно задавать параметр Accurate .

Примеры использования функции FileSet

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

Рисунок 4. Бэкап виртуальной машины VMware guest1 на ESXi сервере

Тестирование функции FileSet

Вы можете использовать команду estimate для тестирования функции FileSet.

Реализация инкрементального резервного копирования VMware на уровне блоков

Примите во внимание тот факт, что утилита CBT не поддерживается 6-ой и более ранними версиями виртуального аппаратного обеспечения, или когда виртуальный диск подключен к совместно используемой виртуальной шине SCSI.

Чтобы CBT могла определить изменённые сектора диска с момента последнего изменения ID, потребуется соблюсти следующие условия:

  • Версия хоста ESX/ESXi 4.0 и выше.
  • 7 версия (и выше) аппаратного обеспечения ВМ, которой принадлежат диски, изменения которых должны отслеживаться.
  • Операции ввода/вывода данных должны осуществляться через блок элементов памяти ESX/ESXi. NFS поддерживается, как RDM-диски в режиме виртуальной совместимости, но не RDM-диски в режиме физической совместимости. Также используется файловая система VMFS при поддержке SAN, iSCSI, или локального диска.
  • Для ВМ необходимо активировать утилиту CBT (смотрите описание ниже).
  • Хранилище ВМ не должно (постоянно или непостоянно) быть представлено независимым диском, то есть таким, которые не будет затронуты снапшотами.

Чтобы утилита CBT смогла определить сектора диска с помощью полного бэкапа, потребуется соблюсти следующие условия:

  • Виртуальный диск должен быть расположен на VMFS-томе при поддержке SAN, iSCSI, или локального диска.
  • ВМ должна иметь нулевое количество снапшотов (0) при активации CBT для реализации т.н. чистого запуска.

При использовании дисков типа “Thick Provisioned Eager Zeroed”, утилита VMWare CBT отобразит все блоки как использованные во время создания полного бэкапа. В случае ВМ, которые не поддерживают CBT, плагин для vSphere всегда будет выполнять полное резервное копирование виртуальных дисков. Чтобы проверить, была ли активирована утилита CBT для виртуального диска, откройте клиент vSphere, выберите команду powered-off virtual machine without snapshots (отключить ВМ без создания снапшотов).

  • Правой кнопкой мыши кликните по ВМ и выберите пункт редактирования настроек Edit Settings .
  • Перейдите на вкладку Options .
  • Кликните по вкладке General под вкладкой Advanced , а затем по пункту Configuration Parameters . Откроется диалоговое окно конфигурации параметров.
  • Кликните по пункту Add Row .
  • Добавьте параметр ctkEnabled и присвойте ему значение true .
  • Кликните по Add Row , добавьте параметр scsi0:0.ctkEnabled и присвойте ему значение true .

Внимание: строка scsi0:0 в параметре scsi0:0.ctkEnabled указывает на SCSI устройство, назначенное для жесткого диска, добавленного к ВМ. Каждый жесткий диск, добавленный к ВМ, получает свое SCSI устройство, обозначаемое как scsi0:0, scsi0:1, или scsi1:1. 
Во время создания первого полного бэкапа VMware плагин для vSphere постарается автоматически активировать утилиту CBT при выключении ВМ. Чтобы отключить данную функцию введите команду keep_cbt в командной строке плагина.

Проблемы при использовании CBT

Если вы возвращаетесь к снапшоту, более раннему нежели последний инкрементальный бэкап, вы должны создать полный бэкап ВМ перед повторным использованием инкрементальных бэкапов. Данная проблема была решена в vSphere 4.1 и и третьем обновлении vSphere 4.0. Вместо возможного предоставления неполных данных, номер для идентификации изменений, полученный до возврата к прежнему снапшоту, теперь правильно рассматривается в качестве недействительного (http://kb.vmware.com/kb/1021607).

Сжатие размера бэкапа путем сброса CBT

Как только блок будет помечен как «использованный» утилитой VMWare CBT, система будет постоянно создавать бэкап данного конкретного блока при выполнении полного резервного копирования, даже если этот блок будет помечаться как «свободный» гостевой ОС. Через какое-то время может возникнуть ситуация, при которой будет создан большой по размеру полный бэкап VMware с малым размером используемого дискового пространства.

Путем повторного создания диска с помощью VMotion можно сбросить таблицу CBT, чтобы пометить только реально использованные блоки. Чтобы выполнить данную операцию, необходимо сначала очистить диск гостевой ВМ путем записи «нулевых» блоков для покрытия всего свободного пространства. Примите во внимание тот факт, что операция будет задействовать ресурсы, поэтому ее необходимо выполнять вне рабочих часов.

В ОС Windows процедуру можно выполнить с помощью утилиты Microsoft sdelete , доступной по адресу http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx

В ОС Linux можно использовать встроенное средство dd . Примите во внимание тот факт, что вы можете ограничить dd, чтобы не заполнить полностью весь диск.

По завершении операции необходимо остановить гостевую ВМ. Это можно сделать через интерфейс оболочки ESXi следующим образом:

Информацию о расположении диска и конфигурационного файла можно найти следующим образом:

После этого нулевые блоки VMDK файлов должны быть очищены через интерфейс оболочки ESXi следующим образом:

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

Затем необходимо включить/отключить гостевую ВМ, чтобы применить изменения в отношении утилиты CBT. Вы можете подождать до тех пор, пока не будет полностью запущен хост.

Теперь вы не должны видеть файлов типа “*-ctk.vmdk” и можете снова включить CBT в файле конфигурации хоста и запустить вашу гостевую ВМ.

Файлы типа “*ctk.vmdk” будут созданы заново. Команда estimate плагина bacula должна отобразить файлы bvmdk меньшего размера.

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

Определение недоступности CBT

Если утилита CBT (отслеживание изменённых блоков) не доступна для диска, файл vsphere-ctl*log может содержать следующую ошибку:

При возникновении данной ошибки, плагин для vSphere будет автоматически создавать полный бэкап образа диска. Чтобы активировать CBT для конкретного диска, смотрите раздел 1.2.1 на странице 14.

Активация доступа через SAN

У вас могут возникнуть сложности с настройкой доступа к сети SAN на хосте. Библиотека VixDiskLib VMWare скомпилирована для версии Redhat 5 64bit. На более поздних ОС, таких как Ubuntu или Redhat 6, необходимо скомпилировать и установить библиотеку 1.95.7. Примите во внимание тот факт, что плагин Bacula Enterprise для vSphere содержит эту библиотеку в пакете bacula-enterprise-vixdisk .

Чтобы использовать технологию перемещения данных по сети SAN, сервер резервного копирования, на котором установлен плагин для vsphere, должен иметь доступ ко всем LUN-блокам, экспортированным на сервер ESX. Такие пакеты, как multipathd , не будут иметь проблем с устройствами с различными подключениями.
Если ваши диски видны как /dev/sda, /dev/sdb, … плагин vSphere откроет каждый диск, чтобы получить универсальный идентификатор UUID и сравнить его с тем, который предоставляет сервер ESX. Например, при использовании iSCSI команда lsscsi отобразит диски следующим образом:

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

Если режим передачи данных через сеть SAN не доступен, плагин для vSphere автоматически переключится к режиму передачи данных через nbd.

Удаление старых снапшотов

В случае, если система VMware содержит снапшоты, которые не были автоматически удалены плагином для vSphere, с помощью плагина vSphere Plugin версии 6.6.3 и выше можно почистить систему, используя следующие команды.

  • Удаление старых снапшотов и предыдущих неудачно сгенерированных снапшотов

vsphere-ctl clean-snapshot —snapshot myhost

  • Удаление старых снапшотов с именем, начинающимся со строки

vsphere-ctl clean-snapshot —snapshot-base pluginTest myhost

  • Удаление всех снапшотов со всеми производными;возможно быстрее)

vsphere-ctl clean-snapshot —snapshot —snapshot-delete-child myhost

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

Трассировка отладки

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

Таблица 4. Способы трассировки, используемые плагином для vSphere

Чтобы извлечь файл bvmdk не конвертируя его с помощью vddk во время выполнения процедуры восстановления, вам необходимо задать уровень отладки FileDaemon = 1000. Во время восстановления Bacula может генерировать неверные отчеты о размере файла.

Рабочие файлы

Плагин для vSphere создает специальные файлы в рабочем каталоге . Эти файлы необходимы для работы утилиты CBT VMWare. Чтобы очистить рабочий каталог плагина для vSphere, вы можете воспользоваться командой vsphere-ctl :

В результате будут удалены 30-дневные файлы и каталоги. Данный период должен соответствовать как минимум периоду созданию полного бэкапа плюс несколько дней для безопасности. Во время создания бэкапа, если плагин не сможет найти рабочие файлы, во время создания последнего бэкапа, плагин vSphere создаст полный бэкап всех дисков.

Исключение диска

Чтобы исключить конкретный диск из процедуры можно через консоль vSphere активировать независимый режим, или использовать функцию disk_exclude (смотрите таблицу 1.2.1 на странице 11).
Чтобы найти diskid для того, чтобы использовать его в функции disk_exclude , можно воспользоваться командой estimate listing . 0.bvmdk – это образ diskid 0.

1.3 Процедуры резервного копирования и восстановления VMware vSphere

1.3.1 Резервное копирование

Рисунок 5. Исключение диска из бэкапа


1.3.2 Восстановление

ПО Bacula Enterprise позволяет восстанавливать любой файл (bvmdk, ovf, …) на локальных дисках. После этого вы можете локально смонтировать образ с помощью инструмента VMWare vmware-mount tool или qemu-nbd и выполнить восстановление на уровне файлов. При использовании параметра where=/path/to/dir в функции восстановления, плагин автоматически восстановит выбранные файлы в указанное место.

Также возможно скопировать «сырой» образ на любое устройство или смонтировать его и восстановить файлы напрямую.

Восстановление на новой гостевой ВМ

Если вы запускаете процедуру восстановления вашей ВМ с помощью параметра where=/, и выбираете все файлы в каталоге vm , плагин для vSphere постарается восстановить ваши диски на новой ВМ, созданной во время восстановления с имеющимися атрибутами (диски, контроллер, тип CPU, …).

В настоящее время режим расширенной передачи данных через сеть SAN не поддерживается для выполнения восстановления. Плагин для vSphere использует передачу данных через NBD.

ESX хост и хранилище данных, которые будут использоваться для восстановления гостевой ВМ, будут определены автоматически. Однако вы можете изменить местоназначение, выбранное по умолчанию, изменив параметры восстановления плагина через меню bconsole:

Либо вы можете воспользоваться интерфейсом BWeb (смотрите рисунок 6)

Рисунок 6: Выбор хранилища данных datastore, сервера ESXi или имя хоста в момент восстановления

Примите во внимание тот факт, что вам необходимо сконфигурировать по меньшей мере одну ВМ на вашем ESX сервере, чтобы автоматически восстановить ВМ с помощью Bacula. В дальнейшем мы планируем устранить данное ограничение.

Начиная с версии Bacula Enterprise 6.2.4, плагин для vSphere поддерживает создание автоматической топологии сети. Таким образом, если ваш ESX хост не предоставляет правильной конфигурации vSwitch для ВМ, плагин Bacula должен будет повторно создать все настройки сети во время восстановления.

Начиная с версии Bacula Enterprise 8.2.1, плагин для vSphere может проверять наличие доступного объема памяти в хранилище Datastore во время восстановления. Пользователь может запретить увеличение резервной области и зарезервировать минимальный объем памяти в хранилище. Эти два параметра можно настроить в файле vsphere_global.conf и можно перезаписать из меню восстановления.

server = 192.168.0.68

url = https://192.168.0.68/sdk

datastore_minimum_space = 64MB

datastore_refresh_interval = 10

datastore_allow_overprovisioning = false

“Нераспределенный” объем памяти, возвращенный сервером vSphere не всегда является точным. Частоту обновления можно изменить используя метод, описанный в руководстве по ссылке http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008367

Иногда ПЩ Bacula не удается загрузить OVF файл с описанием гостевой ВМ на сервер vSphere или vCenter. В частности, это обусловлено определенными ограничениями VMware, такими как “вы не можете использовать OVF, содержащий ссылки на смонтированный CDROM”… Плагин для vSphere использует обходные пути для решения подобных проблем, но он не решает все проблемы. Если у вас возникают подобные сложности, вы можете использовать параметр default_ovf в файле vsphere_global.conf . Как правило, необходимо сконфигурировать параметр default_ovf таким образом, чтобы он ссылался на существующий простой шаблон OVF. В процессе восстановления этот шаблон будет использован автоматически, и вам нужно будет сконфигурировать ВМ позже, указав такие значения, как номер CPU, объем RAM, и т.д.

В ОС Windows в некоторых случаях после фактического завершения процесса восстановления, возможно, потребуется выполнить дополнительные задачи. Например, если восстановленная система не будет грузиться, возможно, потребуется воспользоваться средствами восстановления Windows для отладки системы. Для серверов с установленной службой Active Directory, возможно, потребуется изучить руководства Microsoft для того, чтобы добиться согласованного состояния баз данных AD и синхронизировать с другими серверами AD. Если инсталляция затрагивает динамические диски, вы должны импортировать из в только что восстановленную систему после перезагрузки. Вы можете осуществить импорт с помощью диспетчера дисков или с помощью функции “diskpart”, выбрав один из динамических дисков и введя команду «import».

Восстановление без плагина для vSphere

Если вы пытаетесь восстановить диски в File Daemon, в котором не установлен плагин Bacula Enterprise для vSphere, вам придется конвертировать файлы bvmdk в raw файлы с помощью команды vddk из командной строки:

Формат bvmdk используется плагином для vSphere Plugin, чтобы гарантировать целостность данных и эффективность обработки разреженной информации утилитой CBT.

1.4 Приостановка гостевой ВМ

Чтобы правильно приостановить работу гостевой ВМ, необходимо установить и обновить на ВМ Linux/Windows Virtual Machine инструменты VMware Tools.

Команда плагина quiesce_host=Try/yes/no позволяет контролировать процедуру остановки гостевых ВМ с помощью vSphere перед захватом снапшота. По умолчанию используется значение try . В данном режиме плагин попытается остановить гостевую ВМ при создании снапшота, и, если создание снапшота закончится неудачно, плагин попытается повторно создать снапшот, не останавливая гостевую ВМ. Первая попытка будет занесена в журнал задач в качестве ошибки.

Более подробную информацию о конкретном сообщении об ошибке вы найдете в журнале консоли vSphere.

Warning message from ESXi: the guest OS has reported an error during quescing. Error code was: 2 the error message was: custom quiesce script failed. (Сообщение об ошибке от ESXi: гостевая ОС сообщила об ошибке в момент остановки. Код ошибки 2: ошибка скрипта остановки)

An error occurred while saving the snapshot: Failed to quiesce the virtual Machine (Во время сохранения снапшота возникла ошибка: Невозможно остановить ВМ)

1.4.1 Linux

Путем создания специального скрипта в /usr/sbin/pre-freeze-script , вы сможете остановить свою систему автоматически при создании снапшота с помощью vSphere. vSphere будет пытаться исполнить скрипт /usr/sbin/post-thaw-script в случае, если он будет присутствовать в гостевой ОС.

1.4.2 Windows VSS

Плагин усиливает защиту Windows , создавая перед резервным копированием снапшоты на базе VSS для остановки приложений, активируемых VSS.

Скрипты pre-freeze и post-thaw для VSS. Начиная с версий ESX/ESXi 3.5 U2 и выше, программа VMware Tools сначала ищет скрипты по алфавиту в C:/Program Files/VMware/VMware Tools/backupScripts.d, вызывая их с аргументом freeze , а после в обратном алфавитном порядке вызывает с аргументом thaw (или freezeFail в случае неудачной остановки).

1.5 Поддерживаемые платформы

Плагин для VSphere поддерживает следующие продукты на VMware платформе:

  • ESX/ESXi версий: 6.0, 5.5, 5.1, 5.0, 4.1

В настоящее время мы тестируем корректную работу плагина для VSphere со следующими продуктами VMware платформе:

  • vCenter Server версий 6.0, 5.5, 5.1, 5.0, 4.1 управляющие ESX/ESXi 4.1 и более поздними версиями
  • VirtualCenter версий 2.5, управляющий ESX/ESXi 4.1

Для осуществления манипуляций с файлами и снапшотами плагин для VSphere использует vStorage API. Это расширение требует наличия валидной несвободной лицензии VMWare.

  • Плагин VSphere был протестирован (и поддерживается) следующими платформами на базе Linux: RHEL 6, 7 (Red Hat Enterprise Linux) 64bit
SLES 11 (SUSE Linux Enterprise Server) 64bit

1.6 Ограничения

Плагины могут быть несовместимы с задачами VirtualFull по умолчанию. Пожалуйста, свяжитесь со службой поддержки Bacula Systems, чтобы убедиться в том, что вы используете оптимальные настройки.

2 Обзор процедуры восстановления единичного файла VMware

В данном разделе представлена информация о том, как использовать функцию восстановления одного файла VMware с помощью Bacula Enterprise Edition и плагина для vSphere.

Краткое описание функций

Инструмент восстановления одного файла Bacula Enterprise Edition позволяет использовать следующие функции:

  • Консольный интерфейс
  • Интерфейс Bweb Management Suite
  • Поддержка создания полного/дифференциального/инкрементального бэкапов
  • Поддержка Windows 2003 по 2012
  • Поддержка Linux (ext3, ext4, btrfs, lvm, xfs)
  • Поддержка ESX 5.x и 6

2.1 Установка

Документация, подробно описывающая процедуру установки, доступна по запросу.

2.2 Скрипты восстановления

Эта функция позволяет быстро находить и восстанавливать конкретные файлы из каталога в среде VMware.

2.2.1 Через интерфейс текстовой консоли

Плагин для восстановления одного файла (VMware single file restore) позволяет использовать простую программную консоль, обеспечивающую доступ к файлам внутри ВМ. Процесс восстановления одного файла начинается с монтажа бэкапов ВМ:

Сначала правильно выберите клиент

Затем, выберите задачу, которую хотите восстановить.

Затем выберите нужную ВМ.

Теперь выберите местоположение гостевой файловой системы (локально или через SMB)

На данном этапе, файловая система ВМ монтируется локально (в примере выше файлы доступны по адресу /opt/bacula/working/vmware/5 . Как в случае со стандартной файловой системой, можно найти каталоги и скопировать файлы (через cp, scp, ftp) из другого сеанса работы с терминалом, используя “root” Unix и аккаунты “bacula”. Если вам необходимо использовать другой аккаунт Unix для работы с файлами, используйте функцию “-o allow_other ” при запуске скрипта mount-vmware .

Чтобы очистить сессию, просто нажмите “Enter” в сеансе работы с терминалом, в котором был запущен скрипт mount-vmware .

Начиная с Bacula Enterprise 8.4.8 можно ограничивать список задач Job list с помощью следующих командных строк:

  • -s= ограничить список задач последними ХХХ днями
  • -l= ограничить список задач последними введёнными числами
  • -f= указать расширенный фильтр исходя из имени задачи и/или имени FileSet

2.2.2 Восстановление VMware из интерфейса Bweb Management Suite

Функция восстановления одного файла VMware single file restore может быть реализована с помощью Bweb Management Suite. Данная утилита является мастером восстановления, позволяющим легко и просто восстанавливать файлы из гостевой ВМ. Для начала необходимо выбрать клиент, на котором выполнялась задача по созданию бэкапа с помощью vSphere (смотрите рисунок 7).

Рисунок 7. Выбор Клиента

После того, как будет выбран Клиент, администратор должен выбрать задачу Job (Restore Point- точку восстановления) для восстановления. (смотрите рисунок 8 на другой странице).
Если выбранная задача Job является корректной задачей vSphere, т.е. может быть исполнена, на третьем этапе отобразится список виртуальных машин, включенных в FileSet (смотрите рисунок 9 на следующей странице).

На данном этапе ПО Bacula должно создать виртуальный образ выбранной ВМ. Необходимо восстановить пару небольших файлов из каждой задачи Job, которые составляют выбранную точку восстановления Restore Point . После завершения процедуры ПО Bacula необходимо смонтировать диск выбранной ВМ в системе. Эти шаги, как правило, выполняются быстро, однако, затрачиваемое время во многом зависит от используемой конфигурации. Создаются и на период данного этапа сохраняются индексы, чтобы ускорить выполнение последующих запросов на восстановление.

После того, как диск будет смонтирован, в диспетчере файлов отобразятся файлы выбранной ВМ. В нем вы сможете выбрать файлы или каталоги для восстановления. (смотрите рисунок 10 на странице 31). Затем администратор может создать ZIP или TAR архив. Архив будет создан автоматически и сохранен в /opt/bacula/working . Будет создана ссылка для безопасного скачивания архива по HTTP. Администратор сможет предоставить эту ссылку конечному пользователю.

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

Рисунок 8. Выбор точки восстановления

Рисунок 9. Выбор ВМ

Рисунок 10. Выбор файлов

Рисунок 11. Доступ к файлу

2.3 Примечания

2.3.1 Каталог кэша

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

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

2.4 Ограничения

  • Функция восстановления единичны файлов VMware использует интерфейс Bacula BVFS для отображения списка файлов и каталогов. В случае MySQL; несмотря на ограничения MySQL, связанные с индексами в столбцах TEXT, процедура не оказывает существенного влияния на производительность MySQL. Тем не менее, в целях получения лучшего результата мы рекомендуем использовать PostgreSQL.