Заметки о Windows и других программных продуктах Microsoft...

Утилита для конвертирования поколения виртуальных машин

Утилита для конвертирования поколения виртуальных машин

Поколение виртуальной машины в Hyper-V выбирается при создании и в дальнейшем изменить его невозможно, по крайней мере с помощью штатных средств. Однако нашлись добрые люди, разработавшие специальную утилиту Convert-VMGeneration. Утилита представляет из себя PowerShell скрипт и умеет конвертировать виртуальные машины первого поколения в виртуальные машины второго поколения.

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

Предварительные требования

Утилита Convert-VMGeneration может быть запущена только на Windows Server 2012 R2 (вариант установки с GUI) или Windows 8.1 с установленной ролью Hyper-V. Утилита не тестировалась в варианте установки Server Core или на бесплатном Hyper-V Server 2012 R2, соответственно корректная работа в этих системах не гарантируется.

В качестве гостевой ОС в конвертируемых ВМ можно использовать только операционные системы Microsoft Windows Server 2012\2012 R2 и 64-битные редакции Windows 8\8.1. Также перед конвертированием нужно убедиться, что виртуальные машины:

• Остановлены;
• Не имеют снимков (checkpoints);
• Не используют общих дисков (shared VHDX);
• Не участвуют в репликации (Hyper-V replica);
• Виртуальные диски не разбиты на несколько разделов.

Примечание. В текущей версии поддерживается экспериментальный параметр With-IgnoreReplicaCheck, позволяющий конвертировать машины, участвующие в репликации.

Конвертирование

Для начала запустим консоль PowerShell и выведем список имеющихся на сервере виртуальных машин. Как видите, у нас как раз имеется одна машина первого поколения SRV2, ее и возьмем для конвертации.

вывод списка ВМ до конвертации

 

Дальше запускаем утилиту с необходимыми параметрами. Для примера запустим конвертацию машины SRV2, укажем расположение новой ВМ в папке H:\Hyper-V:

E:\Scripts\Convert-VMGeneration.ps1 -VMName SRV2 -Path H:\Hyper-V -IgnoreWinRE

Скрипт выдаст предупреждение и обязательно потребует подтвердить операцию. По окончании работы мы получим новую машину с именем SRV2 (Generation 2) и конфигурацией, идентичной исходной машине SRV2.

вывод работы скрипта

 

И для проверки еще раз выведем список ВМ на сервере. Проверим работу новой ВМ, после чего исходную машину можно удалять. При этом надо помнить, что при конвертировании получается точная копия машины, с тем-же самым именем и IP-адресом (если используется статика). Если ненароком стартовать обе машины, то могут возникнуть проблемы.

вывод списка ВМ после конвертации

 

И еще одно замечание. Как вы заметили, при запуске скрипта я использовал параметр IgnoreWinRE. Без этого параметра отработка скрипта будет остановлена с ошибкой.

ошибка при конвертации ВМ

 

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

reagentc /disable

Эта команда перенесет файл среды восстановления (winre.wim) на системный диск, в папку Windows\System32\Recovery. После конвертации на новой машине надо будет проделать обратную операцию, включив среду восстановления командой:

reagentc /enable

Подробная документация по настройкам и параметрам содержится в самом скрипте, вывести их можно командой:

Get-Help .\Convert-VMGeneration.ps1

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

 
 
Комментарии

Пока нет комментариев.