Новая служба интеграции Hyper-V или Copy-VMFile в действии

Новая служба интеграции Hyper-V или Copy-VMFile в действии

В 2012 R2 произошло массовое обновление/улучшение роли Hyper-V. Самым видимым, в прямом смысле этого слова, нововведением для всех стало появление новой службы интеграции Guest Services (Guest Service Interface или "локализованный вариант" - Интерфейс гостевой службы), которую Вы наблюдаете каждый раз выключенной,по умолчанию, в свойствах любой ВМ.



Данная служба интеграции вносит довольно скромный функционал, но крайне полезный. Guest Services позволяет копировать необходимые файлы между хостом (сервер Hyper-V , на котором размещены целевые ВМ или parent partition) и виртуальными машинами (=child partition) без какой-либо нагрузки на сетевые составляющие. Процесс копирования обеспечивается связкой между хостом Hyper-V и ВМ через всеми известный vmbus ( Virtual Machine Bus).



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

Перед началом копирования любого файла необходимо удостовериться, что :

1) Службы интеграции обновлены. Минимальная версии служб интеграции должна быть (6.3.9600.16384)

Get-VM | Select Name, IntegrationServicesVersion


2) Служба интеграции Guest Services включена для необходимых ВМ

#Запрос текущей конфигурации ВМ
Get-VM|Get-VMIntegrationService|ft VmName,Name,Enabled -AutoSize
#Включение службы интеграции для всех ВМ
Get-VM | Enable-VMIntegrationService -Name "Guest Service Interface"




3) Внутри гостевой ОС служба vmicguestinterface запущена

Get-Service vmicguestinterface 




Управление самим копированием обеспечивается только одним cmdlet (Microsoft.HyperV.PowerShell.GuestServiceInterfaceComponent).Copy-VMFile , обязательными параметрами которого являются:

-DestinationPath<String> = куда копируем
-SourcePath<String> = откуда копируем (занятно: UNC-путь тоже принимается)
-FileSource<CopyFileSourceType> = тип источника файла
-VMName <String[]>  = наименования ВМ

Пример:

#Копирование файла 2012R2.ISO, располагающемся на сервере Hyper-V в C:\ISO. Сохранить файл в C:\ISO внутри #гостевой ОС виртуальной машины Server2012R2_1
Copy-VMFile "Server2012R2_1" -SourcePath C:\ISO\2012R2.iso -DestinationPath C:\ISO\2012R2.iso -FileSource Host

Если путь C:\ISO внутри гостевой ОС не будет найден, то вышеуказанный пример завершится ошибкой. 
Для обхода подобных проблем необходимо использовать параметр -CreateFullPath , который создает необходимые папки, если не может обнаружить путь.

Copy-VMFile "Server2012R2_1" -SourcePath C:\ISO\2012R2.iso -DestinationPath C:\ISO\2012R2.iso -FileSource Host -CreateFullPath


Процесс копирования после запуска Cmdlet:



Результат:



UNC :


English version:

Guest Services in Hyper-V and Copy-VMFile
http://rlevchenko.com/2014/06/15/guest-services-in-hyper-v-and-copy-vmfile/


web analytics
Сортировать по: Дата публикации | Последние | Самый полезный
Комментарии
  • R.Levchenko внес(ла) изменения в Revision 4. Комментарий: форматирование

Страница 1 из 1 (элементов: 1)