Поиск по сайту:

Сквозная передача USB-устройства (перенаправление) на виртуальную машину Hyper-V


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

Обзор сквозного USB-перехода Hyper-V

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

Плохая новость заключается в том, что Hyper-V не поддерживает полнофункциональную сквозную передачу USB. Вы не можете перенаправить произвольное USB-устройство с физического хоста на виртуальную машину (VMWare с этим справляется гораздо лучше — см. статью USB passthrough в VMWare ESXi). Существует несколько встроенных вариантов использования внешнего USB-устройства в виртуальной машине Hyper-V, но все они имеют существенные ограничения. В настоящее время вы можете использовать следующие способы перенаправления USB-устройства на виртуальную машину Hyper-V.

  • Перенаправление USB-накопителей с хоста Hyper-V;

  • Расширенный режим сеанса на консоли Hyper-V;

  • Перенаправление USB через RDP;

  • Использование программно-аппаратного решения для перенаправления USB по сети (USB over IP).

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

usbip.sourceforge.net

(серверная часть реализована на Linux, клиентская часть может быть установлена на Windows).

Доступ к жесткому диску USB из виртуальной машины Hyper-V

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

Примечание.

  1. Это руководство работает только для USB-накопителей, которые определяются системой как исправленные. Перенаправить на ВМ таким способом нельзя USB-флешки, смарт-карты и другие съемные устройства (правда, есть небольшая хитрость, позволяющая Windows видеть съемное устройство как фиксированный жесткий диск).

  2. Для этих дисков вы не можете создать снимок/контрольную точку.

  1. Подключите внешний USB-накопитель к хосту Hyper-V (это может быть любой хост с Windows и установленной ролью Hyper-V или бесплатный сервер Microsoft Hyper-V). Диск появится в системе и ему будет присвоена буква диска (если буква диска не присвоена, проверьте статью);

  2. Откройте Управление дисками (

    diskmgmt.msc

    ) консоли щелкните правой кнопкой мыши диск (в нашем примере идентификатор USB-накопителя емкостью 20 ГБ — Диск 1) и выберите Не в сети.

    Get-Disk
    Get-Disk -Number 1 |Set-Disk -IsOffline:$true 

  • Запустите Hyper-V Manager и откройте свойства виртуальной машины, к которой необходимо подключить USB-накопитель. В разделе SCSI Controller добавьте новый диск, указав, что он физический (Физический жесткий диск). В раскрывающемся меню выберите свой USB-накопитель (он будет выглядеть примерно так: Диск 1 20,00 Гб Шина 0 Лун 0 Цель 1).

    Примечание. Вам не нужно выключать виртуальную машину, чтобы добавить жесткий диск SCSI. Для устройств SCSI поддерживаются диски с возможностью «горячего» добавления и «горячего» удаления.

  • Теперь мы покажем, как получить доступ к USB-диску на хосте Hyper-V из гостевой ОС виртуальной машины под управлением Windows. Откройте консоль виртуальной машины или подключитесь к ней через RDP. Войдите в гостевую ОС. Запустите Диспетчер дисков. ОС должна увидеть новый диск. Если он не в сети, щелкните его правой кнопкой мыши и выберите Онлайн. В настоящее время разделам на USB-диске не назначаются буквы дисков или точки монтирования. Чтобы это исправить, щелкните правой кнопкой мыши раздел на диске и выберите «Изменить букву диска и пути» в контекстном меню. Назначьте разделу любую свободную букву диска или укажите точку монтирования.

  • Вот и все! Вы напрямую подключили внешний USB-носитель к виртуальной машине Hyper-V и теперь можете его использовать.

    Важно. Чтобы предотвратить потерю данных, прежде чем физически извлекать жесткий диск из USB-порта, убедитесь, что никакие приложения на виртуальной машине не имеют доступа к этому диску.

    Чтобы безопасно извлечь USB-накопитель, откройте консоль Hyper-V Manager и перейдите в окно настроек виртуальной машины. В разделе Контроллер SCSI выберите жесткий диск, который хотите удалить, и нажмите Удалить. Сохраните изменения. После этого вы можете физически извлечь жесткий диск из USB-порта хоста Hyper-V.

    Перенаправление USB-устройства на виртуальную машину с помощью расширенного режима сеанса Hyper-V

    В версии Hyper-V, представленной в Windows Server 2012 R2/8.1, любое USB-устройство можно перенаправить на виртуальную машину с клиентского компьютера с помощью расширенного режима сеанса (ESM). Для подключения используется инструмент Hyper-V Manager vmconnect.exe. Он позволяет вам подключиться к консоли виртуальной машины и выбрать USB-устройства, которые вы хотите перенаправить.

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

    Set-VMHost -EnableEnhancedSessionMode $true

    Или в настройках Hyper-V -> Расширенный режим сеанса.

    Перезапустите службу управления виртуальными машинами Hyper-V:

    Get-Service vmms | Restart-Service

    В разделе Службы интеграции настроек виртуальной машины необходимо включить параметр Гостевые службы.

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

    vmconnect.exe

    инструмент (Подключение к виртуальной машине) укажите сервер Hyper-V и имя виртуальной машины. Инструмент vmconnect поддерживает некоторые параметры командной строки, поэтому вы можете предоставить пользователям индивидуальный bat-файл с нужными вам параметрами.

    Если виртуальная машина поддерживает расширенный режим сеанса, появится окно, похожее на свойства подключения RDP. Нажмите Показать параметр -> Локальные ресурсы -> Локальное устройство и ресурсы -> Еще.

    Выберите USB-устройства на вашем компьютере, которые необходимо перенаправить на виртуальную машину. Если нужное устройство в данный момент не подключено, выберите «Другие поддерживаемые устройства Plug and Play (PnP)» и «Параметры устройств, которые я подключу позже».

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

    Ключевые особенности и ограничения расширенного режима сеанса Hyper-V:

    • В качестве гостевой ОС поддерживается только Windows (начиная с Windows 8.1/Windows Server 2012 R2);

    • Вам не нужен прямой сетевой доступ к виртуальной машине. Все подключения осуществляются через хост Hyper-V (вы подключаетесь к нему по сети через TCP-порт 2179), а Hyper-V подключается к виртуальной машине через VMBus;

    • Диспетчер Hyper-V должен быть установлен на клиентском компьютере.

    Этот метод аналогичен перенаправлению USB-устройств с локального хоста через сеанс RDP. Мы не будем рассматривать это более подробно.

    Если вы перенаправляете USB-устройства по сети (USB через IP или через сеанс RDP), вы все равно можете получить доступ к USB-ключу даже после миграции виртуальной машины на другой хост (Hyper-V Live Migration/vMotion).

    Статьи по данной тематике