P2V конвертация физического контроллера домена на базе Windows Server 2012 R2 в виртуальную машину Hyper-V Generation 2

imageСогласно достаточно давно появившейся информации, как например в статье Windows Server 2012 Failover Cluster – Enhanced Integration with Active Directory (AD), нам предоставляется возможность виртуализации и размещения контроллера домена в кластере Hyper-V, даже не смотря на то, что этот самый кластер будет стартовать раньше, чем виртуальный контроллер домена внутри этого кластера. Если честно, я долго не решался браться за виртуализацию контроллера домена, однако последнее общение с коллегами показало, что из их опыта, виртуальный контроллер домена внутри кластера Hyper-V - это вполне реальный и работоспособный сценарий.

В этой заметке мы рассмотрим пример Physical-to-Virtual (P2V) конвертации физического сервера в виртуальную среду на базе гипервизора Hyper-V в составе ОС Windows Server 2012 R2. В рассматриваемом примере физический сервер представляет из себя серверную платформу HP ProLiant DL 360 G5 с ОС Windows Server 2012 R2 и основными серверными ролями AD DS и DNS. И как наверное понятно, с инфраструктурной точки зрения сервер представляет собой действующий контроллер домена.

Для выполнения конвертации действующего физического сервера в виртуальную машину Hyper-V я воспользуюсь утилитой Microsoft Virtual Machine Converter (MVMC) 3.0. Ознакомится со всеми возможностями этой утилиты можно в библиотеке TechNet. На мой взгляд, помимо преимуществ, эта утилита имеет и ряд определённых недостатков. К недостаткам я могу отнести например то, что получающаяся в результате P2V конвертации виртуальная машина имеет формат Generation 1., а также то, что каждый логический диск создается в виде отдельного VHD-файла. Но в целом это преодолимые вещи и их мы рассмотрим после завершения процедуры конвертации с помощью MVMC. В конечном итоге план наших действий будет следующий:

1. P2V конвертация физического сервера с помощью MVMC.
2. Преобразование виртуальных дисков в формат VHDX.
3. Настройка сети в гостевой ОС виртуальной машины.
4. Проверка обновления компонент интеграции Hyper-V
5. Удаление ПО поддержки аппаратных компонент сервера.
6. Конвертация виртуальной машины в формат Generation 2.
7. Удаление несуществующих устройств из ОС виртуальной машины.

Чтобы сократить время конвертации, все операции будем выполнять непосредственно на одном из хостов виртуализации. При выборе хоста следует учитывать пару простых правил, соблюдение которых поможет избежать ошибок связанных с нехваткой дискового пространства как в процессе P2V конвертации, так и в последующем процессе преобразования ВМ G1 в G2:

А) Для операций P2V хост виртуализации должен иметь свободное дисковое пространство объёмом не менее, чем общий размер занятого пространства на дисках виртуализуемого сервера. А с учётом временных операций MVMC желательно вообще ориентироваться на двойной объём данных.

Б) Для последующих операций конвертации ВМ G1 в G2 на системном диске хоста виртуализации, где предположительно расположены папки профилей пользователей, должно присутствовать свободное дисковое пространство объёмом не менее, чем общий размер занятого пространства на дисках виртуализуемого сервера. В процессе конвертации будет создана временная копия виртуального диска в виде wim-образа в каталоге %LOCALAPPDATA%\Temp или C:\Users\%USERNAME%\AppData\Local\Temp)

 

P2V конвертация физического сервера с помощью MVMC

Как и условились, устанавливать MVMC будем на тот хост виртуализации, который будет получателем новой виртуальной машины. На выбранном хосте должна быть установлена роль Hyper-V и включена "фича" BITS Compact Server. Роль Hyper-V была установлена ранее, так как это действующий хост виртуализации, а вот BITS нам нужно будет установить дополнительно, так как по умолчанию она выключена. Сделаем это с помощью PowerShell:

Import-Module ServerManager
Install-WindowsFeature -Name "BITS-Compact-Server" -IncludeAllSubFeature -IncludeManagementTools

image

После установки, запускаем MVMC и на первом экране выбираем тип конвертации – Physical machine conversion

image

 

Далее на появившейся вкладке Source вводим полное доменное имя физического сервера подлежащего процедуре виртуализации, а также учетные данные для административного доступа к этому серверу. Так как в нашем случае речь идёт о контроллере домена, используются учетные данные администратора домена.

image

 

На следующем шаге нажимаем кнопку Scan System, и ждём когда в информационном окне System Information появится информация о конвертируемом сервере.

image

 

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

image

 

На шаге VM Configuration вводим имя создаваемой виртуальной машины (не должно совпадать с именами существующих на хосте виртуализации виртуальных машин), количество виртуальных процессоров (ядер) и объём оперативной памяти.

image

 

Далее вводим имя хоста виртуализации, на котором будет создана соответствующая виртуальная машина. В моём  случае указано имя сервера виртуализации, на котором запущен конвертор.

image

 

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

image

 

На шаге Workspace указываем имя любой локальной папки, которая будет использоваться MVMC как промежуточное место при конвертации физических жёстких дисков в виртуальные.

image

 

Далее на шаге Network Configuration указываем виртуальный коммутатор Hyper-V, к которому будет подключён сетевой адаптер создаваемой виртуальной машины.

image

 

На шаге Summary просматриваем краткую сводную информацию и запускаем процесс конвертации кнопкой Finish 

image

 

Дожидаемся успешного окончания процесса конвертации…

image

 

Сразу после того, как процесс конвертации завершён, выключаем физический сервер-источник.

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

Также создана виртуальная машина формата Generation 1, у которой виртуальные диски подключены к виртуальному IDE-контроллеру. Виртуальный диск с длинным названием (по метке тома с физической системы) используется для запуска ОС со второго, основного виртуальном диска.

Теперь нужно выполнить первый проверочный запуск виртуального сервера, чтобы убедиться в том, что виртуализованная система стартует и работает успешно. На всякий случай перед первым запуском можно отключить сетевой адаптер виртуальной машины от виртуального коммутатора Hyper-V.

Первый запуск виртуальной машины может занять некоторое время, так как гостевой ОС необходимо выполнить поиск и установку драйверов от нового виртуального оборудования.

image

Если первичный запуск прошёл успешно, можно считать что основная стадия виртуализации выполнена и все последующие действия можно выполнять лишь по желанию.

 

Преобразование виртуальных дисков в формат VHDX

Так как виртуальная машина была создана MVMC с дисками в формате VHD мы можем самостоятельно выполнить преобразование дисков в более "продвинутый" формат VHDX. Для этого выключим виртуальную машину и в консоли Hyper-V Manager из меню Actions выберем пункт Edit disk. Выбрав виртуальный диск на шаге мастера Choose Action выберем режим конвертирования – Convert

image

Далее выберем формат VHDX и дождёмся завершения процедуры преобразования.

image

После того как диски преобразованы изменим путь к дискам в свойствах виртуальной машины

image

Сохраним настройки и снова проверим запуск виртуальной машины с виртуальными дисками нового формата.

 

Настройка сети в гостевой ОС виртуальной машины.

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

image

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

 

Проверка обновления компонент интеграции Hyper-V

Чтобы убедиться в том, что в "новоиспечённой" виртуальной машине используются компоненты интеграции Hyper-V самой актуальной версии, доступной на хосте виртуализации, откроем консольное подключение к виртуальной машине и в меню Action выберем пункт монтирования образа диска с компонентами интеграции – Insert Integration Services Setup Disk 

image

В смонтированном в виртуальной системе диске найдём и запустим файл \support\amd64\setup.exe

image

Если компоненты интеграции имеют актуальную версию, то мы получим примерно следующее сообщение:

image

В противном случае необходимо будет произвести установку компонент с последующей перезагрузкой гостевой ОС виртуальной машины.

 

Удаление ПО поддержки аппаратных компонент сервера

После того как наш сервер стал виртуальным, нужно позаботиться о том, чтобы всё программное обеспечение, которое ранее было установлено на этот сервер для поддержки аппаратных компонент, было аккуратно удалено. В нашем примере удалению подлежат все приложения из состава HP Insight Software. Также мы можем удалить установленного ранее агента ИБП, так как теперь выключением гостевой ОС виртуальной машины в случае отключения электропитания будет управлять хост виртуализации. 

image

После удаления ПО снова перезагрузим гостевую систему, чтобы убедиться в её успешном запуске.

 

Конвертация виртуальной машины в формат Generation 2

На данном этапе наш виртуальный сервер полноценно работает в штатном режиме, однако если мы хотим улучшить его путём преобразования в формат Generation 2, предварительно стоит позаботиться о создании резервной копии рабочей ВМ. Просто и удобно это можно сделать например с помощью System Center 2012 R2 Data Protection Manager (DPM)…

image

Как говорит один мой знакомый в таких случаях "Тиха украинская ночь, но сало надо перепрятать".

Преобразование в виртуальную машину второго поколения будем проводить с помощью небезызвестного PS-скрипта Hyper-V generation 2 VM conversion utility (Convert-VMGeneration). Если говорить упрощенно, то принцип работы данного скрипта заключается в том, что он новую виртуальную машину второго поколения с новым виртуальным дисков, на который клонирует копию основного системного раздела с исходного виртуального диска ВМ G1 и создаёт дополнительные разделы необходимые для загрузки ВМ G2. Таким образом, исходная виртуальная машина первого поколения остаётся нетронутой, и если в процессе конвертации G1>G2 возникнут трудности непреодолимого характера, то нам никто не мешает продолжить использование исходной виртуальной машины. 

Итак, скачиваем и копируем скрипт Convert-VMGeneration.ps1 на хост виртуализации, где в данный момент работает наша виртуальная машина.

Перед началом конвертации ещё раз убедимся в том, что на диске с профилями пользователей (как правило это диск C:\) достаточно места для создания временной копии виртуального диска ВМ (в процессе конвертации будет создан временный wim-образ в каталоге %LOCALAPPDATA%\Temp)

Дополнительно убедимся в том, что внутри виртуальной машины выключена поддержка среды восстановления WinRE (требование автора скрипта конвертации). Сделать это можно консольной командой:

reagentc /disable

image

Выключим виртуальную машину.

Запустим на хосте виртуализации скрипт конвертации:

.\Convert-VMGeneration.ps1 -VMName "KOM-DC01" -Path "D:\"

image

Как видим, первая попытка запуска скрипта завершается ошибкой.

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

image

На первом диске (Disk 0) содержится информация необходимая для загрузки ОС, но не содержится самой ОС. При этом скрипт пытается использовать для конвертации именно этот диск. Так как в результате работы скрипта загрузочный раздел фактически будет создан заново, мы можем попробовать удалить имеющийся загрузочный диск. Для этого выключим виртуальную машину и удалим из конфигурации ВМ первый виртуальный диск, который имеет метку тома в виртуальной ОС “System Reserved” (диск объёмом примерно в 350MB).

   image

 

То есть мы оставим в свойствах ВМ только один диск, тот на котором расположена гостевая ОС Windows Server 2012 R2. После этих изменений не нужно пытаться запустить виртуальную машину (из этого всё равно не выйдет ничего хорошего), а сразу пробуем выполнить скрипт конвертации:

.\Convert-VMGeneration.ps1 -VMName "KOM-DC01" -Path "D:\" -IgnoreWinRE

Ключ IgnoreWinRE здесь добавлен для того, чтобы избежать сообщения после которого преобразование прекращалось с ошибкой (несмотря на то, что в гостевой ОС поддержка WinRE выключена):

WinRE is configured. Run reagentc /disable inside guest first, or use IgnoreWinRE parameter

Completed with error. Trace status code 700

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

image

Прежде, чем нажать Yes, откроем на хосте виртуализации оснастку управления дисками и убедимся в том, что в системе появился новый виртуальный диск, который смонтирован под порядковым номером указанным в сообщении скрипта (в нашем примере это Disk 7). Это и есть тот новый виртуальный диск, который создан скриптом конвертации, для клонирования на него исходного виртуального диска (он также смонтирован скриптом в нашем примере как Disk 6)

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

image

По окончании работы скрипта соответствующие разделы будут автоматически отмонтированы

image

При необходимости переименуем исходную виртуальную машину первого поколения…

image

Проверим конфигурацию вновь созданной виртуальной машины второго поколения.

Как и раньше, перед первым запуском отключим на всякий случай виртуальный сетевой адаптер от виртуального коммутатора Hyper-V. После попробуем запустить виртуальную машину. На первый запуск уйдёт какое-то время, так как гостевая система снова должна обновить информацию об оборудовании.

Если гостевая ОС загрузилась успешно, аутентифицируемся в ней и проверим настройки сетевой карты. Они должны быть сохранены. Если всё в порядке, в свойствах виртуальной машины вернём доступ сетевого адаптера к виртуальному коммутатору и снова перезагрузим виртуальную машину. На данном этапе наш виртуальный сервер будет загружен уже полностью в продуктивном виде и его сервисы станут доступны из сети.

Теперь можно спокойно удалить старую виртуальную машину (в нашем случае это исходная ВМ, ранее переименованная в KOM-DC01-OLD) поколения G1 и перенести готовую ВМ G2 в кластер, если он используется.

При необходимости можно включить выключенный до конвертации в G2 WinRE

reagentc /enable

 

Удаление несуществующих устройств из ОС виртуальной машины

На текущий момент наш виртуальный сервер уже является виртуальной машиной Hyper-V второго поколения. Завершающим немаловажным действием является удаление из гостевой ОС всех старых устройств-"фантомов" и относящихся к ним драйверам с помощью оснастки управления устройствами (Device Manager).

И опять же, перед манипуляциями с диспетчером устройств желательно создать резервную копию виртуальной машины на DPM.

Удалять старые устройства будем описанным ранее методом.

Устанавливаем системную переменную для включения отображения устройств-призраков в оснастке управления устройствами и следующей командой (не закрывая окна командной строки) запускаем оснастку:

set devmgr_show_nonpresent_devices=1 
start devmgmt.msc

В открытой оснастке в меню View выбираем пункт "Show hidden devices"… image

Разворачиваем каждый узел типов устройств и удаляем все устройства отображаемые как неактивные.

image

В процессе удаления некоторых устройств может быть доступна опция удаления драйвера устройства “Delete the driver software for this device”. Так как эти драйверы более не нужны в гостевой виртуальной системе, можно включать советующую опцию.

image

По завершению перезагружаем гостевую ОС виртуальной машины, чтобы убедиться в том, что она успешно стартует и работает.

***

На этом этапе можно сказать, что работы по конвертации физического контроллера домена на базе Windows Server 2012 R2 в виртуальную машину Hyper-V Generation 2 завершены и теперь, всё что нам остается сделать – убедиться в работоспособности прикладной части виртуального сервера, например проверить состояние роли контроллера домена с помощью таких инструментов как DCDIAG.

Всего комментариев: 17 Комментировать

  1. Eugene Leitan /

    "виртуальный контроллер домена внутри кластера Hyper-V — это вполне реальный и работоспособный сценарий."

    Соглашусь с Алексеем!

    В нашем случае были поставлены виртуальные машины второго поколения и перенесены роли.

  2. Eugene Leitan /

    "Although I work for Microsoft and am a Program Manager in the Hyper-V team, I must point you to the disclaimer on my blog, the disclaimer in files associated with this project, and the license conditions at the top of this page before use. Convert-VMGeneration.ps1 and any associated files are provided "as-is". You bear the risk of using it. No express warranties, guarantees or conditions are provided. It is not supported or endorsed by Microsoft Corporation and should be used at your own risk"

    Стоить упомянуть, что компания Microsoft снимает с себя гарантии поддержки в случае создания ВМ 2-ого поколения через данный скрипт "Convert-VMGene​ration" (https://code.msdn.microsoft.com/windowsdesktop/Convert-VMGeneration-81ddafa2)!

    1. Алексей Максимов / Автор записи

      Справедливое замечание.
      Но хочу заметить, что снятие ответственности "за цунами" это уже классика жанра. Ответственность снимать с себя у них ловко получается, даже не смотря на то, что в разработке скрипта принимали участие спецы из Hyper-V Team.

      1. Учитывая что конвертация p2v осуществляется с ОС Windows Server 2012 R2 (да хоть бы и 2008/R2) то в использовании MVMV вообще особого смысла не вижу, так как впоследствии он только создает больше проблем чем решает. Это и vhd (если у вас хоть один том будет больше 2ТБ, а у меня был такой случай - есть мнение что MVMC не потянет такую машину) и G1 виртуалка. Работы приходится выполнять очень много лишней. Так что мое имхо - Disk2vhd (последней версии, который умеет сразу в vhdx) + ручное создание сразу G2 виртуалки это оптимальный путь. Если с 2003 машинами могли быть проблемы с загрузкой и драйверами (тоже кстати решаемые), то с 2012/R2 вообще не должно быть никаких проблем.

        1. Алексей Максимов / Автор записи

          Ну тогда с тебя пошаговая инструкция по "безгеморной" конвертации. Если будет описанный проработанный метод с наименьшим коэффициентом сопротивления, я только "ЗА". Я лишь поделился собственным опытом.

          1. Собственно я тут подумал, Disk2vhd + Ручное создание Gen1 ВМ + Convert-VMGene​ration наверное самый оптимальный путь. ;-)

          2. Алексей Максимов / Автор записи

            Ну вот и стоило тогда в меня изначально "козявками кидаться" :)... В таком случае я уже лучше предпочту описанный метод с MVMC. А там уж смотрите сами, кому как нравится. Как говорится, на вкус и цвет фломастеры разные.

        2. Сергей /

          А что значит ручное создание G2?? я как то пробовал подсунуть диск с G1 на G2 - конечно же не работает

          1. Алексей Максимов / Автор записи

            Меня тоже "терзают смутные сомнения" по этому поводу. Поэтому и попросил пошаговую инструкцию, которая, как подразумевается, будет лучше и проще чем моя :)

          2. Алексей, Сергей, если очень нужно я могу описать процесс ручной конвертации Gen1 машины в Gen2. Однако он уже описан в статье http://blogs.technet.com/b/jhoward/archive/2013/11/06/hyper-v-generation-2-virtual-machines-part-8.aspx Собственно там и нужно то всего лишь пересоздать раздел в формате GPT и перенести туда раздел с ОС. Если нужно, могу подготовить такую статью на русском. Более того, если физический сервер был новый (с UEFI), то нужно всего лишь проделать Disk2vhd и его можно уже цеплять к Gen2, разве что выключить SecureBoot (тут могут быть нюансы).

          3. Алексей Максимов / Автор записи

            А ты ещё разве не написал? :)

  3. Дмитрий /

    Все привет.
    А программа Disk2vhd? сразу VHDX делать умеет

    1. Алексей Максимов / Автор записи

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

      1. Дмитрий /

        Если тома на одном диске то один vhdx диск

  4. Александр /

    Disk2VDH Супер утила. Переносил все с ее помощью, получал готовый vdhx

  5. chastener /

    печальную новость нашел о июня 16 года
    05/06/2016
    Марк Стенфилл, менеджер программы сопровождения Microsoft Enterprise Cloud Group, сообщил о прекращении развития продукта по конвертации физических и виртуальных серверов в гостевые операционные системы Hyper-V. Официальная поддержка всех версий MVMC (1.0, 2.0, 3.0, 3.1) будет официально прекращена 03.07.2017.
    https://blogs.technet.microsoft.com/vm/2016/06/05/update-regarding-microsoft-virtual-machine-converter-mvmc/

    1. Алексей Максимов / Автор записи

      Да. Об этом упоминалось ранее в одном из выпусков "ИТ Вестник": https://blog.it-kb.ru/2016/07/31/it-vestnik-it-news-in-july-2016/

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