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

Вам нужно экспортировать виртуальные машины Hyper-V и переместить их с одного хоста на другой? Как насчет экспорта виртуальной машины с вашей разработочной рабочей станции на хост Hyper-V в производственной среде? Если да, то вы попали по адресу!

В этой статье вы узнаете, как экспортировать и импортировать виртуальную машину с помощью менеджера Hyper-V и PowerShell. Готовы? Вперед!

Необходимые условия

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

  • PowerShell 7 или Windows PowerShell 5.1 – Это руководство сфокусировано на PowerShell 7, но команды будут работать с Windows PowerShell 5.1.
  • A Windows Server with Hyper-V enabled – This tutorial is based on the insider preview released March 2021, but any Windows Server from 2012R2 onward will suffice.
  • A virtual machine guest – This tutorial is using an Alpine Linux guest because it’s light on resources. You can use any guest Operating System you like.
  • A local Windows user account in the local administrators group on the Hyper-V host.

Шаги для экспорта виртуальных машин Hyper-V

Если вы не являетесь поклонником командной строки или у вас есть только одна виртуальная машина для сохранения на диск, менеджер Hyper-V – отличный выбор. Предположим, что вы находитесь на хосте Hyper-V и у вас есть работающая виртуальная машина:

1. В окне поиска Windows введите “hyper”. Должна появиться консоль Hyper-V Manager. Если это так, щелкните по ней, чтобы открыть.

2. Найдите виртуальную машину, которую нужно экспортировать, щелкните правой кнопкой мыши и выберите Экспорт.

Exporting VM using Hyper-V Manager The VM can be offline or running prior to exporting.

3. Затем выберите папку, в которую сохранить виртуальную машину и конфигурацию, и нажмите Экспортировать.

Export Virtual Machine Dialog.

Выбранное вами место для сохранения должно иметь достаточно места на диске для экспортированной виртуальной машины. Это может варьироваться. Помните, что вы можете выделить 60 ГБ на диск, но это не означает, что диск виртуальной машины вырос до 60 ГБ.

Как только Hyper-V начнет процесс экспорта, вы увидите статус экспорта в окне Hyper-V Manager.

Export Status in Hyper-V Manager

4. Теперь подтвердите наличие всех необходимых файлов. Вы должны увидеть три подпапки. Эти подпапки содержат все файлы, необходимые для запуска экспортированной виртуальной машины: снимки, виртуальные жесткие диски и виртуальные машины.

Exported VM example
  • Папка Снимки содержит информацию о снимках для виртуальной машины. Папка может быть пустой, если снимков для виртуальной машины не было. В этой папке вы увидите файлы с расширениями VMCX, VMRS и VMGS. Бинарный файл VMCX содержит конфигурационную информацию, специфичную для вашей экспортированной виртуальной машины. Бинарный файл VMRS содержит информацию о текущем состоянии виртуальной машины. Без этого файла виртуальная машина не может загрузиться. Наконец, есть файл VMGS. Не уверен, для чего этот файл. Если вы знаете, оставьте комментарий.

Если у вас есть опыт работы с Hyper-V, вы, возможно, заметили что-то отличное в расширениях файлов. Начиная с Windows Server 2016, Hyper-V больше не использует XML-файлы для конфигурационной информации, а вместо этого перешел к бинарным файлам. Узнайте больше о этих новых расширениях.

Если у вашей виртуальной машины есть более одной контрольной точки, вы увидите несколько файлов VMCX, VMRS и VMGS для каждой контрольной точки у вашей виртуальной машины.

Snapshots folder example
  • Папка Virtual Hard Disks содержит все файлы образов жесткого диска или *.vhdx для вашей виртуальной машины. Файл AVHDX или Automatic virtual hard disk – это дифференцирующий диск, используемый для контрольных точек виртуальной машины. Если у вашей виртуальной машины есть более одной контрольной точки, вы увидите несколько файлов AVHDX.
Virtual Hard Disks example
  • Папка Virtual Machines содержит файлы конфигурации виртуальных машин, используемые для загрузки виртуальной машины. Подобно папке Snapshots, здесь также будут файлы bin: VMCX, VMRS и VMGS.
Virtual Machines configuration files example

Если все три папки присутствуют и содержат файлы, ваш экспорт прошел успешно.

Использование PowerShell для экспорта виртуальной машины

Если вы предпочитаете командную строку или у вас много виртуальных машин для экспорта, использование PowerShell для экспорта виртуальной машины – отличная опция. Для экспорта Hyper-V с помощью PowerShell используйте Export-VM. Для этого, предполагая, что вы находитесь на своем хосте Hyper-V, и ваша виртуальная машина выключена:

1. Откройте консоль PowerShell.

2. Запросите хост Hyper-V, чтобы получить инвентарь ваших виртуальных машин и имя виртуальной машины для экспорта. В этом руководстве будет экспортироваться виртуальная машина с именем Alpine Linux 01.

Get-VM
Virtual machine name to be used in Export-VM command

3. Создайте папку для экспорта виртуальной машины. В этом руководстве виртуальная машина будет экспортироваться в C:\Export_VM.

New-Item -ItemType Directory -Name 'Exported_VM\' -Path 'C:\'

4. Теперь экспортируйте виртуальную машину с помощью командлета Export-VM, указав имя виртуальной машины для параметра Name, Path к папке для сохранения и параметр PassThru.

Параметр PassThru является необязательным для возврата объекта ВМ, экспортируемого. В противном случае Export-VM не возвращает вывод.

Export-VM -Name 'Alpine Linux 01' -Path 'C:\Exported_VM\' -Passthru
Successful export of an offline virtual machine.

Когда ВМ запущена, Export-VM автоматически не сохраняет память. Если вы хотите сохранить содержимое памяти, запущенное в ВМ, используйте параметр -CaptureLiveState CaptureSavedState с Export-VM. Узнайте больше о технологии, используемой для захвата памяти.

5. Теперь удалите ВМ из Hyper-V. Не волнуйтесь! У вас есть сохраненная копия!

Remove-VM -Name 'Alpine Linux 01'

Использование Hyper-V Manager для импорта ВМ

Когда Вы экспортировали ВМ, случилось бедствие, и ВМ исчезла. Не волнуйтесь! Вы уже экспортировали ее на диск. Давайте вернемся к ней. Для этого, предполагая, что вы снова находитесь на своем хосте Hyper-V:

1. Откройте Hyper-V Manager.

2. Нажмите на пункт меню Импорт виртуальной машины, расположенный справа в окне Hyper-V Manager. Вам будет предложена мастер импорта виртуальной машины. Нажмите Далее.

Import Virtual Machine Wizard

3. Затем введите путь к экспортированной виртуальной машине, которую вы хотите импортировать, и нажмите Далее. Для этого учебного пособия ВМ сохранена в C:\Export_VM\Alpine Linux 01.

В отличие от импорта с помощью PowerShell, мастер найдет для вас файл VMCX ВМ.

Import Virtual Machine Wizard

4. Как только Hyper-V обнаружит файлы конфигурации ВМ внутри папки (в данном примере C:\Exported_VM\Alpine Linux 01\Virtual Machines\), Hyper-V попросит вас выбрать виртуальную машину для импорта. Выберите ВМ, которую хотите импортировать, и нажмите Далее.

Import Virtual Machine Wizard

5. Затем выберите тип импорта, который вы хотите выполнить. Сначала давайте подробнее изучим варианты.

Когда вы выбираете опцию “Зарегистрировать виртуальную машину на месте (использовать существующий уникальный идентификатор)”, вы предполагаете, что экспортированные файлы ВМ находятся в своем конечном местоположении, то есть вы не перемещаете ВМ в новую папку. Экспортированные файлы ВМ становятся рабочим состоянием виртуальной машины. UID не изменяется.

UID – это то, что использует Hyper-V для идентификации виртуальной машины. Если Hyper-V обнаруживает, что данный UID уже зарегистрирован, вы получите ошибку.

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

Когда вы копируете виртуальную машину, это аналогично восстановлению экспортированной ВМ, но с новым уникальным идентификатором (UID). Новый UID позволяет развертывать одну и ту же виртуальную машину несколько раз на одном и том же или на разных хостах Hyper-V.

Выберите тип импорта Скопируйте виртуальную машину. Копирование ВМ создаст новый уникальный идентификатор (UID). Каждая ВМ Hyper-V идентифицируется по UID. Этот вариант подходит на данный момент, поэтому нажмите Далее.

Import Virtual Machine Wizard

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

Import Virtual Machine Wizard

7. Наконец, выберите место для ВМ, известное как Папка хранения. Папка хранения – это место, где будут находиться файлы VHDX и AVHDX. Для этого руководства примите местоположение по умолчанию и нажмите Далее.

Import Virtual Machine Wizard

8. Просмотрите страницу суммарной информации, и когда будете готовы, нажмите Готово, чтобы начать импорт.

Completing Import Virtual Machine Wizard

Когда Hyper-V завершит импорт, он вернется в окно Hyper-V Manager, и теперь вы увидите импортированную ВМ, как показано ниже.

Imported VM

Использование PowerShell для импорта ВМ

Если импорт ВМ через Hyper-V Manager не ваш метод, ничего страшного. Используйте PowerShell! Для импорта ВМ с помощью PowerShell вы будете использовать Import-VM cmdlet. Рассмотрим следующий сценарий:

Вы экспортировали виртуальную машину, и она находится в C:\Exported_VM\, предположим, что она случайно удалена, или может понадобиться на другом хосте Hyper-V? Поскольку она уже экспортирована, она существенно резервирована и может легко импортироваться, следовательно, восстанавливая виртуальную машину.

Если команда Export-VM сохраняет виртуальную машину на диск, то команда Import-VM выполняет обратное действие; она считывает виртуальную машину с диска и импортирует ее в Hyper-V.

1. Предполагая, что у вас уже открыта консоль PowerShell, и вы находитесь в каталоге, где экспортирована виртуальная машина (C:\Exported_VM). Сначала выполните команду Get-ChildItem с параметром Recurse, чтобы перечислить все файлы и сделать пометку о имени файла с расширением *.vmcx с помощью следующего кода:

Get-ChildItem -Recurse | Where-Object -Property Name -CLike *.vmcx

Вы можете увидеть несколько .vmcx файлов в зависимости от того, имеет ли экспортированная виртуальная машина снимки. Вам нужен только тот, который необходим для загрузки виртуальной машины – файл VMCX, расположенный в папке Виртуальные машины.

Вы можете увидеть вывод, аналогичный приведенному ниже примеру:

Exported VM UID example – VM configuration file (vmcx)

2. Затем используйте команду Import-VM с параметром Path, чтобы указать файл конфигурации ВМ (полученный на предыдущем этапе).

Import-VM -Path '.\Alpine Linux 01\Virtual Machines\.vmcx'

Вот и все! Вы зарегистрировали виртуальную машину на месте, используя тот же идентификатор, который был у ВМ при экспорте.

Importing a VM in place

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

(Get-CimInstance -Namespace Root\Virtualization\V2 -ClassName Msvm_VirtualSystemSettingData -Filter "ElementName = 'Alpine Linux 01'").InstanceID

Вы должны увидеть аналогичный результат, как в примере ниже:

UID Retained

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

Импортирование виртуальной машины с использованием параметра Copy скопирует файлы из исходного расположения (C:\Exported_VM\) в настроенные пути сервера Hyper-V. При использовании с параметром GenerateNewId виртуальная машина может быть импортирована несколько раз на один и тот же сервер Hyper-V с новым уникальным идентификатором (UID).

Import-VM -Path '.\Alpine Linux 01\Virtual Machines\.vmcx' -Copy -GenerateNewId

На этот раз импортированная виртуальная машина не содержит того же UID, что и при экспорте. Ниже показаны старый и новый UID на снимке экрана:

Showing previous UID prior to import vs. new UID created with Copy and GenerateNewID parameters.

Теперь Hyper-V копирует виртуальную машину в пути по умолчанию, которые вы видели ранее при импорте виртуальной машины с помощью Hyper-V Manager, но присваивает ей новый UID.

Следующие шаги

В этом руководстве вы узнали, как экспортировать и импортировать виртуальную машину Hyper-V с помощью PowerShell и встроенного менеджера Hyper-V.

Теперь, когда вы знаете, как экспортировать и импортировать виртуальные машины Hyper-V, попробуйте настроить автоматическую активацию виртуальных машин (AVMA), чтобы активировать виртуальные машины с Windows Server, размещенные на Hyper-V.

Source:
https://adamtheautomator.com/export-hyper-v-vm/