Как использовать USB-устройства с виртуальной машиной VMware vSphere

Основная функция гипервизора – эмулировать устройства, используемые виртуальными машинами на программном уровне. Устройства создаются в виртуальной машине, будь то виртуальные контроллеры, диски, DVD-приводы, видеокарты, сетевые карты, вводные устройства и т. Д. Но что, если вы хотите подключить принтер, сканер, USB-флеш-накопитель, USB-жесткий диск, считыватель смарт-карт USB, защитные ключи USB-лицензий и т. Д.?

Для внешних физических устройств с интерфейсом USB вы можете подключить их к виртуальной машине, работающей на VMware Workstation или сервере ESXi с помощью функции передачи USB. В этом блоге рассматривается использование этой функции в VMware vSphere на хостах ESXi, включая требования и шаги подключения USB-устройств.

Что такое передача USB?

Передача устройств VMware USB – это функция, которая позволяет подключать физическое USB-устройство, подключенное к USB-порту физического сервера ESXi, к виртуальной машине, как если бы USB-устройство было подключено к виртуальной машине напрямую. Передача VMware – это функция, доступная начиная с ESXi 4.1.

Причины использования пропускной способности для USB-устройства от сервера ESXi к гостевой операционной системе (ОС) виртуальной машины различны. Например, у вас есть старый сканер или принтер, для которых нет драйверов для последних версий ОС Windows. Вы можете установить старую версию Windows, поддерживаемую USB-устройством, и подключить это устройство к виртуальной машине. Еще один случай использования этой функции – когда вам нужно копировать файлы с/на USB-жесткий диск в/из виртуальной машины напрямую с высокой скоростью. Может случиться так, что пользователям нужно использовать программное обеспечение, защищенное аппаратными лицензионными ключами USB на виртуальных машинах.

Как работает пропускная способность USB

Для функционирования пропускной способности USB требуется три основных компонента: арбитр, контроллер USB и физическое USB-устройство.

Арбитратор – это выделенная служба на сервере ESXi. Арбитратор сканирует физические USB-устройства, подключенные к физическому серверу, и отвечает за маршрутизацию трафика USB-устройства между физическим хостом и виртуальной машиной. Только одна ВМ может получить доступ к USB-устройству в данный момент. Доступ к USB-устройству, подключенному к одной ВМ, блокируется для других ВМ. Арбитратор USB поддерживает до 15 контроллеров USB (vSphere 7.0). Служба Arbitrator включена по умолчанию на ESXi.

A USB controller used on a physical ESXi server is the controller to which physical USB ports are connected. The physical USB controller works with physical USB devices inserted into the physical USB ports of the server. USB controllers can be onboard (they are also called integrated and are built-in on a chip in a motherboard) or external (implemented as PCI or PCIe cards that are inserted into the appropriate slots on a motherboard of a server). The onboard USB controller acts as a bridge between a USB bus and a PCIe (or PCI) bus. The onboard USB controller is physically connected by the appropriate number of PCIe lanes to a chipset on a motherboard.

A virtual USB controller is an emulated device created especially for a virtual machine running on a hypervisor. A virtual USB controller interacts with a physical USB controller when you passthrough a physical USB device from a physical ESXi server to a guest OS on the VM. Presence of a virtual USB controller in VM configuration is required to use the USB passthrough feature on the VM. A maximum of eight virtual USB controllers can be connected to a VM on an ESXi host. If you need to remove a virtual USB controller from a VM configuration, you have to remove all USB devices connected to that controller first. VMware USB driver is installed in a guest OS after adding a virtual USB controller to VM configuration.

A physical USB device is any USB device that has a USB interface and USB port for being connected to a computer. Maximum 20 USB devices can be connected to a single VM or ESXi host.

Стандарты USB и режимы контроллера:

  • USB 2.0 и USB 1.1 (EHCI+UHCI)
  • USB 3.0 (xHCI) версия аппаратного обеспечения ВМ 8 или выше

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

Требования к USB 3.0

USB 3.0 доступен для серверов ESXi начиная с VMware vSphere 5.5 патч 3. Для этого требуется контроллер USB xHCI в конфигурации ВМ. Требования к ОС для использования прямого подключения USB 3.0: Windows 8.1 или выше, Windows Server 2012 R2 или выше, или Linux с ядром Linux 2.6.35 или выше. Устройства USB 3.1 поддерживаются на максимальной скорости начиная с VMware vSphere 7.0

Ограничения для прямого подключения USB

Есть несколько ограничений, о которых следует знать перед началом использования функции прямого подключения USB:

  • A USB drive cannot be used as a boot drive for a VM.
  • Если USB-накопитель используется для загрузки ESXi, этот USB-накопитель не может быть присоединен к ВМ.
  • Требуется виртуальная версия оборудования 7 или выше для ВМ.

Некоторые USB-устройства могут быть не поддержаны VMware:

  • USB-хабы
  • Аудиоустройства и видеокамеры, использующие асинхронную передачу данных
  • Некоторые USB-клавиатуры и мыши (подробности можно найти в статье VMware 1021345)
  • Некоторые смарт-карты, использующие CCID, могут потребовать дополнительной настройки для подключения к ВМ

vMotion возможен для ВМ с подключенными устройствами прямого подключения USB. После правильной конфигурации ВМ и включения vMotion USB-устройства остаются подключенными к ВМ после миграции на другой хост ESXi.

Существуют ограничения vMotion для ВМ, использующих USB-накопители с прямым подключением:

  • Управление распределенной мощностью (DPM) не поддерживается, потому что хост ESXi не может быть выключен для экономии энергии без отключения USB-устройства от виртуальной машины (USB-устройство отключается, если хост выключен с помощью DPM). DPM должен быть отключен на этом хосте.
  • Отказоустойчивость не поддерживается.
  • A VM cannot be suspended or powered off (otherwise USB devices are disconnected from a VM and they can be reconnected only after migration of the VM to the initial ESXi server to which USB devices are physically connected). The VM must be manually migrated to the ESXi host with the attached USB device when you need to power on this VM. Linux guests that were resumed can mount USB devices to different mount points after reconnection.
  • Хосты ESXi, на которых есть виртуальные машины с устройствами USB-прохождения, должны быть доступны через интерфейс ядра VM vmk0 (для сети управления) и TCP-порт 902.

Отключите USB-устройства от виртуальной машины перед использованием функции горячего добавления и добавления процессора, памяти или устройств PCI. В противном случае USB-устройства отключаются автоматически, и при использовании функции горячего добавления некоторые данные могут быть потеряны. Если вы приостановите виртуальную машину, а затем возобновите ее работу, USB-устройства сначала отключаются, а затем снова подключаются к виртуальной машине.

Что касается создания виртуального USB-накопителя VMware или виртуального флеш-накопителя для подключения к виртуальной машине, работающей на ESXi или VMware Workstation, подобно тому, как вы монтируете виртуальный диск гибкого или CD/DVD-диска, в настоящее время эта опция невозможна.

Как подключить USB-устройство к виртуальной машине

Теперь, когда мы ознакомились с теорией, мы можем перейти к практической части и посмотреть на конфигурацию в VMware vSphere.

  1. Вставьте USB-устройство в USB-порт вашего сервера ESXi. В моем случае я собираюсь вставить флеш-накопитель USB.
  2. Затем вы можете проверить, подключено ли USB-устройство к ESXi, введя следующую команду в интерфейсе командной строки ESXi:
    lsusb
  3. Как видно на скриншоте ниже, мой флеш-накопитель теперь подключен к серверу ESXi.
  4. Служба арбитрации USB должна быть запущена. Вы можете проверить статус службы с помощью команды:
    chkconfig usbarbitrator –list
  5. Если USB-арбитратор остановлен, вы можете запустить USB-арбитратор с помощью команды:
    /etc/init.d/usbarbitrator start

    Примечание: Узнайте больше о ESXiCLI в записи блога.

    ВМ находится на хосте ESXi, управляемом Сервером vCenter в моем примере. Windows установлена в качестве гостевой ОС на моей ВМ. Откройте клиент VMware vSphere, перейдите к Хостам и Кластерам. В панели Навигатор выберите виртуальную машину, к которой вы хотите подключить USB-устройство с помощью функции пропуска. ВМ должна быть выключена. В гостевой ОС следует установить VMware Tools.

  6. Как только VM выбрана, нажмите Действия > 编辑设置.
  7. В окне 编辑设置 убедитесь, что контроллер USB присутствует в конфигурации VM. Если контроллер USB ошибкой, нажмите Добавить новый узел > USB-контроллер и выберите тип контроллера USB (USB 2.0 или USB 3.0).
  8. Если контроллер USB присутствует, вы должны добавить USB-устройство, подключенное к серверу ESXi, в вашу виртуальную машину. Щелкните Добавить новое устройство > Устройство USB хоста.
  9. A new string is added to the VM configuration. In the New USB Host device string, select one USB device that you want to connect to the VM. Now I have two USB flash drives attached to my physical ESXi server, and I’m connecting the Verbatim Flash drive to my VM (Verbatim product 0x0302).

    Если вам нужна поддержка vMotion, разверните устройство Новое USB-устройство хоста и выберите флажок «Поддержка vMotion при подключенном устройстве». Учтите требования и ограничения vMotion. Чтобы сохранить настройки и закрыть это окно, нажмите OK.

  10. Запустите виртуальную машину. После загрузки гостевой ОС дождитесь инициализации и установки USB-флеш-накопителя. Затем откройте Диспетчер устройств Windows. Щелкните правой кнопкой мыши Мой компьютер и в контекстном меню выберите Управление. В окне Управление компьютером щелкните Диспетчер устройств и разверните раздел Дисковые накопители (поскольку мы подключаем USB-флеш-накопитель, это устройство должно отображаться в этой категории устройств). Мы видим USB-устройство Verbatim, которое является именем моего USB-флеш-накопителя, подключенного к виртуальной машине с помощью функции VMware USB Passthrough.
  11. Откройте Диспетчер дисков в окне Управление компьютером и убедитесь, что диск назначен для флеш-накопителя USB. В моем случае все правильно, и я теперь могу копировать данные с флеш-накопителя USB на виртуальный диск виртуальной машины в гостевой системе Windows и наоборот.

Проход USB через PCI VMware

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

Если на вашем сервере ESXi установлен USB-контроллер вставлен в слот PCI, вы можете передать этот PCI-устройство в виртуальную машину. Проход PCI VMware также называется VMDirectPass. Этот метод менее удобен, чем использование прохода USB, но может помочь вам выполнить задачу.

Требования

Технология направленного ввода/вывода Intel или виртуализация ввода/вывода AMD (AMD IOMMU) должны быть поддержаны аппаратным обеспечением сервера и включены в UEFI/BIOS. Если у вас есть только один USB-контроллер на вашем сервере, вам следует подключить дополнительный USB-контроллер, чтобы избежать потери соединений с USB-устройствами, используемыми вашим физическим сервером ESXi.

Ограничения и ограничения:

  • A VM cannot be suspended.
  • A VM cannot be migrated to other ESXi hosts with vMotion.
  • Снимки виртуальных машин не поддерживаются.

Давайте посмотрим на процесс подключения USB-устройства к виртуальной машине с использованием PCI-прохода и подключения всего контроллера USB, к которому подключено USB-устройство, к виртуальной машине.

  1. Чтобы идентифицировать USB-устройство и контроллер USB, к которому подключено ваше USB-устройство (если на вашем сервере установлено несколько USB-контроллеров), используйте эту команду:
    lsusb -v | grep -e Bus -e iSerial
  2. Найдите строку с именем вашего USB-устройства, подключенного к контроллеру USB, и определите идентификатор контроллера (например, bus002).
  3. Вы можете проверить журнал VMkernel при подключении USB-устройства к серверу ESXi:
    tail -f /var/log/vmkernel.log | grep -i USB
  4. Откройте VMware vSphere Client и перейдите в раздел Хосты и Кластеры.
  5. Выберите хост ESXi, на котором находится ваша виртуальная машина (к которой вы хотите подключить USB-устройство).
  6. Перейдите на вкладку Настройки, затем выберите PCI-устройства в разделе Оборудование.
  7. Найдите и выберите необходимый контроллер USB в списке PCI-устройств, используя ранее обнаруженный идентификатор.
  8. Теперь статус выбранного контроллера должен измениться на Доступен.
  9. Нажмите OK, чтобы сохранить настройки.
  10. Перезагрузите хост ESXi, чтобы изменения вступили в силу.
  11. Убедитесь, что ваша виртуальная машина выключена. Перейдите в настройки VM, нажмите Добавить новое устройство > PCI-устройство > Добавить. Выберите свой контроллер USB в выпадающем меню, используя правильный идентификатор.
  12. Включите виртуальную машину. Проверьте устройства в гостевой ОС. Если на виртуальной машине установлена Windows, откройте Диспетчер устройств, затем проверьте контроллеры и устройства хранения.

Подключение USB-смарт-карт

Некоторые USB-устройства, имеющие соответствующий класс CCID, могут быть по умолчанию не поддерживаться для подключения к виртуальным машинам. Отображается сообщение об ошибке “Невозможно подключить ‘путь:0/1/6/1’ к этой виртуальной машине. Устройство не найдено”. В журналах вы можете увидеть сообщение:

(vmx-vcpu-0) did not claim interface 0 before use

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

  1. Остановите виртуальную машину. Откройте настройки виртуальной машины, выберите вкладку Параметры VM и нажмите Изменить конфигурацию.
  2. В окне Параметры конфигурации щелкните Добавить параметры конфигурации.
    В качестве альтернативы, вы можете отредактировать файл конфигурации VMX виртуальной машины в интерфейсе командной строки, подключившись к консоли ESXi с помощью SSH-клиента.
  3. Отредактируйте или добавьте эту строку в конфигурацию ВМ, если параметр отсутствует:

    usb.generic.allowCCID = “TRUE”
  4. Сохраните конфигурацию ВМ.
  5. Остановите службу PCSCD, используя эту команду в командной строке ESXi:

    sudo /etc/init.d/pcscd stop
  6. Убедитесь, что служба PCSCD не запущена:

    ps | grep pcscd
  7. Включите ВМ и проверьте устройства, чтобы убедиться, что считыватель смарт-карт USB теперь подключен к ВМ.

Заключение

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

Важно резервировать виртуальные машины VMware для тех, кто использует VMware vSphere. Загрузите NAKIVO Backup & Replication и попробуйте этот универсальный инструмент для защиты данных VMware vSphere VM и других данных в вашей среде.

Source:
https://www.nakivo.com/blog/how-to-use-usb-devices-with-a-vmware-vsphere-virtual-machine/