Главная

Sunday, 20 November 2022

Проброс USB устройств в Hyper-V.


Всем привет.

Одним из существенных недостатков Hyper-V перед другими гипервизорами (например, ESXi или Proxmox) являются отсутствие полноценной возможности пробрасывать USB устройства с хоста в виртуальные машины. Начиная с версии Hyper-V 2012 R2 появился ряд изменений, касающихся возможностей USB Passthrough, однако этот функционал все еще уступает возможностям конкурентов. 

Под термином USB passthrough понимается возможность проброса USB устройства из хостового гипервизора в виртуальную машину. С помощью USB passthrough вы можете прокинуть внутрь ВМ токен, USB ключ, модем или любое другое оборудование, подключенное через USB порт.

Плохая новость в том, что в Hyper-V нет нормальной поддержки проброса USB устройств, вы не сможете пробросить любое USB устройство с физического хоста в виртуальную машину. Есть несколько встроенных возможностей использования USB устройства в Hyper-V, но у всех них есть существенные ограничения. 

На сегодня можно использовать следующие технологии для проброса USB устройства в Hyper-V:

  • проброс USB дисков с хоста Hyper-V;
  • расширенные возможности консоли Hyper-V - Enhanced Session Mode;
  • проброс USB устройства через RDP сессию;
  • использование программного/аппаратного средства для проброса USB по сети (USB over IP).

Последний сценарий предполагает использование сторонних решений для реализации USB over IP. Это может быть сетевой USB хаб, программное решение по пробросу USB устройства через TCP/IP сеть с другого сервера. Большинство популярных коммерческих решений - платные (AnywhereUSB, DigiUSBAW). Из бесплатных можно отметить VirtualHere USB (бесплатна для одного ключа и одного сервера) и довольно старый opensource проект usbip.sourceforge.net (серверная часть реализуется на Linux, на Windows ставится клиент).

По проброс USB дисков с хоста Hyper-V есть немало инструкций в сети. Поэтому мы остановимся на пробросе USB устройств через Enhanced Session Mode в Hyper-V.

Сначала нужно включить Enhanced Session Mode в настройках сервера Hyper-V. Это можно сделать с помощью PowerShell:

Set-VMHost -EnableEnhancedSessionMode $true

Или в меню Hyper-V Settings -> Enhanced Session Mode.



Заметьте что это надо сделать в двух местах, и для Сервера и для Пользователя.

После нужно перезапустить службу Hyper-V Virtual Machine Management:

Get-Service vmms | Restart-Service

Далее для самой ВМ в разделе Integration Services нужно включить опцию Guest Services.


Готово! Для проброса USB устройства через Enhanced Session Mode нужно запустить консоль Hyper-V, выбрать ВМ и нажать Connect. Либо вы можете запустить утилиту vmconnect.exe (Virtual Machine Connection), указать Hyper-V сервер и имя ВМ (утилита поддерживает некоторые параметры командной строки, поэтому вы можете отдавать пользователям настроенный bat файл).

Ели ВМ поддерживает Enhanced Session Mode, появится окно, похожее на свойства RDP подключения. Нажмите Show Option -> Local Resources -> Local device and resources -> More.

Выберите USB устройства на вашем компьютере, которое нужно пробросить в ВМ. Если устройства, которое вам нужно, сейчас не подключено, выберите опции Other supported Plug and Play (PnP) devices и Devices that I plug in later.

Теперь все подключённые к вашему компьютеру USB устройства должны быть доступны в консольной сессии виртуальной машины Hyper-V.

Данный метод похож на возможность проброса USB устройств через RDP сессию. 


Основные возможности и ограничения Enhanced Session Mode:

  • в качестве гостевых ОС поддерживается только Windows (начиная с Windows 8.1/Windows Server 2012 R2);
  • вам не нужен прямой доступ к ВМ. Все подключения выполняются через Hyper-V хост (вы подключаетесь к нему через сеть по порту TCP 2179), а подключение к ВМ выполняется через шину VMBus;
  • на компьютере пользователя должен быть установлен Hyper-V Manager.

Вот и все.
Слава Украине!

No comments:

Post a Comment

А что вы думаете по этому поводу?