Согласно достаточно давно появившейся информации, как например в статье 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
После установки, запускаем MVMC и на первом экране выбираем тип конвертации – Physical machine conversion
Далее на появившейся вкладке Source вводим полное доменное имя физического сервера подлежащего процедуре виртуализации, а также учетные данные для административного доступа к этому серверу. Так как в нашем случае речь идёт о контроллере домена, используются учетные данные администратора домена.
На следующем шаге нажимаем кнопку Scan System, и ждём когда в информационном окне System Information появится информация о конвертируемом сервере.
Пропускаем шаг с информацией о логических дисках конвертируемого физического сервера, которые будут преобразованы в виртуальные
На шаге VM Configuration вводим имя создаваемой виртуальной машины (не должно совпадать с именами существующих на хосте виртуализации виртуальных машин), количество виртуальных процессоров (ядер) и объём оперативной памяти.
Далее вводим имя хоста виртуализации, на котором будет создана соответствующая виртуальная машина. В моём случае указано имя сервера виртуализации, на котором запущен конвертор.
На следующем шаге Disk по умолчанию предполагается выбор сетевой папки на хосте виртуализации для сохранения создаваемого виртуального диска. И опять же, так как экземпляр MVMC и хост назначения в нашем случае это одна и та же система, – можем указать локальную папку на этом хосте.
На шаге Workspace указываем имя любой локальной папки, которая будет использоваться MVMC как промежуточное место при конвертации физических жёстких дисков в виртуальные.
Далее на шаге Network Configuration указываем виртуальный коммутатор Hyper-V, к которому будет подключён сетевой адаптер создаваемой виртуальной машины.
На шаге Summary просматриваем краткую сводную информацию и запускаем процесс конвертации кнопкой Finish
Дожидаемся успешного окончания процесса конвертации…
Сразу после того, как процесс конвертации завершён, выключаем физический сервер-источник.
Как видим, в результате конвертации, в указанной ранее папке созданы отдельные виртуальные диски для каждого логического тома физического диска конвертируемого сервера.
Также создана виртуальная машина формата Generation 1, у которой виртуальные диски подключены к виртуальному IDE-контроллеру. Виртуальный диск с длинным названием (по метке тома с физической системы) используется для запуска ОС со второго, основного виртуальном диска.
Теперь нужно выполнить первый проверочный запуск виртуального сервера, чтобы убедиться в том, что виртуализованная система стартует и работает успешно. На всякий случай перед первым запуском можно отключить сетевой адаптер виртуальной машины от виртуального коммутатора Hyper-V.
Первый запуск виртуальной машины может занять некоторое время, так как гостевой ОС необходимо выполнить поиск и установку драйверов от нового виртуального оборудования.
Если первичный запуск прошёл успешно, можно считать что основная стадия виртуализации выполнена и все последующие действия можно выполнять лишь по желанию.
Преобразование виртуальных дисков в формат VHDX
Так как виртуальная машина была создана MVMC с дисками в формате VHD мы можем самостоятельно выполнить преобразование дисков в более "продвинутый" формат VHDX. Для этого выключим виртуальную машину и в консоли Hyper-V Manager из меню Actions выберем пункт Edit disk. Выбрав виртуальный диск на шаге мастера Choose Action выберем режим конвертирования – Convert
Далее выберем формат VHDX и дождёмся завершения процедуры преобразования.
После того как диски преобразованы изменим путь к дискам в свойствах виртуальной машины
Сохраним настройки и снова проверим запуск виртуальной машины с виртуальными дисками нового формата.
Настройка сети в гостевой ОС виртуальной машины.
Если система стартует и загружается успешно, можем выпустить её в продуктивную среду, то есть разрешим ей взаимодействие с сетью. Выполним необходимые настройки сетевого интерфейса в свойствах виртуальной машины, например при необходимости можем включить использование определённого номера VLAN
После сохранения сетевых настроек виртуальной машины, внутри гостевой ОС зададим настройки IP, то есть восстановим ранее используемый на физическом сервере IP адрес и другие настройки сети. После этого снова перезагрузим виртуальную машину, чтобы убедиться в том, что теперь она уже стартует полноценно взаимодействуя с локальной сетью.
Проверка обновления компонент интеграции Hyper-V
Чтобы убедиться в том, что в "новоиспечённой" виртуальной машине используются компоненты интеграции Hyper-V самой актуальной версии, доступной на хосте виртуализации, откроем консольное подключение к виртуальной машине и в меню Action выберем пункт монтирования образа диска с компонентами интеграции – Insert Integration Services Setup Disk
В смонтированном в виртуальной системе диске найдём и запустим файл \support\amd64\setup.exe
Если компоненты интеграции имеют актуальную версию, то мы получим примерно следующее сообщение:
В противном случае необходимо будет произвести установку компонент с последующей перезагрузкой гостевой ОС виртуальной машины.
Удаление ПО поддержки аппаратных компонент сервера
После того как наш сервер стал виртуальным, нужно позаботиться о том, чтобы всё программное обеспечение, которое ранее было установлено на этот сервер для поддержки аппаратных компонент, было аккуратно удалено. В нашем примере удалению подлежат все приложения из состава HP Insight Software. Также мы можем удалить установленного ранее агента ИБП, так как теперь выключением гостевой ОС виртуальной машины в случае отключения электропитания будет управлять хост виртуализации.
После удаления ПО снова перезагрузим гостевую систему, чтобы убедиться в её успешном запуске.
Конвертация виртуальной машины в формат Generation 2
На данном этапе наш виртуальный сервер полноценно работает в штатном режиме, однако если мы хотим улучшить его путём преобразования в формат Generation 2, предварительно стоит позаботиться о создании резервной копии рабочей ВМ. Просто и удобно это можно сделать например с помощью System Center 2012 R2 Data Protection Manager (DPM)…
Как говорит один мой знакомый в таких случаях "Тиха украинская ночь, но сало надо перепрятать".
Преобразование в виртуальную машину второго поколения будем проводить с помощью небезызвестного PS-скрипта Hyper-V generation 2 VM conversion utility (Convert-VMGeneration). Если говорить упрощенно, то принцип работы данного скрипта заключается в том, что он новую виртуальную машину второго поколения с новым виртуальным дисков, на который клонирует копию основного системного раздела с исходного виртуального диска ВМ G1 и создаёт дополнительные разделы необходимые для загрузки ВМ G2. Таким образом, исходная виртуальная машина первого поколения остаётся нетронутой, и если в процессе конвертации G1>G2 возникнут трудности непреодолимого характера, то нам никто не мешает продолжить использование исходной виртуальной машины.
Итак, скачиваем и копируем скрипт Convert-VMGeneration.ps1 на хост виртуализации, где в данный момент работает наша виртуальная машина.
Перед началом конвертации ещё раз убедимся в том, что на диске с профилями пользователей (как правило это диск C:\) достаточно места для создания временной копии виртуального диска ВМ (в процессе конвертации будет создан временный wim-образ в каталоге %LOCALAPPDATA%\Temp)
Дополнительно убедимся в том, что внутри виртуальной машины выключена поддержка среды восстановления WinRE (требование автора скрипта конвертации). Сделать это можно консольной командой:
reagentc /disable
Выключим виртуальную машину.
Запустим на хосте виртуализации скрипт конвертации:
.\Convert-VMGeneration.ps1 -VMName "KOM-DC01" -Path "D:\"
Как видим, первая попытка запуска скрипта завершается ошибкой.
Проблема заключается в том, что в текущей конфигурации виртуальная машина имеет два разных виртуальных диска для двух логических разделов.
На первом диске (Disk 0) содержится информация необходимая для загрузки ОС, но не содержится самой ОС. При этом скрипт пытается использовать для конвертации именно этот диск. Так как в результате работы скрипта загрузочный раздел фактически будет создан заново, мы можем попробовать удалить имеющийся загрузочный диск. Для этого выключим виртуальную машину и удалим из конфигурации ВМ первый виртуальный диск, который имеет метку тома в виртуальной ОС “System Reserved” (диск объёмом примерно в 350MB).
То есть мы оставим в свойствах ВМ только один диск, тот на котором расположена гостевая ОС 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
После начала работы скрипта конвертации нам будет задано устрашающее предупреждение о том, все данные на одном из дисков доступных на текущий момент в хостовой системе будут уничтожены. Утвердительный ответ подразумевает продолжение работы скрипта :
Прежде, чем нажать Yes, откроем на хосте виртуализации оснастку управления дисками и убедимся в том, что в системе появился новый виртуальный диск, который смонтирован под порядковым номером указанным в сообщении скрипта (в нашем примере это Disk 7). Это и есть тот новый виртуальный диск, который создан скриптом конвертации, для клонирования на него исходного виртуального диска (он также смонтирован скриптом в нашем примере как Disk 6)
Итак, после нажатия Yes в будет произведено клонирование данных с одного виртуального диска на другой с добавлением дополнительных разделов, необходимых для ВМ второго поколения.
По окончании работы скрипта соответствующие разделы будут автоматически отмонтированы
При необходимости переименуем исходную виртуальную машину первого поколения…
Проверим конфигурацию вновь созданной виртуальной машины второго поколения.
Как и раньше, перед первым запуском отключим на всякий случай виртуальный сетевой адаптер от виртуального коммутатора 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"…
Разворачиваем каждый узел типов устройств и удаляем все устройства отображаемые как неактивные.
В процессе удаления некоторых устройств может быть доступна опция удаления драйвера устройства “Delete the driver software for this device”. Так как эти драйверы более не нужны в гостевой виртуальной системе, можно включать советующую опцию.
По завершению перезагружаем гостевую ОС виртуальной машины, чтобы убедиться в том, что она успешно стартует и работает.
***
На этом этапе можно сказать, что работы по конвертации физического контроллера домена на базе Windows Server 2012 R2 в виртуальную машину Hyper-V Generation 2 завершены и теперь, всё что нам остается сделать – убедиться в работоспособности прикладной части виртуального сервера, например проверить состояние роли контроллера домена с помощью таких инструментов как DCDIAG.
"виртуальный контроллер домена внутри кластера Hyper-V — это вполне реальный и работоспособный сценарий."
Соглашусь с Алексеем!
В нашем случае были поставлены виртуальные машины второго поколения и перенесены роли.
"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-VMGeneration" (https://code.msdn.microsoft.com/windowsdesktop/Convert-VMGeneration-81ddafa2)!
Справедливое замечание.
Но хочу заметить, что снятие ответственности "за цунами" это уже классика жанра. Ответственность снимать с себя у них ловко получается, даже не смотря на то, что в разработке скрипта принимали участие спецы из Hyper-V Team.
Учитывая что конвертация p2v осуществляется с ОС Windows Server 2012 R2 (да хоть бы и 2008/R2) то в использовании MVMV вообще особого смысла не вижу, так как впоследствии он только создает больше проблем чем решает. Это и vhd (если у вас хоть один том будет больше 2ТБ, а у меня был такой случай - есть мнение что MVMC не потянет такую машину) и G1 виртуалка. Работы приходится выполнять очень много лишней. Так что мое имхо - Disk2vhd (последней версии, который умеет сразу в vhdx) + ручное создание сразу G2 виртуалки это оптимальный путь. Если с 2003 машинами могли быть проблемы с загрузкой и драйверами (тоже кстати решаемые), то с 2012/R2 вообще не должно быть никаких проблем.
Ну тогда с тебя пошаговая инструкция по "безгеморной" конвертации. Если будет описанный проработанный метод с наименьшим коэффициентом сопротивления, я только "ЗА". Я лишь поделился собственным опытом.
Собственно я тут подумал, Disk2vhd + Ручное создание Gen1 ВМ + Convert-VMGeneration наверное самый оптимальный путь. ;-)
В таком случае я уже лучше предпочту описанный метод с MVMC. А там уж смотрите сами, кому как нравится. Как говорится, на вкус и цвет фломастеры разные.
А что значит ручное создание G2?? я как то пробовал подсунуть диск с G1 на G2 - конечно же не работает
Меня тоже "терзают смутные сомнения" по этому поводу. Поэтому и попросил пошаговую инструкцию, которая, как подразумевается, будет лучше и проще чем моя :)
Алексей, Сергей, если очень нужно я могу описать процесс ручной конвертации 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 (тут могут быть нюансы).
А ты ещё разве не написал? :)
Все привет.
А программа Disk2vhd? сразу VHDX делать умеет
Умеет, но она как я понял, также как и MVMC создает отдельный виртуальный диск для каждого логического тома физического сервера.
Если тома на одном диске то один vhdx диск
Disk2VDH Супер утила. Переносил все с ее помощью, получал готовый vdhx
печальную новость нашел о июня 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/
Да. Об этом упоминалось ранее в одном из выпусков "ИТ Вестник": https://blog.it-kb.ru/2016/07/31/it-vestnik-it-news-in-july-2016/
Простите, раскопаю, а не делал ли кто то на практике такую миграцию для Exchange? А то вот тут пишут что не всё так просто. И не просто надо тормознуть службы а и ещё немного тряхнуть бубном. https://www.petri.com/how-to-virtualize-microsoft-exchange-server
Добрый день! В начале статьи "и размещения контроллера домена в кластере Hyper-V", в результате ВМ с доменом в кластере?
Доброго времени года, Денис. Да, в кластере.
Алексей, спасибо. Еще вопросы, а диски на CSV? На физическом сервере есть DC?
Денис, если Вы клоните к вопросу о том, как работает кластер Hyper-V с CSV при недоступности виртуального контроллера, то скажу по опыту - работает нормально. Несколько раз уже выключали кластер полностью и заново взлетали без каких-либо сложностей.
Да, Вы правильно поняли. Спасибо.
Доброго дня. Возможно после конвертации MVMC объединить несколько файлов VHD в один, что бы все разделы были в одном файле? А в Disk2vhd столкнулся с проблемой, при попытке конвертировать раздел 1.3 Tb, он его конвертирует почему то в 160 Gb(
Здравствуйте, Антон. Средствами MVMC такое объединение не сделать точно. Да и Disk2vhd, действительно, имеет свои недостатки. На мой взгляд, эти инструменты на сегодняшний день можно считать устаревшими. Рекомендую для конвертация P2V попробовать возможности современной версии Live-системы Clonzilla. Там можно выполнять клонирование по сети от компьютера-источника (например, железный сервер) к компьютеру-получателю (например, виртуальный сервер) используя при этом метд клонирования диск->диск или раздел->раздел. Все последние конвертации P2V, которые я делал, вполне успешно выполнялись с помощью Clonzilla. С помощью этого инструмента выполнял даже обратную конвертацию V2P :)
Спасибо за ответ. Но на сколько я понял для работы Clonzilla необходимо останавливать сервер и производить загрузку с сети или носителя!? Не совсем удобно в отличии от ранее предложенных средств. может я ошибаюсь?
Всё верно. Компьютер-источник, как и компьютер-получатель, на время клонирования должен быть переведен в offline и загружен с Live-CD Clonezilla. Зато на выходе Вы сразу получаете желаемый результат без дополнительных манипуляций типа конвертации VHD->VHDX, которые до кучи ещё и требования к дисковому пространству на хосте виртуализации выдвигают существенные. Если Вы хотите получить максимально удовлетворяющий результат, то "жадничать" на даун-тайм не следует.
С этим все понятно, как вариант. Но может все таки существует средство или метод объединения двух созданных VHD или VHDX файлов логических диска в один файл?
При условии, что на первом диске достаточно неразмеченного места под копию раздела со второго диска, можете попробовать скопировать раздел со второго диска на первый с помощью другого свободно-распространяемого инструмента - GParted. Загружаете ВМ с GParted Live CD (в свойствах ВМ предварительно отключите Secure Boot), выбираете диск-источник, выбираете раздел для копирования, в контекстном меню - Copy. Затем выбираете диск-получатель, ставите курсор на неразмеченном пространстве, в контекстном меню - Paste. Затем кнопку Apply, чтобы применить операции. Выключаете ВМ, отсоединяете от ВМ диск-источник, включаете ВМ. В гостевой ОС, возможно, потребуется перевести скопированный раздел в Online и присвоить ему букву диска.
Нет, не вариант очень много простоев, проще тогда воспользоваться Clonezilla. А вообще так бы ничего не выдумывал, много мигрировал серверов именно Disk2vhd никаких проблем не было, а тут почему то ни как Disk2vhd не хочет конвертировать раздел 1.3 Т, конвертирует его в 160 Г и при загрузке ВМ этот раздел виден но не работает. Раздел рабочий находится правда между двумя на 30 Г и 10 Г, версия Disk2vhd 2.01. Сейчас пробую дефрагментацияю сделать, может поможет
Может быть кому то будет полезно. Все таки разобрался почему Disk2vhd не хотел конвертировать второй том(диск D:) причиной всему была FSRM, а именно установлена Hard Quota на данный диск чуть меньше его размера, таким образом диск конвертировался меньшего размера из 1.3Т в 160Ги с ошибкой..
4 дня пытался перенести windows 2008 server x86 на виртуальную машину первого поколения, при загрузке выдавала ошибку 7b и никакие мануалы из сети не помогали(твики реестра, выставление через реестр нужных драйверов, хотел уже делать через промежуточный образ vmdk), все драйвера IDE в наличии,а загрузиться все равно не может. в итоге загрузился с ERD6 там выбрал меню с драйверами и на пункте intelide выставил "загрузить при загрузке системы" и сразу же загрузился без проблем