среда, 30 сентября 2015 г.

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

Комментариев нет:

Отправить комментарий