Home » Виртуализация » Hyper-V » HVBackup — backup виртуальных машин hyper-v

HVBackup — backup виртуальных машин hyper-v

Хочу поделиться с вами простым и быстрым способом бесплатно бэкапить виртуальные машины, работающие под гипервизором hyper-v с помощью утилиты hvbackup. Если в режиме работы полноценного сервера с графическим интерфейсом это может быть не очень актуально, так как присутствует штатное средство для бэкапа, но если вы используете бесплатную версию Hyper-V Server, вопрос становится очень актуальным.

Из этой статьи вы узнаете:

Если вы еще не настроили бесплатный гипервизор hyper-v, рекомендую познакомиться с моим материалом на эту тему — Установка и настройка Windows Hyper-V Server 2012 R2. Если у вас он уже настроен и встал вопрос о том, как быстро, удобно и бесплатно его забэкапить, то я рекомендую воспользоваться бесплатной утилитой HV Backup.

HVBackup описание утилиты для hyper-v

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

Утилита работает на всех версиях операционной системы, начиная с Windows Server 2008 и далее, как в графическом режиме, так и Server Core установках. Утилита поддерживает в том числе и бесплатную редакцию гипервизора Hyper-V Server.

HVBackup поддерживает app consistent и crash consistent бэкапы hyper-v, используя VSS, встроенный в систему. Существует множество коммерческих решений, основанных на таком же способе бэкапа виртуальных машин, но среди бесплатных мне известен только этот продукт.

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

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

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

Системные требования:
.Net Framework 3.5

Установка .Net Framework 3.5 в командной строке

Чтобы установить .Net Framework 3.5 необходимо выполнить следующие команды в Powershell.

Windows Server или Hyper-V Server 2012:

Install-WindowsFeature NET-Framework-Core

Windows Server 2008 или 2008 R2 (не core):

ocsetup NetFx3

Windows Server (core) или Hyper-V Server 2008 / 2008 R2:

ocsetup NetFx3-ServerCore

HVBackup пример использования

Выполнить полный VSS backup всех виртуальных машин хоста:

HVBackup -a -o d:\vm-backup

Выполнить полный VSS backup списка виртуальных машин (необходимо использовать кавычки, если имена машин содержат пробелы). Бэкап выполняется на удаленный сервер:

HVBackup -l "VM1,VM2" -o \\backup-server\wm-backup

Сделать полный бэкап виртуальных машин, список которых содержится в текстовом файле (каждая ВМ в отдельной строке):

HVBackup -f list.txt -o d:\wm-backup

Скрипт для автоматического бэкапа

Если вы хотите запланировать автоматическое выполнение резервного копирования, то удобнее всего сделать простой bat файл для этих целей и запланировать его исполнение. Создадим backup-all.cmd следующего содержания:

set BCKPATH="\\backup-server\wm-backup"

rem net use %BCKPATH% /user:<user> <password>

pushd %BCKPATH% && forfiles.exe -m *.zip -d -7 -c "cmd /c del @path"
popd

HVBackup.exe -a -o %BCKPATH% 1> log_out.txt 2> log_err.txt

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

Теперь создадим запланированное задание на сервере для периодического выполнения резервного копирования созданным ранее скриптом:

schtasks.exe /create /tn HVBackup /tr c:\backup-all.cmd /sc DAILY /ru <username> /rp /st 01:00:00

Если необходимо удалить задание:

schtasks.exe /delete /tn HVBackup /f

Немедленное выполнение задания:

schtasks.exe /run /tn HVBackup

Параметры командной строки HVBackup

Использование: HVBackup.exe [options]

-b, —backup
Выполнить backup (по-умолчанию).
-r, —restore
Выполнить восстановление.
-f, —file
Текстовый файл, содержащий список виртуальных машин по одной в каждой строке.
-l, —list
Список виртуальных машин для бэкапа.
-a, —all
Резервное копирование всех виртуальных машин на сервере.
-n, —name
Если указано, то делается бэкап только перечисленных виртуальных машин.
-g, guid
Если указано, то делается бэкап перечисленных виртуальных машин по GUID.
-o, —output
Обязательный параметр. Конечная папка для архивов. Может быть в виде локального или сетевого пути.
—outputformat
Формат имени архива виртуальной машины. {0} имя машины, {1} GUID машины и {2} текущая дата и время. По-умолчанию: «{0}_{2:yyyyMMddHHmmss}.zip»
-s, —singlevss
Сделать один snapshot для всех виртуальных машин.
—help
Вывести справку по командам:

 

hvbackup

 

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

Есть хорошая возможность совместить HVBackup и бэкап серверов с rsync. Например, делать архивы локально на сервере с hyper-v, монтировать к linux серверу папку и с помощью rsync забирать zip файлы с виртуальными машинами. Либо сразу делать резервное копирование на линуксовую самбу, к примеру. По приведенной выше ссылки есть пример на эту тему.


Помогла статья? Есть возможность отблагодарить автора

7 комментариев

  1. C:\HVBackup>HVBackup -l «Use***» -o D:\backup
    Cloudbase HyperVBackup 1.0 beta1
    Copyright (C) 2012 Cloudbase Solutions Srl
    http://www.cloudbasesolutions.com

    Initializing VSS

    Starting snapshot set for:
    Backup Using Child Partition Snapshot\Use***

    Volumes:
    D:\

    Component: «Backup Using Child Partition Snapshot\Use***»
    Archive: «D:\backup\Use***_20150807102330.zip»
    Entry: «Use***/Use***/Use***/Use***.vhd»
    ………….Error: Не удалось найти указанный файл.
    в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    в System.IO.FileStream.ReadCore(Byte[] buffer, Int32 offset, Int32 count)
    в System.IO.FileStream.Read(Byte[] array, Int32 offset, Int32 count)
    в Ionic.Zip.SharedUtilities.ReadWithRetry(Stream s, Byte[] buffer, Int32 offs
    et, Int32 count, String FileName)
    в Ionic.Zip.ZipEntry._WriteEntryData(Stream s)
    в Ionic.Zip.ZipEntry.Write(Stream s)
    в Ionic.Zip.ZipFile.Save()
    в Cloudbase.Titan.HyperV.Backup.BackupManager.BackupFiles(String backupOutput
    Path, String backupOutputFormat, IList`1 components, IDictionary`2 volumeMap, ID
    ictionary`2 snapshotVolumeMap, IDictionary`2 vmNamesMap, Int32 compressionLevel)

    в Cloudbase.Titan.HyperV.Backup.BackupManager.BackupSubset(IDictionary`2 vmNa
    mesMapSubset, String backupOutputPath, String backupOutputFormat, Int32 compress
    ionLevel)
    в Cloudbase.Titan.HyperV.Backup.BackupManager.VSSBackup(IEnumerable`1 vmNames
    , VMNameType nameType, String backupOutputPath, String backupOutputFormat, Boole
    an singleSnapshot, Int32 compressionLevel)
    в Cloudbase.Titan.HyperV.Backup.CLI.Program.Main(String[] args)

    C:\HVBackup>

  2. Initializing VSS
    Error: The requested object was a duplicate.
    как избавится от этой ошибки, перерыл весь интернет, ситуация такова, машины кластеризованы, попробывал на самой маленькой и второстепенной размер vhdx 20гб все получилось,а с монстрами типа 300гб выдает эту ошибку и хоть ты тресни.

  3. Здравствуйте.
    Попробовал hvbackup. Не могу ее кому ни будь рекомендовать.
    Одну ВМ второго поколения с CentOS 7, вообще отказался бекапить , сказал «не могу создать snapshot».
    Вторую , VHDX 32Gb, бекапил 45 минут, и сжал слабо. Что мне делать с моими 15 ВМ, объемом около 1Tb ?
    Лучше уж Windows Server Backup (wbadmin). Благо он входит Hyper-V сервер, и очистку может делать по количеству последних копий.
    По скорости у меня к нему претензий не было, как сжимает не помню.
    С уважением.

    • Все верно, для больших машин это средство не подходит. Но в целом это проблема всех бэкаперов такого типа для любого гипервизора. Что в xen, что в kvm, бэкап всей машины из снепшота делается очень долго. Но что есть лучше из бесплатных решений?

      • Я же написал, Windows Server Backup. Он доступен как компонент сервера Hyper-V(Install-WindowsFeature Windows-Server-Backup), правда только в командной строке(wbadmin). Умеет работать с разделами, папками и виртуальными машинами. Может делать копии в локальные и сетевые папки. Поддерживает VSS, есть планировщик, работает довольно шустро.
        В полной версии сервера есть графическая оболочка.

  4. platinumangel

    Спасибо автору за материал.
    Некоторое время использовал HVBackup по этой инструкции, метод работает, но есть недостатки:
    1. Очень долгое время выполнения
    2. С Одной VM на Win2008 у меня так и не смог снять снимок, пришлось бэкапить её отдельно wbadmin’ом. На их форуме такие проблемы часто постят, многим помогает перекомпиляция программы из исходников, я пробовать не стал.
    3. В архивах кроме собственно vhdx нередко попадаются avhdx, объединять приходится вручную. объединение не всегда происходит корректно.

    В итоге плюнул, перешёл на veeam backup free
    Инструкция: https://www.veeam.com/blog/ru/veeam-backup-free-edition-now-with-powershell.html
    Программа бесплатная, работает на порядок быстрее, проблем с ней не возникло.
    Настраивается тоже скриптами.
    Из минусов — бесплатная версия делает только полные бэкапы, инкрементальные не умеет

    • Все верно. Veeam backup free более удобное средство. У самого все руки не доходят статью про него написать.

Добавить комментарий

Ваш e-mail не будет опубликован.