Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Утиліта для конвертації покоління віртуальних машин.

Покоління віртуальної машини в 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

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

.