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


10 сентября 2019


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

Импорт и экспорт в Hyper V это возможность копирование и переноса виртуальных машин. Эта возможность используется в тестовой среде, когда у нас есть образ или шаблон машины и для переноса с одного сервера на другой. Я так же слышал, что кто-то использует эту возможность как резервное копирование. Мы рассмотрим на примерах с GUI и в Powershell.

Если вы хотите создать шаблон виртуальной машины, то перед экспортом нужно сделать sysprep. Что бы просто перенести виртуальную машину Hyper V этого делать не надо.

Sysprep - это утилита сброса уникальных идентификаторов. Когда в одной сети находятся машины с одинаковыми идентификаторами могут быть ошибки и конфликты. После сброса идентификаторов нужно будет заново устанавливать те данные, которые требуются при первой установке Windows. Я бы крайне рекомендовал делать эту операцию во избежание проблем. Вы можете запустить эту команду из CMD:

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

Либо запустить файл sysprep.exe в этой папке:

C:\Windows\System32\Sysprep

И подтвердить действия с этими настройками:

экспорт hyper v

После окончания работы утилиты компьютер выключится и его нельзя будет включать. Если вы его включите, то идентификаторы сгенерируются и операцию нужно будет проделывать заново.

 

Экспорт Hyper V

Теперь выполним экспорт виртуальной машины Hyper V, в этот момент ВМ может быть включена. Нажмите на нее правой кнопкой и найдите кнопку экспорта:

экспорт hyper v

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

копирование hyper v

После этого мы выполнили в Hyper V копирование виртуальной машины.

 

Импорт Hyper V

Что бы выполнить в Hyper V импорт виртуальной машины нажмите следующую кнопку:

импорт hyper v

После стартового окна нам нужно будет выбрать папку, куда мы экспортировали ВМ:

копирование hyper v

Проверяем, что имя ВМ совпадает с той, которую мы хотим импортировать:

перенос hyper v

На следующем окне у нас появляется три возможных пункта клонирования виртуальной машины Hyper V. Так как ВМ тоже имеет уникальные идентификаторы этот пункт очень важен: 

  • Регистрировать виртуальную машину по мету (Register the virtual machine in-place) - если файлы ВМ уже находятся там, где они должны и вы не планируете переносить их в новое место. Это может быть ВМ с подключенной флешки или iSCSI диска. В этом случае уникальный идентификатор не генерируется.
  • Восстановить виртуальную машину (Restore the virtual machine) - в отличие от предыдущего пункта все файлы переносятся в новое место, которые вы укажете в следующем окне. Уникальный идентификатор так же остается прежним.
  • Копировать виртуальную машину (Copy the virtual machine) - копирует ВМ с новым сгенерированным идентификатором. В следующем окне нужно будет указать куда копировать эти файлы. Этот случай используется когда мы используем шаблон ВМ.

Если в этот момент уже работает ВМ с этим идентификатором, то мы получим ошибку:

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

Ошибка загрузки конфигурации виртуальной машины hyper v

Я выполню копирование машины, но остальные варианты аналогичны:

hyper v перенос виртуальной машины

В случае с копированием мы можем выбрать новое расположение файлов чекпоинтов, конфигураций и кэша либо использовать установленное по умолчанию:

hyper v импорт виртуальной машины

В этом окне выбирается расположение диска:

hyper v копирование виртуальной машины

В этой ВМ адаптер подключен к другому коммутатору и его не существует на этом хосте гипервизора. Проверка коммутаторов идет по именам и если раньше коммутатор, на этом же хосте, назывался 'Ext 1', а затем был удален или переименован на 'Ext 01' вы тоже получите ошибку. Можно выбрать новый коммутатор или пропустить этот шаг:

hyper v скопировать машину

На последнем шаге мы проверяем введенные данные и нажимаем кнопку подтверждения:

скопировать виртуальную машину hyper v

После этого ВМ импортируется и вам может понадобится подключиться к коммутатору и переименовать ее.

В обоих случаях вам нужно зайти в настройки ВМ:

Настройки виртуальной машины Hyper V

Для переименовывания машины нужно зайти на вкладку "Имя":

Переименование виртуальной машины Hyper V

Если сетевых адаптеров у ВМ нет, то нужно зайти во вкладку добавления устройств и добавить сетевой адаптер:

Добавить сетевой адаптер Hyper V

А затем подключить к коммутатору:

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

 

Экспорт и импорт виртуальной машины Hyper V в Powershell

Все команды имеют ключ ComputerName, а значит перенос виртуальной машины Hyper V может делаться на удаленном компьютере.

Получим список ВМ Hyper V, что бы узнать какую машину экспортировать:

Get-VM

Что бы через консоль Powershell в Hyper V скопировать виртуальную машину, в базовом варианте, нужно сделать следующее:

Export-VM -Name 'CentOS' -Path 'C:\VMimported\'

Где:

  • Name - имя ВМ, которую экспортируем
  • Path - путь, где будет лежать копия виртуальной машины Hyper V

Так как мы можем выполнить клонирование и включенной машины, то у нас есть несколько способов манипулировании с памятью. Для этого есть ключ CaptuteLiveState, которого нет в версии Windows Server 2012 r2 и ниже, со значениями:

  • CaptureSavedState - включает оперативную память
  • CaptureDataConsistentState - используется Production checkpoint
  • CaptureCrashConsistentState - память не сохраняется

По умолчанию используется CaptureSavedState.

Export-VM -Name 'CentOS' -Path 'C:\VMimported\' -CaptureLiveState CaptureCrashConsistentState

Export VM powershell Hyper V

Для импорта есть три варианта сохранения идентификаторов, которые описывались выше.

Если вы решили импортировать ВМ, которая уже находиться в нужной папке и с сохранением идентификаторов сделайте так:

Import-VM -Path "C:\wii\CentOS\Virtual Machines\8EA3B8C0-611B-48EF-8344-392FA71D89B6.vmcx"

VMCX - это файл, который лежит в папке "Virtual Machines" экспортированной ВМ. Если виртуальная машина с этим идентификатором уже есть в Hyper V вы получите ошибку:

Import-VM : Failed to create virtual machine. The operation failed because a virtual machine with the same identifier already exists. Select a new identifier and try the operation again.

Для импорта ВМ, с сохранением идентификаторов, но в новое место на диске выполните:

Import-VM -Path 'C:\VMimported\CentOS\Virtual Machines\8EA3B8C0-611B-48EF-8344-392FA71D89B6.vmcx' -VhdDestinationPath 'C:\NewPath\' -VirtualMachinePath 'C:\NewPath\' -Copy

Где:

  • VhdDestinationPath - куда будет скопирован виртуальный диск Hyper V
  • VirtualMachinePath - куда будут скопированы файлы конфигурации виртуально машины
  • Copy - указывает, что это операция копирования

Дополнительные ключи:

  • SnapshotFilePath - куда будут скопированы чекпоинты
  • SmartPagingFilePath - куда будет скопирован файл подкачки

Можно не указывать каждый тип файлов, а просто указать файл конфигурации в Path и действие Copy - тогда ВМ будет скопирована в местоположение указанное в настройках Hyper V.

В случае копирования VM с генерированием нового идентификатора можно сделать так:

Import-VM -Path "C:\wii\CentOS\Virtual Machines\8EA3B8C0-611B-48EF-8344-392FA71D89B6.vmcx" -Copy -GenerateNewId

В этом случае все файлы будут перемещены в папку, которая была указана в настройках Hyper V. Операция клонирования выполнена.

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.