Новая служба интеграции 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.
Перед началом копирования любого файла необходимо удостовериться, что :
- Службы интеграции обновлены. Минимальная версии служб интеграции должна быть (6.3.9600.16384)
Get-VM | Select Name, IntegrationServicesVersion
- Служба интеграции Guest Services включена для необходимых ВМ
#Запрос текущей конфигурации ВМ
Get-VM|Get-VMIntegrationService|ft VmName,Name,Enabled -AutoSize
#Включение службы интеграции для всех ВМ
Get-VM | Enable-VMIntegrationService -Name "Guest Service Interface"
- Внутри гостевой ОС служба 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 :
http://rlevchenko.files.wordpress.com/2014/08/test.jpg?w=848
English version:
Guest Services in Hyper-V and Copy-VMFile
http://rlevchenko.com/2014/06/15/guest-services-in-hyper-v-and-copy-vmfile/