В оновленій ролі Hyper-V, представленої в Windows Server 2012 R2 і Windows 8.1 з’явилася можливість прямого копіювання файлів з хоста Hyper-V в віртуальну машину без використання мережевих інтерфейсів. Цей функціонал реалізується за допомогою нової служби в гостьовій ОС під назвою Послуги для гостей, Що входить до складу інтеграційних компонентів Hyper-V (Integration Services).


Отже, щоб скористатися можливістю прямого копіювання файлів у віртуальну машину з хостовой ОС Hyper-V, потрібно в ВМ встановити останню версію компонентів інтеграції (Integration Services версії не нижче 6.3.9600.16384), і активувати на ній службу Guest Services.

Служба обслуговування гостей дозволяє здійснити копіювання файлів між хостової гіпервізором (комп’ютером з роллю Hyper-V) і віртуальною машиною, запущеної на ньому без використання мережевих компонентів. Процес копіювання здійснюється через високошвидкісну внутрішню шину vmbus (Virtual Machine Bus), безпосередньо зв’язує гипервизор і віртуальну машину. Завдяки цьому адміністратор може скопіювати всередину віртуальної машини будь-який файл, причому абсодютно неважливо в якій мережі знаходиться цільова віртуальна машина, підключена вона взагалі до віртуального комутатора, або знаходиться в ізольованій мережі.

Примітка. У попередніх версіях Hyper-V, щоб скопіювати файл всередину віртуальної машини з сервера Hyper-V доводилося налаштовувати rdp підключення, загальні папки через додаткову внутрішню мережу або загальні vhd файли. Також не варто плутати копіювання файлів через службу Guest Services з можливістю копіювання файлів через режим-розширення rdp-протоколу – Enchanted Session Mode.

Служба Guest services для віртуальних машин за замовчуванням відключена. Включити її можна через GUI консолі Hyper-V в властивості віртуальної машини (в розділі Integration Services) або за допомогою Powershell. Служба інтеграції guest services в hyper-v windows server 2012 r2

Перевірити, чи включена служба Guest services для віртуальної машини, можна так:

Get-VMIntegrationService -VMName HV2012R2 -Name "Guest Service Interface”

Get-VMIntegrationService Powershell

В даному прикладі служба відключена: Інтерфейс обслуговування гостей: помилковий.

Щоб включити службу, скористаємося такою командою:

Enable-VMIntegrationService -VMName "HV2012R2" -Name "Guest Service Interface" -ErrorAction Continue

Всередині віртуальної машини повинна бути запущена служба Hyper-V Guest Service, її статус можна отримати так:

Get-Service vmicguestinterface

Служба інтеграції vmicguestinterface

Після того, як служачи інтеграції Guest Service включена, можна за допомогою спеціального командлет Copy-VMFile скопіювати будь-який файл, розташований на файлову систему сервера Hyper-V безпосередньо в віртуальну машину. Щоб скопіювати файл в уже існуючу папку в гостьовій ОС, виконаємо на сервері команду:

Copy-VMFile "HV2012R2" -SourcePath C:Install2012R2.iso -DestinationPath C:Install2012R2.iso -FileSource Host

Якщо цільової шлях в гостьовій ОС не існує, команда поверне помилку. Щоб автоматично створити вказаний шлях на файлової системі гостьовий ОС, скористаємося аргументом -CreateFullPath

Copy-VMFile "HV2012R2" -SourcePath C:Install2012R2.iso -DestinationPath C:Install2012R2.iso -FileSource Host –CreateFullPath

Copy-VMFile - копіюємо файл всередину віртуальної машини Hyper-V за допомогою Powershell

Примітка. Командлет Copy-VMFile дозволяє за раз скопіювати тільки один файл. Щоб скопіювати вміст папки цілком, можна скористатися такою конструкцією:

Get-ChildItem C:Scripts -Recurse -File | % { Copy-VMFile "HV2012R2" -SourcePath $_.FullName -DestinationPath $_.FullName -CreateFullPath -FileSource Host }

Відключити службу Guest Services можна так:

Get-VMIntegrationService -VMName "HV2012R2" -Name "Guest Service Interface" | Disable-VMIntegrationService -Passthru

Отже, завдяки службі Guest Services адміністратор Hyper-V може безпосередньо скопіювати будь-який файл всередину гостьовий ОС віртуальної машини.

Leave a Reply

Your email address will not be published. Required fields are marked *