Поиск по сайту:

Импорт, экспорт и клонирование виртуальных машин в Hyper-V


В отличие от VMWare, Hyper-V не имеет встроенной функции клонирования виртуальных машин (клонирование доступно только в Virtual Machine Manager). Чтобы создать полную копию существующей виртуальной машины, вам придется использовать функции импорта и экспорта Hyper-V. В этой статье мы покажем, как клонировать виртуальную машину в Hyper-V с помощью импорта и экспорта с помощью графического интерфейса диспетчера Hyper-V, PowerShell и Windows Admin Center (WAC).

При клонировании виртуальной машины под управлением Windows помните, что копия ВМ будет иметь тот же SID, что и исходная. Для сброса гостевого SID Windows необходимо использовать инструмент Sysprep. Если вы создали эталонный образ Windows, перед клонированием выполните в нем приведенную ниже команду:

%WINDIR%\system32\sysprep\sysprep.exe /generalize /shutdown /oobe

Виртуальная машина будет отключена, а новые идентификаторы SID будут созданы при следующем запуске как на исходной виртуальной машине, так и на ее клонированной копии. Также не рекомендуется клонировать виртуальную машину, присоединенную к домену Active Directory.

Экспорт и импорт виртуальных машин в диспетчере Hyper-V

Сначала экспортируйте виртуальную машину в отдельный каталог. Откройте консоль диспетчера Hyper-V, щелкните виртуальную машину правой кнопкой мыши и выберите Экспорт в контекстном меню.

В Hyper-V на Windows Server 2012 R2 и новее (включая Free Hyper-V Server) можно экспортировать даже работающие виртуальные машины, не останавливая их.

Укажите каталог, в который вы хотите экспортировать виртуальную машину.

Статус экспорта виртуальной машины будет отображаться на панели состояния виртуальной машины в консоли Hyper-V.

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

Вы можете экспортировать конкретную контрольную точку (снимок) виртуальной машины. Для этого просто щелкните правой кнопкой мыши нужную контрольную точку в дереве Контрольные точки и выберите Экспорт.

Чтобы импортировать виртуальную машину, щелкните имя хоста в диспетчере Hyper-V и выберите Импортировать виртуальную машину.

Затем укажите путь к каталогу, в котором находятся папки с импортированными файлами ВМ. При импорте ВМ в Hyper-V вам предлагаются 3 варианта регистрации ВМ на хосте:

  • Зарегистрировать виртуальную машину на месте (использовать существующий уникальный идентификатор) — для регистрации виртуальной машины в каталоге, содержащем импортированные файлы (идентификатор виртуальной машины остается прежним)

  • Восстановить виртуальную машину (использовать существующий уникальный идентификатор) — чтобы скопировать файлы ВМ в другую папку (исходный идентификатор ВМ сохраняется).

  • Копировать виртуальную машину (создать новый уникальный идентификатор) — чтобы скопировать виртуальную машину в другой каталог и создать новый идентификатор виртуальной машины.

Каждая виртуальная машина на хосте Hyper-V имеет идентификатор, который должен быть уникальным внутри хоста. Если вы импортируете или клонируете виртуальную машину на другой хост, вам не нужно менять идентификатор виртуальной машины.

Если вы попытаетесь импортировать виртуальную машину с повторяющимся идентификатором, произойдет следующая ошибка:

The operation failed because a virtual machine with the same identifier already exists. Select a new identifier and try the operation again.

Чтобы создать клон ВМ с новым идентификатором, мы выбрали третий вариант. Мастер предложит вам указать папку, в которую вы хотите поместить файлы виртуальной машины. По умолчанию используются папки, указанные в настройках хоста Hyper-V.

Затем выберите каталог, в котором будут храниться виртуальные диски виртуальной машины (файлы vhdx).

Затем в вашей консоли Hyper-V появится новая клонированная виртуальная машина.

Как экспортировать, импортировать и клонировать виртуальные машины Hyper-V с помощью PowerShell?

Давайте посмотрим, как клонировать виртуальную машину Hyper-V с помощью экспорта/импорта с помощью PowerShell.

Чтобы экспортировать виртуальную машину, выполните команду ниже:

Export-VM -Name win10 -Path 'C:\VHD\export'

Если вы хотите экспортировать работающую виртуальную машину, вы можете использовать параметр CaptuteLiveState, который определяет, как экспортировать память виртуальной машины. Доступны три варианта:

  • CaptureSavedState

    - для экспорта памяти (по умолчанию)

  • CaptureDataConsistentState

    - для экспорта состояния виртуальной машины из рабочей контрольной точки Hyper-V.

  • CaptureCrashConsistentState

    - не сохранять содержимое памяти

Export-VM -Name win10 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState

Если вы хотите экспортировать состояние ВМ из конкретной контрольной точки, укажите ее имя.

Сначала отобразите список контрольных точек, доступных для виртуальной машины:

Get-VMSnapshot -VMName win10

Затем экспортируйте контрольную точку по ее имени:

Export-VMSnapshot -Name “win10 - (6/17/2021 - 3:12:205 PM) Standard” -VMName win10 -Path 'C:\VHD\export'

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

Import-VM -Path "C:\VHD\export\win10\Virtual Machines\212cadd2-6543-bc2d-ca11-321ffa223f3b.vmcx"

В параметре Путь укажите расположение файла конфигурации виртуальной машины (формат файла VMCX заменил формат XML файлов конфигурации виртуальной машины в Hyper-V Server 2016). Чтобы скопировать виртуальную машину в другую папку с тем же идентификатором, используйте команду

Copy

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

GenerateNewId

вариант:

Import-VM -Path "C:\VHD\export\win10\Virtual Machines\212cadd2-6543-bc2d-ca11-321ffa223f3b.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 с именем исходной виртуальной машины. Переименуем его, но сначала нам нужен его VMID:

get-vm | select VMNAME,VMId

Как видите, на хосте есть две виртуальные машины с одинаковым именем и разными идентификаторами. Переименуйте виртуальную машину с идентификатором, отличным от идентификатора импортированной виртуальной машины. Скопируйте идентификатор новой виртуальной машины и переименуйте ее:

get-vm | Where-Object {$_.VMId -eq "9a9d3332-f332-a231-8abc-9221aab32287"} | Rename-VM -NewName win10_2

Затем вы также можете переименовать файл виртуального жесткого диска:

Get-VHD -VMId 9a9d3332-f332-a231-8abc-9221aab32287| 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.13.71 -InterfaceAlias “Ethernet” -AddressFamily IPv4 -PrefixLength 24
Restart-Computer

Как клонировать виртуальные машины Hyper-V с помощью Центра администрирования Windows?

Вы можете клонировать виртуальную машину Hyper-V напрямую без экспорта и импорта в Windows Admin Center версии 2009 или более поздней версии.

Запустите WAC, выберите раздел «Виртуальные машины», а затем нажмите «ВМ» -> Управление -> Клонировать.

Затем укажите имя вашей новой виртуальной машины и выберите каталог, в котором вы хотите разместить ее файлы.

Обратите внимание, что в мастере клонирования есть опция «Я уже запустил Sysprep на своей виртуальной машине». Если вы не обобщали образ с помощью Sysprep и не включили эту опцию, Hyper-V создаст снимок исходной виртуальной машины, запустит Sysprep и клонирует его на новую виртуальную машину (исходная виртуальная машина будет перезапущена несколько раз и будет не быть доступным для использования во время процесса). Затем исходная виртуальная машина будет возвращена в исходное состояние, а снимок будет удален.

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

Подождите, пока виртуальная машина будет клонирована. Новый идентификатор будет автоматически присвоен новой виртуальной машине.

Статьи по данной тематике