Hyper-V

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

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


Если вы еще не настроили бесплатный гипервизор hyper-v, рекомендую познакомиться с моим материалом на эту тему — Установка и настройка Windows Hyper-V Server 2019. Если у вас он уже настроен и встал вопрос о том, как быстро, удобно и бесплатно его забэкапить, то я рекомендую воспользоваться бесплатной утилитой 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 файлы с виртуальными машинами. Либо сразу делать резервное копирование на линуксовую самбу, к примеру.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *