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 и бэкап серверов с rsync. Например, делать архивы локально на сервере с hyper-v, монтировать к linux серверу папку и с помощью rsync забирать zip файлы с виртуальными машинами. Либо сразу делать резервное копирование на линуксовую самбу, к примеру.