Заметки о Windows и других программных продуктах Microsoft...

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

Экспорт и импорт виртуальных машин в 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.

 
 
Комментарии

Подскажите, как экспортировать не все диски у виртуальной машины, например только диск С:

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

жаль, хотел скриптом , что бы ночами виртуалки бекапились, а со всеми дисками, многовато. Есть скрипт, для 2008R2 он умеет выборку по дискам делать, но на лету не умеет. Если интересно могу его кинуть.

Зачем городить скрипты, для бэкапа есть готовые решения, например тот же Veeam Backup. Он гораздо удобнее, даже в бесплатной версии. А скрипт кидайте, посмотрю.

ок, гляну Veeam Backup, ссылка на скрипт
https://cloud.mail.ru/public/ba64462e5c70/HyperV-Export.zip

Подскажите как перенести виртуальную машину из 2008R2 в 2012R2.При переноси лезут ошибки.

Как универсальный вариант — попробовать создать в 2012R2 новую машину и подложить ей VHD-файл от старой. А вообще надо смотреть, что пишется в ошибках.

Виртуальные машинки в WS 2008 создаются с расширение .exp, которые не читаются в WS 2012R2 так как у них формат .xml. Зато читаются с помощью WS2012. Приходится делать импорт в WS2012, при этом создаются xml-файлы виртуальной машины, которые удобно копируются и импортируются в WS2012R2.

Александр

Добрый день! Установил hyper-v 2012 r2, но пункта экспорта в меню нет, при экспорте из PowerShell, ругается что не может экспортировать рабочую виртуальную машину. Не подскажите, может как-то настрайвать надо или службу какую запустить???

Если задача разобраться, в чем именно проблема, то надо смотреть содержание ошибки. А вообще процесс эспорта\импорта представляет из себя обычное копирование, так что можно просто скопировать файлы виртуальной машины.

Кирилл

А как правильно поступить, если файлы VM находятся на CSV томах отказоустойчивого файлового кластера, и в случае аварии на одном хосте Hyper-V надо эти машины оперативно подключить к другому, аналогичному хосту. Пока выдает ошибку, якобы нет доступа к каталогу с файлами VM. Однако по доступам все проставлено. Оба хоста на этих томах успешно создают VM, но вот подключение существующих не проходит.

Видимо, данная статья актуальна для платной версии Hyper-V. В бесплатной версии кнопки «Экспорта» нету. Увы

Как интересно , где это вы видите платную версию HV ?

Константин

При импорте через графическую оболочку другое имя виртуального свича (не такое, как на исходном севере — например при импорте на другой сервер) не помеха — предлагает выбрать тот свич, который есть или импортировать без подключения к свичу. Это особенность импорта-экспорта через графику, или что-то допилили? Проводилось на Server 2012 R2.

Игорь

Добрый день. А виртуальную машину экспортируемую таким способом можно будет импортировать в Proxmox/VMware/Citrix или она только для hyper-v?

Только для Hyper-V. Для экспорта ВМ на другие платформы виртуализации существуют спец. конверторы.

Файлы виртуальной машины не найдены, 50 гигов не найденных файлов, 2 часа экспорта и записи по сети на новый сервер… ужас. Честно говоря удивлен тем, что такая простейшая задача и не работает, казалось бы, 2 кнопки, импорт и экспорт, а все равно через «майкрософт» все работает. ( может есть идеи? надо переименовать каталог в 666, сплясать на столе? крикнуть заклинание? ).

Ответить