Экспорт и импорт виртуальных машин в Windows Server 2012 R2

Возможность получить точную копию виртуальной машины очень удобно использовать в процессе разработки, тестирования или траблшутинга. В Windows Server 2012 R2 появилось несколько новых возможностей, связанных с экспортом\импортом ВМ, о которых мы и поговорим.

 

Экспорт

Раньше для того, чтобы экспортировать ВМ штатными средствами, предварительно необходимо было ее остановить. В Windows Server 2012 R2 можно экспортировать запущенные виртуальные машины ″наживую″, прямо в процессе работы. Для экспорта открываем Hyper-V Manager, выбираем нужную ВМ, кликаем на ней правой клавишей мыши и в контекстном меню выбираем «Export».

Экспорт ВМ

 

Указываем расположение, в которое будет производиться экспорт и жмем «Export».

Выбор места для экспорта ВМ

 

Также для экспорта ВМ из консоли PowerShell можно воспользоваться такой командой:

Export-VM -Name SC3 -Path ″D:\Hyper-V\SC3Clone″

Экспорт снимка ВМ

Раньше для того, чтобы экспортировать снимок (checkpoint), надо было произвести полный экспорт ВМ вместе со всеми снимками, импортировать машину и только затем откатится на нужный снимок. В Windows Server 2012 R2 появилась возможность экспортировать только конкретный снимок виртуальной машины. Для этого выбираем нужную ВМ, переходим в поле «Checkpoints», кликаем правой клавишей на нужном снимке, выбираем «Export» и указываем, куда сохранять файлы.

Экспорт снимка ВМ

 

И то же самое с помощью PowerShell. Выводим список снимков для указанной ВМ:

Get-VMSnapshot -VMName SC3

Выбираем нужный снимок и экспортируем его, например так:

Export-VMSnapshot -Name ′SC3 — (2/25/2014 — 4:03:55 PM)′ -VMName SC3 -Path D:\Hyper-V

Экспорт снимка ВМ из PowerShell

 

Примечание. При создании снимка в качестве его имени по умолчанию берется имя ВМ и время создания. Для удобства экспорта снимкам можно давать вменяемые имена сразу при создании, с помощью команды Checkpoint-VM -SnapshotName. Также снимки можно переименовать командой Rename-VMSnapshot, либо из оснастки Hyper-V Manager.

Импорт

В импорте особых изменений нет. Открываем Hyper-V Manager, кликаем правой клавишей на имени хоста и в контекстном меню выбираем «Import Virtual Machine».

Импорт ВМ

 

Запускается мастер импорта виртуальных машин. В первом окне жмем Next >

Мастер импорта ВМ

 

Затем указываем расположение папки с файлами импортируемой ВМ.

Выбор расположения импортируемой ВМ

 

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

Выбор ВМ для импорта

 

Выбираем, каким образом производить импорт. Соответственно, есть три варианта:

1) Register the virtual machine in-place — зарегистрировать ВМ по месту с тем-же ID;
2) Restore the virtual machine — скопировать ВМ в другую папку, ID оставить без изменения;
3) Copy the virtual machine — скопировать ВМ в другую папку и сгенерировать для нее новый ID.

Обратите внимание, что у каждой ВМ на хосте Hyper-V есть уникальный идентификатор (ID), т.е. на одном хосте не может быть двух ВМ с одинаковым ID. Выбор варианта зависит от ситуации, так если вы разворачиваете скопированную машину на одном хосте с оригиналом, то подойдет только копирование с новым ID.

Выбор типа импорта

 

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

выбор места для файлов ВМ

 

и виртуальных дисков ВМ.

выбор места для виртуальных дисков ВМ

 

Либо просто просматриваем суммарную информацию и жмем «Finish».

Запуск импорта ВМ

 

Импорт с помощью PowerShell. Для того, чтобы просто зарегистрировать ВМ по месту, надо выполнить команду:

Import-VM -Path ′D:\Hyper-V\SC3\Virtual Machines\4e782fc5-8a82-4311-8627-b69ab2e894f5.xml′

В параметре Path указываем расположение xml-файла конфигурации. Для копирования ВМ в другое место с тем же ID воспользуемся параметром Copy, а для генерации нового идентификатора используем параметр GenerateNewId:

Import-VM -Path ′D:\Hyper-V\SC3\Virtual Machines\4e782fc5-8a82-4311-8627-b69ab2e894f5.xml′ -Copy -GenerateNewId

Импорт ВМ из PowerShell

Проверка на совместимость

Иногда при переносе ВМ на другой хост могут возникнуть проблемы с совместимостью. В этом случае просто импортировать машину не получится, при попытке будет выдана ошибка. Для выяснения причин несовместимости можно воспользоваться командлетом Compare-VM. Вот типичный пример — импорт не удался, в сообщении фигурирует ошибка в конфигурации. Попробуем уточнить, в чем проблема, для чего выведем отчет о совместимости командой:

Compare-VM -Path ′D:\SC3\Virtual Machines\4e782fc5-8a82-4311-8627-b69ab2e894f5.xml′

Как видно из отчета, в строке Incompatibilities стоит код ошибки, что означает проблему с совместимостью.

ошибка при импорте ВМ

 

Для уточнения проблемы еще раз выведем отчет о совместимости и поместим его в переменную:

$report = Compare-VM -Path ′D:\SC3\Virtual Machines\4e782fc5-8a82-4311-8627-b69ab2e894f5.xml′

Затем извлечем причину несовместимости:

$report.Incompatibilities | ft -AutoSize

Как видно из сообщения, проблема в отсутствии на данном хосте виртуального свича с именем Private. Этот свич прописан в конфигурации ВМ, и для успешного импорта его надо оттуда удалить. Сделаем это с помощью команды:

$report.Incompatibilities[0].Source | Disconnect-VMNetworkAdapter

Затем проверим еще раз совместимость:

Compare-VM -CompatibilityReport $report

И поскольку проблема устранена, то импортируем машину командой:

Import-VM -CompatibilityReport $report

проверка на совместимость ВМ

Заключение

В заключение напомню о том, что при экспорте мы получаем точную копию виртуальной машины, включая идентификатор безопасности (SID), имя и IP-адрес (при статической адресации). Поэтому, во избежании конфликтов, при развертывании такой машины надо быть крайне осторожным, и делать это желательно в изолированной среде, особенно если виртуальная машина является членом домена AD.

На этот раз все, а в следующей статье мы рассмотрим динамическое клонирование виртуальных машин с помощью Virtual Machine Manager.