Вдохновленный публикацией «Выжимаем все соки из бесплатной версии Veeam Backup & Replication», я решил написать свой HowTo как по-полной задействовать Veeam.



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

Автоматическая установка Veeam Endpdoint Backup


Начну именно с Veeam Endpdoint Backup, т.к. это относительно новый продукт, призванный упростить жизнь ИТ-сектору и пользователям. Установка проще не бывает:

EndpointBackup.exe /silent

Естественно, лучше воспользоваться средствами автоматической установки. Выбирайте свой любимый, например можно ставить из «exe» через WSUS. Разбирать файл установки на MSI я не рекомендую, т.к. там куча манифестов, все работает именно в сборе. К сожалению, изучив форум VEEAM, выяснил, что не существует вменяемого решения по автоматической конфигурации, да и сам не нашел, но сложилось впечатление, что настройки правил бекапа хранятся в MSSQL-базе (UPD: догадка подтвердилась).

Уведомления Veeam Endpoint Backup по e-mail


В текущей версии нет возможности создавать алерты Veeam Endpoint Backup (далее VEB) из коробки. Но решение для электронной почты есть, тем более, лежит на поверхности. Это мониторинг eventlog, в данном случае средствами PowerShell: Тема на форуме Veeam.

Я сознательно не привожу готового PS-скрипта, т.к. лучше изучить вышеприведенную ссылку и на ее базе создать нужное решение. У меня, например, это заточка под заббикс. Пусть алерты шлет тот, кто обучен, и не важно куда, что на мыло, что на смс, что в прочие вконтактики.

Veeam Endpdoint Backup отлично работает с некоторыми серверными решениями


Вот тут я задал вопрос про резервное копирование и восстановление контроллеров домена. Имея достаточно плачевный опыт по восстановлению системы КД из образа системы резервного копирования другого вендора, я словил USN Rollback. После этого зарекся на восстановление только из «систем стейт». Должен заметить, что негативный опыт был лет 10 назад, на Win2k3. Уверен, что сейчас все было бы отлично, но как говорится, осадочек остался и Veeam я тоже не доверял. Так вот, известно, что КД — достаточно привередливая к вариантам восстановления сущность, но VEB справился с задачей на отлично. VSS используется корректно, USN RollBack не словил, а небольшой мой тупняк по поводу загрузки в безопасном режиме, я думаю, простителен.

Добавлю, что официальной поддержки резервного копирования и восстановления средствами VEB AD, SQL, Exchange и пр. не заявлено. Так что используйте скорее, как дополнительный вариант

Для тех кто не пошел по ссылке выше скажу, что в моем случае КД был резервным, на Win2k12R2, с ролью GC, DNS, DHCP, File Services. Крутился внутри ESXi 5.5. Для восстановления загружался с ISO-образа VEB, созданного в этой же среде. Хотя можно было…

Загрузка VEB средствами PXE


У нас есть купленный Acronis на несколько воркстейшенов, через него осуществляется регулярный бекап сверх-критичных рабочих станций. Понятно, что VEB не умеет централизованную админку или хотя бы алерты на мыло без костылей, но с появлением решения от Veeam созрела идея бекапить абсолютно все станции на случай сбоя системного раздела на «диск D». Да, в случае выхода из строя всего жесткого диска это не поможет, но при сбое «диска Цэ» будет все равно быстрее восстановить бекап, чем поднимать систему через WDS и накатывать некоторые специфические вещи, вроде клинет-банков. Кстати, WDS — отличный инструмент… И тут осенило, зачем создавать ISO образы Recovery Media на каждый воркстейшен, потом где-то хранить и записывать на CD/флешку, идти пешком!!! на другой этаж… В общем, загрузочный образ восстановления VEB представляет собой WinPE той версии Windows (ВНЕЗАПНО), в которой был создан. Забыл упомянуть, VEB поддерживает только современные версии Windows, начиная с Win7 SP1. Итак, создав ISO-образ с дефолтными настройками на одной из машин в виртуальной среде, я распаковал его и вытащил файл boot.wim. Засунул его в WDS и… загрузился по сети. С первого раза, без бубнов. Сеть работала, смог зайти на линух-шару, где лежали файлы бекапов и накатить резервную копию. Едем дальше. Проведя несколько опытов успешных и не очень, пришел к выводу, что нужно обязательно добавить в boot-образ WDS типовые драйвера сетевых карт, использующихся у нас. Что незамедлительно и сделал, прямо в оснастке WDS, благо для добавления драйверов в образ загрузки (boot.wim) не требуется разборка/сборка средствами DISM, в отличие от образа установки (install.wim). В общем, все как обычно, если вы разворачиваете винду через WDS, у вас уже добавлены драйвера на сервер. И еще, напомню, что парни из Veeam в загрузочный образ восстановления добавили несколько полезных штук, вроде сброса пароля локального админа или тестирования памяти.

Ложка дегтя объективности. Как и в случае с обычным образом загрузки, у вас должно быть несколько образов восстановления. Для Win7 x32, Win 7 x64, Win2k8, Win2k12, etc. Кстати, вариант восстановления из резервной копии Windows Backup там тоже присутвует. И загрузкой через WDS вы ничего не нарушаете.

Запуск Veeam Backup & Recovery Free из консоли


По ссылке в начале статьи автор немного оговорился, заявив, что VB&R Free умеет бекапить виртуальные машины через Start-VBRZip. На тот момент это было не так, но вот тут сотрудник Veeam пообещал, что такой функционал будет реализован. И в конце апреля свершилось.
Действительно, как многие знают, теперь Start-VBRZip можно запускать под FREE лицензией, но с рядом ограничений. Основные это — только фулл бекап, и только одну виртуальную машину в одном задании. Кстати, через GUI можно запускать несколько бекапов одновременно, но в разных заданиях. Не страшно, подумал я и почитав инструкцию, в самом простом варианте реализовал скрипт так:

Скрипт на PoSH. В данном примере для VMware.

# Initialize Veeam Toolkit
& "C:\Program Files\Veeam\Backup and Replication\Backup\Initialize-VeeamToolkit.ps1"
# Set Virtual Machines list
$vmNames = 'vm1.domain.lcl', 'vm2.domain.lcl', 'vm3.domain.lcl', 'vmX.domain.lcl'
# Start backup job for each VM from list
foreach ($i in $vmNames) {
	$viObject = Find-VBRViEntity -Server vc1.domain.lcl -Name $i
	Start-VBRZip -BackupRepository "VeeamBackupRepo02" -Entity $viObject -Compression 5 
}

Поясню:
$vmNames — список вирт машин для последовательного бекапа. Обязательно через пробел, так как написано, в противном случае Veeam сочтет, что это список машин в рамках одного задания, корректно его отработает и пошлет… с указанием, на то, что в одном задании может быть только одна машина.
vc1.domain.lcl — адрес vCenter. Можно цепляться и напрямую к хосту, но ведь вы помните, что VB&R не может работать на бесплатной версии vSphere. Минимум — vSphere Essentials. (Я знаю, что можно вроде как юзать Veeam на полностью халявном ESXi 5.0, но тут ничего никто не обещает).
VeeamBackupRepo02 — репозиторий, куда бекапить машины. Откуда взялся во FREE версии кастомный репозиторий? Об этом ниже.

Оповещения по электронной почте.


В моем случае используется ПДД от Яндекса, поэтому просто оставлю это здесь:
Меню -> Options -> E-mail Setting




В случае другого почтового сервера может быть иначе. Гуглить в Яндексе и наоборот.

Управление дополнительными фишками.


Включите полный интерфейс VB&R FREE и не выключайте его. При загрузке оснастки в полном интерфейсе будет просить купить лицензию или оставить как есть. Я так понимаю, что это маркетинговая замануха. Пусть лучше ответит sysmetic. Работать не мешает, а вы сможете управлять репозиториями, что недоступно в «бедном» интерфейсе.

Запуск задач VB&R через планировщик.


Я стараюсь под каждую задачу или сервис создавать своего пользователя AD или локального с минимально нужными правами. В случае запуска задач VB&R от специально обученной учетки у меня ничего не вышло:
Requested registry access is not allowed
Одна из тем на форуме VEEAM
Поднятие прав до максимальных в домене ни к чему не привело. В итоге через виндовый планировщик пришлось запускать задачу от того юзера (к слову админа домена), под которым ставился VB&R. Знаю, что когда планово сменю пароль, то задача слетит, но пока так. Все службы Veeam работают под «системной учетной записью», решения я найти не смог.
А вообще задачу выполнения PowerShell скрипта из планировщика заданий Windows следует создавать следующим образом:
Программа или сценарий:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Добавить аргументы:
-File «G:\Backup\Scripts\VbrZip2.ps1»

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

Комментарии (19)


  1. Loxmatiymamont
    01.07.2015 17:07

    В рамках гуманитарной помощи ;)

    Скрипт для бекапа виртуалочек на все случаи жизни
    ##################################################################
    # User Defined Variables
    ##################################################################

    # Names of VMs to backup separated by comma (Mandatory). For instance, $VMNames = “VM1”,”VM2”
    $VMNames = ""

    # Name of vCenter or standalone host VMs to backup reside on (Mandatory)
    $HostName = ""

    # Directory that VM backups should go to (Mandatory; for instance, C:\Backup)
    $Directory = ""

    #Optionally, you can change compression level and desired retention, disable VMware quiescence, enable encryption or even notification settings:
    # 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 or Hyper-V Integration Components are required for this in the guest OS; 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 = «Never»

    #If you like to get an email report once the backup is completed, you should additionally fill out the following notification settings.
    ##################################################################
    # Notification Settings
    ##################################################################
    # Enable notification (Optional)
    $EnableNotification = $True
    # Email SMTP server
    $SMTPServer = ""
    # Email FROM
    $EmailFrom = ""
    # Email TO
    $EmailTo = ""
    # Email subject
    $EmailSubject = ""
    Бонус - шифрование
    $SecurePassword = Read-Host -Prompt «Enter password» -AsSecureString
    $SecurePassword | ConvertFrom-SecureString > “Directory where secure string should be stored; C:\SecureString.txt, for instance”
    #After that, specify the path to the newly-created file in the main script:
    # Protect resulting backup with encryption key (Optional; $True/$False)
    $EnableEncryption = $True
    # Encryption Key (Optional; path to a secure string)
    $EncryptionKey = «C:\SecureString.txt»


    1. yosemity Автор
      01.07.2015 17:20

      А скрипт-то где? Это писание переменных, вышеуказанный код вообще ничего не делает.


      1. Loxmatiymamont
        01.07.2015 17:30

        мдё, недокопипастилось =)

        для вары
        ##################################################################
        # User Defined Variables
        ##################################################################

        # Names of VMs to backup separated by semicolon (Mandatory)
        $VMNames = ""

        # Name of vCenter or standalone host VMs to backup reside on (Mandatory)
        $HostName = ""

        # Directory that VM backups should go to (Mandatory; for instance, C:\Backup)
        $Directory = ""

        # 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 = $True

        # 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 = «Never»

        ##################################################################
        # Notification Settings
        ##################################################################

        # Enable notification (Optional)
        $EnableNotification = $True

        # 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)
        }


        1. apple01
          01.07.2015 18:40

          Поясните пожалуйста как нужно применять этот скрипт (на какой машине, какие программы должны быть установлены для него). Для примера когда у меня есть несколько vm на vmware esxi 5.5 и Windows 7 PC (на котором если я правильно понимаю нужно запускать этот скрипт?) Спасибо.


          1. yosemity Автор
            01.07.2015 18:52

            Это скрипт для резервного копирования средствами Veeam Backup & Replication. Соответственно он должен запускаться машине с установленным VB&R.


            1. Loxmatiymamont
              01.07.2015 19:23

              … где должна быть установлена оснастка VeeamPSSnapin. Это необходимые и достаточные условия.


              1. yosemity Автор
                01.07.2015 19:26

                Я полагаю, что если вопрошающий задает вопрос, где запускать скрипт, то для начала надо поставить VB&R. :)


                1. Loxmatiymamont
                  01.07.2015 19:36

                  Так то я не спорил. Просто дополнил, для полноты картины.


                  1. apple01
                    02.07.2015 22:29

                    Aaa :) А то я подумал (особенно после упоминания о гум. помощи) что скрипт применим к описываемому в статье бесплатному Veeam Endpoint Backup.

                    Поясните пожалуйста тогда в чем преимущество применения скрипта, если VB&R и сам умеет неплохо бэкапить VM-ы?


                    1. yosemity Автор
                      02.07.2015 22:52

                      В том, что мы говорим про VB&R FREE. В нем либо руками через гуй запускать, либо использовать командлет Start-VBRZip.


                    1. Loxmatiymamont
                      02.07.2015 23:06

                      фри версия не умеет бекапить по расписанию. скрипт можно запихнуть в планировщик и…


                    1. apple01
                      02.07.2015 23:12

                      Спасибо друзья за терпеливые ответы, попробую поставить себе и поэкспериментировать с бесплатной версией и скриптами.


    1. navion
      01.07.2015 23:08

      А чего у всех в скриптах указывают ВМ? Есть же таги и они офигительно удобны!


      1. yosemity Автор
        07.07.2015 23:36

        Только что заметил ваш комментарий, поясните на счет тегов для FREE версии.


        1. navion
          08.07.2015 01:29

          Они там работают.
          Один раз создаёте задание в планировщике, которое делает Start-VBRZip по тагу и забываете про него, а новым ВМ просто добавляете нужный таг.

          Про это писали в блоге Veeam:
          habrahabr.ru/company/veeam/blog/249071


  1. ka3ax
    16.07.2015 12:42

    Расскажите, пожалуйста, подробнее про полный интерфейс:

    > Включите полный интерфейс VB&R FREE и не выключайте его.

    Допустим, я включил полный интерфейс VB&R FREE, настроил кучу всего… а он через 30 испытательных дней превратился в тыкву? Или этот полный интерфейс никогда не пропадает?


    1. yosemity Автор
      16.07.2015 16:32

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


  1. ka3ax
    16.07.2015 17:41

    Да, управление репозиториями — штука хорошая. А репозитории точно не пропадают после истечения тестового периода?

    А что ещё в полном интерфейсе продолжает работать после истечения тестового периода?


    1. yosemity Автор
      16.07.2015 22:04

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