Вы когда-нибудь пытались подключить флешку напрямую в виртуальную машину VMware ESXi и подумали: «А где же моя USB-штука?» Если да, то вы не одни! В этой статье мы детально разберём, как устроен USB Passthrough, какие подводные камни ждут при пробросе USB устройств и как решить даже самые хитрые проблемы с драйверами и совместимостью.

Мы пройдемся по всему пути: от базовых принципов проброса USB до продвинутых приёмов с пробросом целого USB контроллера и созданием кастомного образа ESXi с нужными драйверами. Поехали!


Что такое USB Passthrough в VMware ESXi и зачем он нужен?

USB Passthrough — это технология, которая позволяет виртуальной машине (ВМ) получить прямой доступ к физическому USB устройству, подключенному к ESXi хосту. Представьте, что вы хотите быстро скопировать файлы с ВМ на внешний USB диск, как если бы вы сидели перед физическим сервером и вставляли флешку в его USB порт. Вот тут на помощь и приходит USB Passthrough!

Эта функция появилась в ESXi начиная с версии 4.1 и с тех пор активно используется для работы с USB флешками, дисками, модемами и даже USB токенами безопасности.


Какие требования и ограничения существуют при пробросе USB устройств?

Как и в любой сказке, в USB Passthrough есть свои "золотые правила" и ограничения:

Требование / Ограничение Описание
Virtual Hardware версии 7.0 и выше Без этого USB Passthrough не заработает
Проброс USB устройства только для одной ВМ Одно устройство — одна виртуальная машина
Максимум 20 USB устройств на одну ВМ Большего ESXi просто не разрешает
Загрузка ВМ с USB не поддерживается Не спешите делать ВМ загрузочной с USB
Не поддерживается DPM режим ВМ с USB не «уснут» вместе с хостом
Для vMotion нужна галочка “Support vMotion while device is connected” Позволяет мигрировать ВМ с проброшенным устройством
ESXi хосты должны быть доступны по vmk0 TCP 902 порт Для работы USB Passthrough необходимо сетевое соединение

Если кратко, то USB Passthrough — как эксклюзивная вечеринка: попасть можно только одному гостю (ВМ), с одним девайсом, и лучше не менять места во время тусовки (включать vMotion).


Как добавить USB контроллер и USB устройство в настройки виртуальной машины?

Сам процесс добавления USB устройства к ВМ в ESXi выглядит так:

  1. Добавляем USB контроллер:

  2. Заходим в настройки ВМ (Edit settings)

  3. Нажимаем "Add New Device" -> выбираем "USB Controller"
  4. Выбираем тип контроллера:

    • USB 2.0 (EHCI+UHCI) — для старых устройств
    • USB 3.0 (xHCI) — для быстрых современных устройств (нужен virtual hardware 8+)
  5. Добавляем USB устройство:

  6. В тех же настройках ВМ добавляем "Host USB device"

  7. Выбираем из списка физически подключенное к хосту USB устройство
  8. Нажимаем Add и сохраняем изменения

  9. Для поддержки vMotion:

  10. Включаем опцию “Support vMotion while device is connected” (если есть)

  11. Запускаем ВМ и проверяем наличие USB устройства внутри гостевой ОС

Так просто? Похоже на покупку билета на самолет — выбрал место (контроллер), сел (USB устройство) и летишь (работаешь с устройством в ВМ).


Если USB устройство не отображается — что делать?

Иногда при добавлении USB устройства в ВМ вы можете увидеть сообщение «No available USB devices» или «Device not found». Это значит, что ваше устройство либо не поддерживается напрямую, либо занято.

Возможные решения:

  • Проверьте, что служба USB Arbitrator работает на ESXi:

bash chkconfig usbarbitrator --list

  • Ознакомьтесь со списком совместимых устройств на сайте VMware в статье USB Devices tested for Passthrough.

  • Если устройство не поддерживается напрямую — попробуйте пробросить целый USB контроллер.


Что такое VMDirectPath (PCI Passthrough) и как пробросить USB контроллер целиком?

Если проброс устройства не сработал, не отчаивайтесь — у VMware есть козырь в рукаве: VMDirectPath (или PCI Passthrough). Это когда вы пробрасываете это весь USB контроллер хоста в виртуальную машину.

Преимущества:

  • ВМ получает полный доступ к USB устройствам, подключенным к этому контроллеру
  • Можно использовать USB устройства, которые не поддерживаются в обычном режиме

Недостатки:

  • Контроллер и все USB устройства на нём становятся недоступны для хоста
  • Если контроллер единственный — мышь и клавиатура, подключенные к нему, перестанут работать на хосте
  • Требуется поддержка VT-d (Intel) или AMD IOMMU в BIOS/UEFI и включение соответствующих настроек

Как пробросить контроллер:

  1. Определите нужный USB контроллер:

bash lsusb -v | grep -e Bus -e iSerial tail -f /var/log/vmkernel.log | grep -i USB

  1. В интерфейсе ESXi перейдите:

Manage -> Settings -> PCI Devices -> Edit

  1. Выберите нужный USB контроллер по ID и сделайте его Available.

  2. Перезагрузите хост.

  3. В настройках ВМ добавьте новое PCI устройство и выберите USB контроллер.

  4. Запустите ВМ и проверьте наличие USB устройств в гостевой системе.


Особенности службы USB Arbitrator

Эта служба — дирижёр оркестра USB на ESXi. Она управляет:

  • Сканированием USB устройств
  • Маршрутизацией трафика между хостом и ВМ
  • Блокировкой одновременного доступа к одному устройству (чтобы избежать хаоса)

Arbitrator поддерживает до 15 USB контроллеров и гарантирует, что USB устройства будут работать только с одной ВМ одновременно. Если службу выключить — USB Passthrough не будет работать вообще.


Обновление версии виртуального оборудования (Virtual Hardware)

Если у вас проблема с подключением USB устройств, часто поможет обновление виртуального оборудования ВМ. Например, USB 3.0 поддерживается только с версии виртуального железа 8 и выше.

Обновить можно так:

  • Откройте настройки ВМ
  • Выберите "Compatibility" или "Upgrade virtual hardware"
  • Выберите нужную версию (рекомендуется не ниже 8)

Без этого шага Ваша ВМ может просто не увидеть современные USB контроллеры.


Особые случаи: проброс USB токенов и других нестандартных устройств

USB токены, например Aladdin Knowledge Token, требуют особой настройки.

Рецепт победы:

  1. Выключите ВМ.
  2. В настройках ВМ откройте "VM Options" -> "Advanced" -> "Configuration Parameters".
  3. Добавьте параметр:

usb.generic.allowCCID TRUE

  1. Включите ВМ.
  2. Добавьте USB устройство токена.
  3. Запустите и наслаждайтесь!

Если проброс не работает, можно использовать программы типа USB over Ethernet — эдакий удалённый доступ к USB устройствам по сети.


Кастомизация образа ESXi с дополнительными USB драйверами

Если вы столкнулись с проблемой поддержки USB сетевых карт или контроллеров на нестандартном оборудовании, можно собрать свой образ ESXi с нужными драйверами.

Основные шаги:

  • Установить VMware PowerCLI и ImageBuilder на Windows
  • Скачать официальный образ ESXi и драйверы (например, USB NIC Fling)
  • Создать JSON-файл с описанием компонентов для сборки
  • Запустить команду сборки нового ISO образа

Такой кастомный образ позволит добавить поддержку USB устройств, которых нет в стандартном дистрибутиве.


Типичные сложности при установке ESXi на устройства с USB сетевыми картами

  • ESXi может не обнаружить сетевую карту, если драйвер отсутствует в стандартном образе.
  • Сторонние инструкции часто устарели или неполны.
  • Для интеграции драйверов нужно использовать PowerCLI и Python, что требует дополнительных усилий.
  • Иногда проще использовать другие гипервизоры (например, Proxmox) с лучшей поддержкой USB.

Резервирование памяти и миграция ВМ с проброшенными USB устройствами

  • При пробросе PCI устройств ВМ может требовать, чтобы память была зарезервирована (memory reservation = memory size).
  • Для vMotion с проброшенными USB устройствами обязательно включайте поддержку в настройках ВМ.
  • Если ВМ выключена, её нужно вручную мигрировать на хост с нужным USB устройством.
  • Режим DPM не поддерживается, чтобы хост не уходил в сон с активными USB устройствами.

Итоговый чек-лист для успешного USB Passthrough в VMware ESXi

Шаг Описание
Добавить USB контроллер В настройках ВМ добавить USB controller нужной версии
Добавить USB устройство Добавить Host USB device и выбрать нужное устройство
Обновить виртуальное железо Virtual Hardware версии 7.0+ для USB 2.0, 8+ для USB3
Проверить службу Arbitrator Должна быть запущена для работы USB
Настроить vMotion (если нужно) Включить поддержку миграции с USB устройством
Использовать VMDirectPath при проблемах Пробросить целый USB контроллер, если устройство не работает напрямую
При пробросе PCI — зарезервировать память Установить memory reservation = memory size
При нестандартных устройствах Добавить параметр usb.generic.allowCCID TRUE
При проблемах с драйверами Собрать кастомный образ ESXi с нужными драйверами

FAQ

В: Можно ли пробросить USB устройство сразу в несколько ВМ?
О: Нет, только одна ВМ может иметь доступ к одному физическому USB устройству.

В: Можно ли загрузить ВМ с USB диска?
О: Нет, ESXi не поддерживает загрузку ВМ с USB устройств.

В: Что делать, если в списке USB устройств нет нужного диска?
О: Проверьте поддержку устройства, работу службы Arbitrator, попробуйте пробросить весь USB контроллер.

В: Как узнать, какой USB контроллер пробросить?
О: Используйте команду lsusb -v и смотрите логи vmkernel.log, чтобы определить ID контроллера.

В: Можно ли мигрировать ВМ с проброшенным USB устройством на другой хост?
О: Да, если включена поддержка vMotion и USB устройство доступно на целевом хосте.


USB Passthrough в VMware ESXi — это как пригласить гостя на свою вечеринку: важно правильно выбрать приглашение, контролировать доступ и обеспечить комфортное общение. Если следовать инструкциям и учитывать ограничения, вы сможете легко подключать USB устройства к ВМ и использовать их так же удобно, как на физическом сервере. Удачи в ваших виртуальных приключениях!