В Hyper-V отсутствует встроенная функция клонирования виртуальной машины (в отличие от VMWare), за исключением использования Virtual Machine Manager. Чтобы создать полную копию существующей ВМ, нужно использовать функции импорта и экспорта. В данной статье рассмотрим, как клонировать виртуальную машину в Hyper-V с помощью импорта/экспорта через графический интерфейс Hyper-V Manager, PowerShell и Windows Admin Center (WAC).
Приобрести Windows Server можно у нас в каталоге от 1190 ₽
Скачать оригинальные дистрибутивы Windows Server можно у нас на сайте.
При клонировании виртуальных машин с Windows, не забывайте, что у клонированной ВМ будет такой же SID (идентификатор безопасности). Для сброса SID нужно использовать утилиту sysprep. Перед клонированием эталонного образа Windows выполните команду:
%WINDIR%\system32\sysprep\sysprep.exe /generalize /shutdown /oobe
Это выключит ВМ, и при следующей загрузке (как оригинала, так и клона) будет сгенерирован новый SID. Также нежелательно клонировать ВМ, входящие в домен Active Directory.
Первым шагом необходимо экспортировать виртуальную машину в отдельный каталог.
1. Запустите консоль Hyper-V Manager, выберите ВМ, которую хотите клонировать, и в контекстном меню выберите Export.
Начиная с версии Hyper-V в Windows Server 2012 R2, можно экспортировать даже запущенные виртуальные машины без их остановки.
2. Укажите каталог, в который нужно экспортировать ВМ.
3. Статус экспорта ВМ будет отображен в строке состояния консоли Hyper-V.
Экспорт ВМ часто используют как простейший метод создания резервных копий на Hyper-V.
4. Вы также можете экспортировать конкретный снимок (checkpoint) виртуальной машины. Для этого выберите нужный снимок в дереве Checkpoints и выберите Export.
Импорт ВМ
Чтобы импортировать виртуальную машину, щелкните по имени хоста в консоли Hyper-V Manager и выберите Import Virtual Machine.
1. Укажите путь к каталогу с файлами импортируемой ВМ.
2. При импорте Hyper-V предложит три варианта регистрации ВМ на хосте:
— Register the virtual machine in-place — зарегистрировать ВМ, используя существующий уникальный ID.
— Restore the virtual machine — скопировать файлы ВМ в новый каталог, сохранив исходный идентификатор.
— Copy the virtual machine — скопировать ВМ в новый каталог с генерацией нового ID.
3. Чтобы создать клон ВМ с новым ID, выберите третий вариант. После этого вам нужно будет указать каталоги для хранения файлов ВМ и виртуальных дисков (VHDX).
4. Укажите каталог для хранения виртуальных дисков vhdx ВМ.
После этого новая клонированная виртуальная машина появится в консоли Hyper-V.
Для экспорта ВМ в PowerShell используйте команду:
Export-VM -Name "win10" -Path 'C:\VHD\export'
Если вы хотите экспортировать запущенную ВМ, можно использовать параметр CaptureLiveState, который определяет способ копирования состояния оперативной памяти ВМ. Примеры команд с использованием параметра:
CaptureSavedState – экспортировать оперативную память (по-умолчанию);
CaptureDataConsistentState – экспортировать состояние ВМ из Production checkpoint;
CaptureCrashConsistentState — без сохранения содержимого памяти.
Export-VM -Name "win10" -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState
Если вы хотите экспортировать состояние ВМ в определеном снимке, нужно указать его имя.
Сначала выведите список снимков для указанной ВМ:
Get-VMSnapshot -VMName win10
Затем выполните экспорт нужного снимка по его имени:
Export-VMSnapshot -Name “win10 - (2/17/2021 - 9:52:20 PM) Standard” -VMName win10 -Path 'C:\VHD\export'
После завершения экспорта ВМ вы можете импортировать ее. Если нужно зарегистрировать ВМ по месту хранения файлов, выполните команду:
Import-VM -Path "C:\VHD\export\win10\Virtual Machines\1117A061-0B50-4BC2-850C-88CCD4C114FB.vmcx"
Чтобы создать клон ВМ с новым ID, используйте параметр GenerateNewId:
Import-VM -Path "C:\VHD\export\win10\Virtual Machines\1117A061-0B50-4BC2-850C-88CCD4C114FB.vmcx" -VhdDestinationPath "C:\VHD\win10_2" -VirtualMachinePath "C:\VHD\win10_2"
В параметре VhdDestinationPath указывается каталог, куда нужно скопировать VHDX файлы ВМ, а в параметре VirtualMachinePath — каталог конфигурационных файлов ВМ. Если эти параметры не задать, файлы ВМ будут скопированы в дефолтный каталог, указанный в настройках хоста Hyper-V (C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines\).
Также можно указать каталоги для хранения чекпоинтов ( SnapshotFilePath ) и файла подкачки ( SmartPagingFilePath ).
Обратите внимание, что клонированная ВМ появилась в консоли Hyper-V с оригинальным именем. Переименуем новую ВМ, но сначала нужно получить ее ID:
get-vm | select VMNAME,VMId
Как вы видите в консоли есть две ВМ с одинаковым именем и разными ID. Нужно переименовать ВМ с ID, который отличается от ID импортируемой ВМ. Скопируйте ID новой ВМ и переименуйте ее:
get-vm | Where-Object {$_.VMId -eq "24ad8934-f650-46f6-9caa-2a3b79b79bd5"} | Rename-VM -NewName win10_2
Затем для удобства можно переименовать виртуальный жесткий диск:
Get-VHD -VMId 24ad8934-f650-46f6-9caa-2a3b79b79bd5| Select Path | Rename-Item -NewName win10_2.vhdx
Remove-VMHardDiskDrive -VMName win10_2 -ControllerType SCSI -ControllerLocation 0 -ControllerNumber 0
Add-VMHardDiskDrive -VMName win10_2 -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 0 -Path "C:\VHD\win10_2\win10_2.vhdx"
Изменим MAC адрес виртуального адаптера (можно указать новый статический MAC или настроить динамическое получение MAC адреса).
Set-VMNetworkAdapter -VMName win10_2 -DynamicMacAddress
Start-VM -Name win10_2
Прежде, чем подключить новую ВМ в сеть, желательно переименовать ее и изменить IP адрес на новый (если используется DHCP адресация, этот шаг можно пропустить). В данном случае мы можем подключиться к новой ВМ через PowerShell Direct с помощью командлета Invoke-Command или Enter-PSSession:
Enter-PSSession -ComputerName win10_2 -Credential (Get-Credential)
Rename-Computer win10_2
Remove-NetIPAddress -InterfaceAlias “Ethernet” -AddressFamily IPV4
New-NetIPAddress -IPAddress 192.168.31.50 -InterfaceAlias “Ethernet” -AddressFamily IPv4 -PrefixLength 24
Restart-Computer
Клонирование ВМ в Hyper-V без промежуточного экспорта и импорта стало возможно в Windows Admin Center v2009.
1. Запустите Windows Admin Center (WAC), выберите раздел Virtual Machines, затем выберите нужную ВМ и нажмите Manage -> Clone.
2. Укажите имя новой ВМ и каталог для хранения ее файлов.
В мастере клонирования присутствует опция “I have already run sysprep on my VM”. Если вы не выполнили генерализацию образа с помощью Sysprep, Hyper-V создаст снимок исходной ВМ, выполнит Sysprep и склонирует ВМ в новую.
При клонировании любых ВМ, с гостевыми ОС, отличными от Windows, всегда включайте эту опцию.
3. Дождитесь окончания клонирования — новая ВМ получит новый уникальный ID.
Теперь вы знаете, как клонировать виртуальные машины Hyper-V с помощью консоли Hyper-V Manager, PowerShell и Windows Admin Center. Эти методы позволяют гибко управлять виртуальной инфраструктурой и обеспечивать высокую скорость развертывания виртуальных машин на разных хостах.