Доброго времени суток!
Что делать, если у вас есть задача скопировать некоторое количество фалов в виртуальную машину Hyper-V не используя сеть.
Можно, конечно, подключить vhd/vhdx файл как диск в хостовую систему и скопировать все на него. Но что делать, если скажем, на вашей виртуалке стоит Ubuntu и там другая файловая система?
Или данную ВМ нельзя переводить в оффлайн для копирования? — Ответ есть!
Дело в том, что в роли Hyper-V, которая появилась в Windows Server 2012 R2 и Windows 8.1 есть возможность прямого копирования файлов с хоста Hyper-V в виртуальную машину без использования сетевых интерфейсов.
Этот функционал реализуется с помощью новой службы в гостевой ОС под названием Гостевые службы (Guest Services), входящей в состав интеграционных компонентов Hyper-V (Integration Services).
Итак, чтобы воспользоваться возможностью прямого копирования файлов в виртуальную машину с хостовой ОС Hyper-V, нужно в ВМ установить последнюю версию компонентов интеграции, и активировать Гостевую службу (Guest Services).
Гостевая Служба (Guest Services) позволяет осуществить копирование файлов между компьютером с ролью Hyper-V и виртуальной машиной, запущенной на нем без использования сетевых компонентов. Процесс копирования осуществляется через высокоскоростную внутреннюю шину (Virtual Machine Bus), напрямую связывающую гипервизор и виртуальную машину. Благодаря этому можно скопировать внутрь виртуальной машины любой файл, причем вообще неважно в какой сети находится ВМ, она даже может быть изолирована от сети или не подключена к виртуальному коммутатору.
Давайте разберемся, как это осуществить с практической точки зрения:
Первое, что нужно сделать — это проверить включена ли служба Гостевая Служба (Guest services) на требуемой ВМ (по умолчанию служба отключена. Включаем ее с помощью графического интерфейса консоли Hyper-V в свойствах виртуальной машины:
Так же, если у вас нет графического интерфейса, можно сделать это с помощью Powershell:
Get-VMIntegrationService -VMName owncloud-new -Name "Guest Service Interface”
Чтобы включить службу введем команду: Enable-VMIntegrationService -VMName "
owncloud-new
" -Name "Guest Service Interface" -ErrorAction Continue
Проверяем запущен ли Hyper-V Guest Service, ее статус узнаем с помощью команды:
Get-Service vmicguestinterface
Если служба интеграции Guest Service включена, то уже можно начинать копировать файлы с помощью командлета Copy-VMFile в виртуальную машину с нашего сервера Hyper-V. Выполняем команду:
Copy-VMFile "owncloud-new" -SourcePath C:\update\owncloud.zip -DestinationPath '/tmp' -FileSource Host
т.к. для примера взята ВМ на ОС Ubuntu то синтаксис пути будет именно такой. Для ОС Windows команда копирования по определенному пути будет выглядеть так:
Copy-VMFile "owncloud-new" -SourcePath C:\update\owncloud.zip -DestinationPath C:\tmp\ouwncloud.zip -FileSource Host –CreateFullPath
где параметр –CreateFullPath дает возможность создать каталог, в случае его отсутствия в гостевой ОС. Если вы копирует папку с множеством файлов, то необходимо добавить параметр -Recurse, т.к. командлет Copy-VMFile позволяет за раз скопировать только один файл. Пример:
Get-ChildItem C:\update\ -Recurse -File | % { Copy-VMFile "owncloud-new" -SourcePath $_.FullName -DestinationPath $_.FullName -CreateFullPath -FileSource Host }
Если служба служба интеграции Guest Service более не нужна, ее можно отключить командой: Get-VMIntegrationService -VMName "HV2012R2" -Name "Guest Service Interface" | Disable-VMIntegrationService -Passthru
Или через графическую часть.
На сегодня это всё! Спасибо за внимание.