Вам нужно экспортировать виртуальные машины 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. Найдите виртуальную машину, которую нужно экспортировать, щелкните правой кнопкой мыши и выберите Экспорт.

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

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

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

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

- Папка Virtual Hard Disks содержит все файлы образов жесткого диска или *.vhdx для вашей виртуальной машины. Файл AVHDX или Automatic virtual hard disk – это дифференцирующий диск, используемый для контрольных точек виртуальной машины. Если у вашей виртуальной машины есть более одной контрольной точки, вы увидите несколько файлов AVHDX.

- Папка Virtual Machines содержит файлы конфигурации виртуальных машин, используемые для загрузки виртуальной машины. Подобно папке Snapshots, здесь также будут файлы bin: VMCX, VMRS и VMGS.

Если все три папки присутствуют и содержат файлы, ваш экспорт прошел успешно.
Использование PowerShell для экспорта виртуальной машины
Если вы предпочитаете командную строку или у вас много виртуальных машин для экспорта, использование PowerShell для экспорта виртуальной машины – отличная опция. Для экспорта Hyper-V с помощью PowerShell используйте Export-VM
. Для этого, предполагая, что вы находитесь на своем хосте Hyper-V, и ваша виртуальная машина выключена:
1. Откройте консоль PowerShell.
2. Запросите хост Hyper-V, чтобы получить инвентарь ваших виртуальных машин и имя виртуальной машины для экспорта. В этом руководстве будет экспортироваться виртуальная машина с именем Alpine Linux 01
.

Export-VM
command3. Создайте папку для экспорта виртуальной машины. В этом руководстве виртуальная машина будет экспортироваться в C:\Export_VM.
4. Теперь экспортируйте виртуальную машину с помощью командлета Export-VM
, указав имя виртуальной машины для параметра Name
, Path
к папке для сохранения и параметр PassThru
.
Параметр
PassThru
является необязательным для возврата объекта ВМ, экспортируемого. В противном случаеExport-VM
не возвращает вывод.

Когда ВМ запущена,
Export-VM
автоматически не сохраняет память. Если вы хотите сохранить содержимое памяти, запущенное в ВМ, используйте параметр-CaptureLiveState CaptureSavedState
сExport-VM
. Узнайте больше о технологии, используемой для захвата памяти.
5. Теперь удалите ВМ из Hyper-V. Не волнуйтесь! У вас есть сохраненная копия!
Использование Hyper-V Manager для импорта ВМ
Когда Вы экспортировали ВМ, случилось бедствие, и ВМ исчезла. Не волнуйтесь! Вы уже экспортировали ее на диск. Давайте вернемся к ней. Для этого, предполагая, что вы снова находитесь на своем хосте Hyper-V:
1. Откройте Hyper-V Manager.
2. Нажмите на пункт меню Импорт виртуальной машины, расположенный справа в окне Hyper-V Manager. Вам будет предложена мастер импорта виртуальной машины. Нажмите Далее.

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

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

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

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

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

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

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

Использование 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 с помощью следующего кода:
Вы можете увидеть несколько .vmcx файлов в зависимости от того, имеет ли экспортированная виртуальная машина снимки. Вам нужен только тот, который необходим для загрузки виртуальной машины – файл VMCX, расположенный в папке Виртуальные машины.
Вы можете увидеть вывод, аналогичный приведенному ниже примеру:

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

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

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

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