Проброс usb в виртуалку по сети средствами usbredir и qemu

Как получить доступ к локальным и usb жестким дискам на виртуальной машине hyper-v

Создаем файловое хранилище VMFS5/VMFS6 на USB диске или флешке

Процесс создания VMFS5 или VMFS6 хранилищ аналогичен предыдущим версиям:

USB хранилище должно появится в списке хранилищ в разделе Storage.

.

Вот как полностью выглядят команды и их вывод:

] partedUtil mklabel /dev/disks/naa.5000000000000002 gpt[root@esx6:

] eval expr $(partedUtil getptbl /dev/disks/naa.5000000000000002 | tail -1 | awk ») — 1250067789[root@esx6:

] partedUtil setptbl /dev/disks/naa.5000000000000002 gpt «1 2048 250067789 AA31E02A400F11DB9590000C2911D1B8 0″gpt0 0 0 01 2048 250067789 AA31E02A400F11DB9590000C2911D1B8 0[root@esx6:

] vmkfstools -C vmfs6 -S USB-Datastore /dev/disks/naa.5000000000000002:1create fs deviceName:’/dev/disks/naa.5000000000000002:1′, fsShortName:’vmfs6′, fsName:’USB-Datastore’deviceFullPath:/dev/disks/naa.5000000000000002:1 deviceFile:naa.5000000000000002:1ATS on device /dev/disks/naa.5000000000000002:1: not supported.Checking if remote hosts are using this device as a valid file system. This may take a few seconds. Scanning for VMFS-3/VMFS-5 host activity (512 bytes/HB, 2048 HBs).Creating vmfs6 file system on «naa.5000000000000002:1» with blockSize 1048576, unmapGranularity 1048576, unmapPriority default and volume label «USB-Datastore».Successfully created new volume: 583b0efb-33b7ba1e-57e7-001fc69b9659

Prerequisite knowledge

If you’re new to EXSI, you should know a few things:

  • A Datastore is basically this separate layer that sits between a physical device/disk and a virtual disk. A datastore can max the storage of a physical disk, or not. A datastore can have many virtual disks. Virtual disks are what a virtual machine will stores files on. In other words
  • RDM aka Raw Device Mapper is a pointer file that acts like a virtual disk but instead maps directly to a physical disk. RDMs on EXSI 6.5 have to be created in the command line.

Instructions

  1. Before you get started, make sure you’ve got a VM setup, and running.
    In my example, I have a virtual machine and virtual disk both conveniently named

  2. In EXSI’s web interface, log in, go to the home page. Click on > > .

  3. Open a SSH session to the ESXi/ESX host.

  1. Run this command to list the disks that are attached to the ESXi host:

It should look like this. We care about the physical disks with the prefix . As mentioned in the comments, it may not necessarily start with . You can determined the name/path by going to the web console then , then , click on the device you’re setting up as RDM, and then copying the path.

Here I have a HGST 5TB disk attached to SATA that I’m trying to passthrough to my VM. There will be other listings here of datastores, and virtual disks that is not relevant.

  1. Attach a physical disk as a RDM
  • Make sure you read section about datastores, and virtual disks first.

  • is attaching the physical disk and mapping it to a file. files can only mount in virtual disk folders. e.g. folders.

  • The folder structure is in this format: The should be the name of the virtual disk you’re using in your VM, for me it’s called . You should and around to find the right virtual disk. In my case, is simply the datastore name I wrote to be self descriptive. nb. It has to ben an existing store or else you get error . See

  1. Attach the newly created RDM to the VM
  • Go back to the web app, go to the Virtual Machine, and click Edit.
  • Under , click (If you already have an existing SCSI controller for RDMs, you don’t need to create another one). In other words, you can reuse the controllers.
  • Under , click and select the newly created vmdk file. You’ll have to use the Datastore file browser to select the file
  • Once the HDD is created, under the new disk e.g. , expand it and make sure it’s using the newly created SCSI controller. You’ll have to click on the drop down and select e.g. and
  • Change to . If the is greyed out then change from to .

FAQ

  1. What if I want to change the RDM to another VM?

Simply rm the vmdk file and go through steps 5 and 6 again with the new virtual disk for the new VM.

  1. How can I passthrough multiple disks to the same VM?

Simply follow steps 4 to 6 but with the new disk. You can mount the RDM drives to the same SCSI controller. In other words, the first drive could be on , and the next drive could be on . There is a limit of 4 SCSI controllers per VM.
nb: Thanks to commenters for pointing out that you don’t actually need a separate SCSI controllers per RDM. Personally, I’d have a separate SCSI controller just for RDMs only for cleaniness.

Действия на стороне СХД

Необходимые настройки на СХД можно разделить на два этапа:

  • Настройка интерфейсов
  • Настройка пространства хранения

Настраивать интерфейсы требуется в основном в случае использования протокола iSCSI: необходимо задать IP адреса портов на вкладке iSCSI Ports. IP адреса портов должны быть из разных подсетей, чтобы однозначно маршрутизировался трафик на стороне хоста.

В случае использования интерфейса Fibre Channel ничего настраивать, как правило, не нужно.

Далее необходимо создать пространство хранения. Сначала создается пул – группа физических накопителей, работающих совместно. Пулов в пределах СХД может быть несколько. Накопители внутри пула объединяются в соответствии с выбранным при его создании уровнем RAID, обеспечивая заданную надежность. Пулы создаются на вкладке Pools → Create Pool, где запускается пошаговый мастер.

VMware PCI Passthrough (VMDirectPath): проброс USB контроллера в ВМ

Другой, менее удобный метод предоставления доступа из ВМ к физическому USB устройству – проброс целиком USB контроллера с ESXi хоста. Этот режим называется VMDirectPath . Для его использования чипсет сервера должен поддерживать Intel Directed I/O или AMD I/O Virtualization Technology (AMD IOMMU) , и этот режим включен в настройках BIOS/UEFI.

Если на сервере установлен только один USB контроллер, при пробросе его в ВМ, вы не сможете использовать локально подключенные USB устройства хоста (клавиатуру, мышь). В этом случае лучше добавить в сервер дополнительный PCI USB контроллер.

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

lsusb -v | grep -e Bus -e iSerial

В выводе команду нужно найти строку USB накопителя, например:

Bus 002 Device 003: ID 0280:a00c Toshiba America Info. Systems, Inc.

Затем по номеру контроллера (Bus02 в этом случае) определяем root hub и его iSerial:

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 3.0 root hubiSerial 1 0000:00:1D.0

Если вы не видите ваш USB диск, попробуйте подключить и отключить его физически и посмотреть в логе vmkernel.log, что служба USB Arbitrator определила ваш диск:

tail -f /var/log/vmkernel.log | grep -i USB

2019-12-03T12:06:12.546Z cpu0:33271)<6>usb 4-2: new SuperSpeed USB device number 5 using xhci_hcd2019-12-03T12:06:12.570Z cpu0:33271)<6>usb 4-2: New USB device found, idVendor=0480, idProduct=b2072019-12-03T12:06:12.570Z cpu0:33271)<6>usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=32019-12-03T12:06:12.570Z cpu0:33271)<6>usb 4-2: Product: External USB 3.02019-12-03T12:06:12.570Z cpu0:33271)<6>usb 4-2: Manufacturer: TOSHIBA2019-12-03T12:06:12.570Z cpu0:33271)<6>usb 4-2: SerialNumber: 20180528012427F2019-12-03T12:06:12.571Z cpu0:33271)<6>usb 4-2: Vendor: 0x0480, Product: 0xb207, Revision: 0x03152019-12-03T12:06:12.571Z cpu0:33271)<6>usb 4-2: Interface Subclass: 0x06, Protocol: 0x502019-12-03T12:06:12.571Z cpu0:33271)WARNING: LinScsiLLD: scsi_add_host:573: vmkAdapter (usb-storage) sgMaxEntries rounded to 255. Reported size was 655352019-12-03T12:06:12.571Z cpu0:33271)<6>usb-storage 4-2:1.0: interface is claimed by usb-storage2019-12-03T12:06:12.571Z cpu0:33271)<6>usb 4-2: device is not available for passthrough2019-12-03T12:06:12.571Z cpu0:33271)<6>usb 4-2: usbfs: registered usb04052019-12-03T12:06:15.454Z cpu0:33207)<6>usb-storage 4-2:1.0: suspended

В ESXi 6.5 были внесены некоторые изменения касательно устройств, подключенных через USB порты. Унаследованные драйверы, включая xhci, ehci-hcd, usb-uhci и usb-storage, были заменены единым USB-драйвером с именем vmkusb. Новый драйвер имеет некоторые особенности, позволяющие подключать внешний USB-устройства (флешки или USB жесткие диски) и использовать их в качестве VMFS хранилищ.

В этой статье, я попробую собрать вместе всю информацию о подключении USB устройств, использовании их в качестве хранилищ ВМ с файловой системой VMFS5 или VMFS6 на хосте ESXi и типовых проблемах.

Важно

Обратите внимание, что использование USB хранилищ официально не поддерживается VMware (кейс о проблеме с таким хранилищем завести не получится)

Выбор решения

Программного обеспечения, которое может обеспечить проброс USB устройств по сети, очень много. После долгих сравнений набора возможностей, стоимости и предлагаемого набора клиентов решение было выбрано – VirtualHere.

Скажу сразу – решение платное (49$). Однако, лицензируется сервер целиком, т.е. нет ограничений на количество подключенных устройств. Без лицензии в один и тот же момент времени можно использовать только одно USB устройство. Для настройки PoC (Proof of Concept) решения этого достаточно. Вы сможете проверить – подойдет ли вам этот продукт или нет.

Почему VirtualHere?

Аргументы в сторону выбора этого решения:

  1. Большой выбор серверной части – Window, Linux, Android, OSX.
  2. До безобразия простая настройка сервера.
  3. Достаточно большой набор клиентов. Есть клиент под Windows, Linux, Mac OS и Android.
  4. Клиент может быть запущен как сервис.
  5. У клиента есть как графический вариант, так и консольный аналог.
  6. У клиента есть свой API.
  7. Относительно гуманная стоимость – 49$.

В качестве физической коробки, к которой будут подключены устройства будет выступать небольшой неттоп. Можно использовать любое практически любое физическое устройство, т.к. ресурсов серверу много не нужно. Можно даже использовать Raspberry Pi.

Могу ошибаться, но все или некоторые аппаратные решения DistKontrolUSB, например, используют клиент как две капли воды похожий на клиент VirtualHere. Возможно, что серверная часть тоже. Но это лишь мои наблюдения и догадки.

Утилита Sconfig: базованя настройка Hyper-V Server 2019/2016

После установки система требует сменить пароль администратора. Меняете пароль и попадаете в консоль гипервизора.

Обратите внимание, что у Hyper-V Server нет привычного графического интерфейса Windows. Большинство настроек сервера придется выполнять через командную строку

На рабочем столе два окна – стандартная командная строка и окно скрипта sconfig.cmd. С помощью данного скрипта можно выполнить первоначальную настройку сервера Hyper-V. В строку “Enter number to select an option:” введите номер пункта меню, с которым будете работать.

Дату, время и часовой пояс можно также настроить с помощью команды:

При этом открываются стандартные консоли.

USB Passthrough: проброс USB устройства в ВМ на ESXi

В нативном режиме USB Passthrough вы можете подключить физическое USB устройство с хоста в виртуальную машину VMWare.

Основные требования и ограничения такого способа проброса:

  • Virtual Hardware 7.0 или выше;
  • Вы можете предоставить прямой доступ к USB устройству только одной ВМ;
  • Максимально количество проброшенных USB устройств для одной ВМ – 20;
  • Не поддерживается загрузка ВМ с USB.

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

  • В настройках ВМ добавьте устройство Host USB device и нажмите Add ;
  • В выпадающем списке выберите подключенное USB устройство, которое нужно добавить;

После этого USB диск должен появится внутри гостевой ОС виртуальной машины.

Есть ряд ограничения vMotion для ВМ с проброшенным USB диском:

  • Нельзя выключить ВМ или поставить на паузу. При включении такой машины ее нужно вручную смигрировать на хост, к которому подключено USB устройство;
  • Не поддерживается режим DPM, т.к. vCenter может выключить хост с USB устройством для экономии электроэнергии;
  • ESXi хосты с ВМ и физическим USB устройством должно быть доступны через vmk0 по порту TCP 902.

В этом случае вы можете с вашего ESXi хоста пробросить в ВМ USB контроллер целиком.

Физическая и логическая коммутация

Совокупность оборудования и линий связи между СХД и серверами образуют так называемую SAN сеть. Отказоустойчивое подключение участников SAN сети подразумевает постоянное наличие хотя бы одного пути между инициатором (хост) и таргетом (СХД). Т.к. СХД сейчас практически поголовно имеют минимум два контроллера, каждый сервер должен иметь связь с каждым из них. В простейшем варианте серверы подключаются к СХД напрямую. Такой режим работы называют Direct Attach. СХД Qsan поддерживают такой режим работы. В этом случае каждый сервер должен иметь двухпортовую HBA для соединения с каждым контроллером СХД. Т.е. между сервером и СХД будет 2 пути. При наличии максимального количества опциональных портов в таком режиме к СХД можно подключить до 10 серверов через iSCSI или до 8 серверов через Fibre Channel.

В большинстве случаев серверы соединяются с СХД через коммутаторы. Для большей надежности их должно быть два (в общем случае их, конечно же, может быть больше, но это они все равно делятся на две группы – фабрики). Этим выполняется защита от выхода из строя самого коммутатора, линка и порта контроллера СХД/HBA. В этом случае каждый сервер и каждый контроллер СХД подключается к каждому коммутатору. Т.е. между каждым сервером и СХД будет 4 пути (в случае двух коммутаторов).

Важные замечания по поводу параметров SAN сети:

Фабрики между собой не соединяются для изоляции в случае возникновения ошибок в сети;
Если протокол iSCSI делит использование коммутаторов с другими сервисами, то весь трафик iSCSI должен быть помещен в изолированный VLAN;
Для протокола Fibre Channel необходимо настроить в коммутаторах зонирование по принципу «один инициатор – один или несколько таргетов» для исключения взаимовлияния серверов друг на друга;
Для iSCSI соединений со скоростью 10G и выше рекомендуется включить поддержку кадров большого размера (MTU=9000) с целью увеличения производительности

Важно помнить, что необходимо изменить MTU у всех участников сети: порты контроллера СХД, физические коммутаторы, виртуальные коммутаторы vSwitch, порты vKernel.. Для Qsan параметр MTU меняется на каждом порту каждого контроллера в меню iSCSI Ports. Для Qsan параметр MTU меняется на каждом порту каждого контроллера в меню iSCSI Ports

Для Qsan параметр MTU меняется на каждом порту каждого контроллера в меню iSCSI Ports

Для ESXi параметр MTU меняется у vSwitch: хост → Configure → Virtual Switches → Edit для конкретного коммутатора

Для vKernel параметр MTU меняется хост → Configure → Virtual Switches → Edit Settings для конкретного порта

Для получения инструкций по изменению MTU у физических коммутаторов рекомендуем обратиться к документации конкретного производителя.

How to Connect a USB Device to a VM

Now that we have familiarized with the theory, we can go to the practical part and look at configuration in VMware vSphere.

Insert a USB device into a USB port of your ESXi server. In my case, I’m going to insert a USB flash drive.

You can check whether the USB device is connected to ESXi after that in the ESXi command line interface

lsusb

As you can see on the screenshot below, my flash drive is now connected to the ESXi server.

The USB arbitrator service must be running. You can check the service status with the command:

chkconfig usbarbitrator –list

If the USB arbitrator is stopped, you can start the USB arbitrator with the command:

/etc/init.d/usbarbitrator start

Read more about ESXiCLI in the blog post.

The VM is residing on the ESXi host that is managed by vCenter Server in my example. Windows is installed as a guest OS on my VM. Open VMware vSphere Client, go to Hosts and Clusters. In the Navigator pane select a virtual machine to which you want to connect the USB device by using the passthrough feature. The VM should be in the powered-off state. You should install VMware Tools in the guest OS.

Once the VM is selected, click Actions > Edit settings.

In the Edit Settings window, check whether a USB controller is present in the VM configuration. If the USB controller is missing, click Add New Device > USB Controller, and select the USB controller type (USB 2.0 or USB 3.0).

If the USB controller is present, you should add the USB device that is attached to the ESXi server to your VM. Click Add New Device > Host USB Device.

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). If you need to enable vMotion support, expand New Host USB device, and select the “Support vMotion while device is connected” checkbox. Keep in mind vMotion requirements and limitations. Hit OK to save the configuration and close this window.

Start a virtual machine. Once the guest OS is loaded, wait until the USB flash drive is initialized and installed. Then open Windows Device Manager. Right click My Computer and, in the context menu, click Manage. In the Computer Management Window, click Device Manager and expand the Disk drives section (as we connect a USB flash drive, this device should be displayed in this category of devices). We can see Verbatim USB device, which is the name of my USB flash drive connected to the VM with the VMware USB Passthrough feature.

Open Disk Management in the Computer Management window, and make sure that a disk drive is assigned to the USB flash drive. In my case, everything is correct, and I can now copy data from the USB flash drive to the virtual disk of a VM in guest Windows and vice versa.

Настройка VirtualHere

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

Настройка сервера

Мы будем использовать вариант с Linux сервером. Наш дистрибутив – Ununtu 20.04. Вы можете использовать любой дистрибутив. Но у меня под рукой для написания статьи был только этот

Если у вас абсолютно новая установка Ubuntu, то предварительно необходимо установить curl:

При наличии на сервере прямого выхода в Интернет установка производится в одну команду:

Теперь проверим статус нашего сервера:

Серсив запущен и готов принимать клиентские подключения. Клиентский трафик прослушивается на порту TCP/7575:

Клиент для Windows

Сначала я покажу, как выглядит клиент для Windows. Скачиваем его с сайта проекта.

Запускаем клиент:

Если вы находитесь в одной подсети с сервером, то клиент скорее всего найдет его автоматически. Если сервер автоматически не найдет, то нужно подсказать клиенту, по какому IP-адресу находится сервер:

Теперь мы видим все подключенные к серверу USB устройства и можем примонтировать одно из них:

Также можем зарегистрировать клиент в качестве службы Windows:

Работу клиента я проверил на следующих серверных ОС: Windows Server 2008 R2, 2012 R2, 2016 и 2019 и соответствующим им клиентским ОС – Windows 7, 8.1, 10 + Windows 11.

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

Клиент для Linux

Теперь я покажу, как выглядит клиент для Linux. Скачиваем его с сайта проекта.

Разрешаем выполнение:

И запускаем клиент.

В остальном работа Linux клиента аналогична работе Windows клиента. Также нужно указать расположение сервера:

Теперь мы можем увидеть перечень устройств и подключить одно из них:

Стоит отметить, что для Linux есть отдельный консольный клиент для тех случае, если вы будите использовать клиент, например, на Linux сервере.

VMware PCI Passthrough (VMDirectPath): проброс USB контроллера в ВМ

Другой, менее удобный метод предоставления доступа из ВМ к физическому USB устройству – проброс целиком USB контроллера с ESXi хоста. Этот режим называется VMDirectPath. Для его использования чипсет сервера должен поддерживать Intel Directed I/O или AMD I/O Virtualization Technology (AMD IOMMU), и этот режим включен в настройках BIOS/UEFI.

Если на сервере установлен только один USB контроллер, при пробросе его в ВМ, вы не сможете использовать локально подключенные USB устройства хоста (клавиатуру, мышь). В этом случае лучше добавить в сервер дополнительный PCI USB контроллер.

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

lsusb -v | grep -e Bus -e iSerial

В выводе команду нужно найти строку USB накопителя, например:

Затем по номеру контроллера (Bus02 в этом случае) определяем root hub и его iSerial:

Если вы не видите ваш USB диск, попробуйте подключить и отключить его физически и посмотреть в логе vmkernel.log, что служба USB Arbitrator определила ваш диск:

tail -f /var/log/vmkernel.log | grep -i USB

Если USB диск не определяется ESXi хостом, проверьте что служба запущена:

Соответственно, мы получили номер USB контроллера, который нужно пробросить в ВМ.

Если при добавлении PCI устройства в настройках ВМ появилось предупреждение: “Warning: The VM will not power on until its memory reservation equals its memory size”, нужно зарезервировать память для ВМ.

В режиме VMDirectPath вы можете пробросить в ВМ до двух PCI устройств.

На ВМ с прокинутым PCI устройством действуют ряд ограничений: вы не можете поставить ВМ на паузу (Suspend), выполнить vMotion на другой хост (логично, т.к. вы привязаны к физическому контроллеру, создавать снапшоты).

На хосте VMWare ESXi вы можете пробросить подключенное к хосту локальное USB устройство/флешку/диск внутрь виртуальной машины. Эта технология называется USB Passthrough и доступна, начиная с ESXi 4.1.

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

Conclusion

This blog post has covered ESXi USB passthrough, which is a useful feature supported by VMware vSphere. You can connect diverse devices attached to USB ports of physical ESXi servers to virtual machines directly and use them in guest operating systems of VMs just like you use these USB devices on regular physical computers. You can even migrate virtual machines using external USB devices connected to the parent ESXi host with vMotion to another host. Despite some limitations, the VMware USB passthrough feature adds more capabilities and flexibility in different situations.

VMware VM backup is important for those who use VMware vSphere. Download the Free Edition of NAKIVO Backup & Replication and try this universal data protection solution to protect your VMware vSphere VMs and other data in your environment.

Подключение внешнего USB накопителя как VMFS хранилища в VMWare ESXi

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

Официально VMWare не поддерживает работу внешних USB устройств в качестве VMFS хранилища. Однако это работает и может использоваться. Кроме того, ESXi не поддерживает USB устройства размером более 2 Тб.

Начиная с VMWare ESXi 6.5 несколько изменилась концепция подключения USB устройств к хосту. Если ранее использовались несколько драйверов (xhci, ehci-hcd, usb-uhci, usb-storage), то теперь вместо них используется один USB драйвер vmkusb.

3. Смотрим информацию по нашей флешке

Видим что ESXi7 запилился в начало флешки, а всю область за разделом 6. Basic Data и до конца он разметил как VMFSL раздел. Окончание L означает что этот раздел предназначается лишь для использования текущим хостом и на нём не применяются механизмы применяемые для vmfs5 и vmfs6 разделов расчитанных на то что с файлами может работать одновременно несколько гипервизоров. На месте 7-го раздела мы и разместим наш датастор :). Путь к нашему разделу выглядит как

Именно его мы будем указывать в командах ниже.

Сценарии применения проброса устройств в Vmware Workstation

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

Вы создали загрузочную флешку с Windows 10 или ESXI, не важно и хотели бы проверить, ее корректную работу
У вас есть USB-принтер, который в данный момент у вас работает на операционной системе Windows 7. Вам предлагают обновиться до Windows 10, но вы не знаете будет ли ваш старый принтер на нем корректно работать, в данном случае его проброс на виртуальную машину с десяткой сможет ответить на данный вопрос.
Проверка USB-токенов в таких продуктах, как КриптоПРО

Например я так тестировал проблемы с JaCarta ключиком.

Применений очень много и, что самое замечательное, если вы сломаете операционную систему внутри виртуальной машины, то это ни как не повлияет на вашу основную ОС.

USB Passthrough Features and Limitations

VMware has a really good KB article that covers USB support in the various ESXi versions. There are several things to note from this KB article.

USB device passthrough requires:

  • You need VM version 7 or higher
  • A USB controller
  • A USB device or device hub
  • Formatting of the USB drive should be ext3 or FAT32

Types of USB Passthrough available:

Host-Connected:  The type of passthrough for USB that has been around the longest, and allows a USB device plugged directly into the ESXi/ESX host to be passed through to a virtual machine.  This is the type of USB passthrough I am working with on the guest virtual machine.

Client-Connected: This feature became available with the release of vSphere 5.0, and allows a USB device plugged into a user’s workstation to be passed through to a virtual machine via the vSphere Client.

Types of USB Controllers available:

  • EHCI+UHCI controller: This is the classic USB controller allowing the usage of USB 2.0 and USB 1.1 devices.
  • xHCI controller: This is the newer controller type allowing the usage of faster USB 3.0 devices. Virtual hardware version 8 is required to use this controller.

USB devices have these limitations:

  • A VM can have no more than 20 USB devices attached to it, however each unique USB device can only be attached to one virtual machine at a time.
  • USB devices that are unsupported, may not interact as expected with other ESXi/ESX features. 
  • Before you hot add memory, CPU, or PCI devices, you must remove any USB devices. Hot adding these resources disconnects USB devices, which may result in data loss.
  • When you suspend and resume a virtual machine, USB devices behave as if they have been disconnected, then reconnected.
  • The virtual machine cannot boot from the attached USB device.

VMware PCI Passthrough

If the USB device that you want to connect to a VM by using the VMware USB passthrough feature is not supported by VMware, you can try using the PCI passthrough feature and connecting the entire physical USB controller that has the PCI interface to a VM. If your ESXi server has a USB controller inserted into a PCI slot, you can passthrough this PCI device to a virtual machine. VMware PCI passthrough is also called VMDirectPass. This method is less convenient than using USB passthrough but can help you get the task done.

Requirements

Intel Directed I/O or AMD I/O Virtualization Technology (AMD IOMMU) must be supported by server hardware and enabled in UEFI/BIOS. If you have only one USB controller in your server, you should attach an additional USB controller to avoid losing connections to USB devices used by your physical ESXi server.

Restrictions and limitations:

  • A VM cannot be suspended.
  • A VM cannot be migrated to other ESXi hosts with vMotion.
  • VM snapshots are not supported.

Let’s look at the workflow of connecting a USB device to a VM by using PCI passthrough and connecting the entire USB controller to which a USB device is connected to a VM.

In order to identify the USB device and USB controller to which your USB device is connected (if there are multiple USB controllers installed on your server) use this command:

lsusb -v | grep -e Bus -e iSerial

Find the string with the name of your USB device connected to the USB controller and identify the id of the controller (for example, bus002).

You can check the VMkernel log when connecting a USB device to an ESXi server.

tail -f /var/log/vmkernel.log | grep -i USB

Open VMware vSphere Client, and go to Hosts and Clusters.

Select the ESXi host on which your VM (to which you need to connect a USB device) is residing.

Go to the Configure tab, then select PCI Devices in the Hardware section.

Find and select the needed USB controller in the list of PCI devices by using the ID you have detected before.

The status of the selected controller should now change to Available.

Hit OK to save settings.

Reboot the ESXi host for changes take effect.

Make sure that your VM is powered off. Go to VM settings, click Add New Device > PCI device > Add. Select your USB controller in the dropdown menu by using the correct ID.

Power On the VM. Check devices in the guest OS. If Windows is installed on the VM, open Device Manager, then check controllers and storage devices.

Native methods of USB redirection to VMware workstation

Even if you have no specialized software, you can still use USB devices during your VM session. However, there will be certain limitations:

  • For one, you can only access USB devices physically attached to your host machine. Those connected to other computers on your network are, sadly, out of the question.
  • The next thing to take into account is a very limited number of local USB devices that you can connect to your virtual machine side by side — only two at a time. Sure, you can use a hub, but that won’t help to expand the number since hubs can’t be detected as virtual devices.
  • By default, the auto-connect function in the USB Controller panel of the Virtual Machine Settings Editor is enabled so a device that you plug into your host PC will be automatically connected to the guest system, provided that VM’s window is active.

In case the VM doesn’t have any free ports, you’ll see a dialog box asking you what to do next: replace one of the already connected devices with that newly attached one, or just ignore it. Any ignored device will be connected to the host PC, so any time you can go to the VM > Removable Devices panel and manually redirect it to your VM. To do so, click VM > Removable Devices > Device Name > Connect.

For every USB port, there is a menu with a list of all devices connected to the host PC that can be redirected to the guest system. Just pause the mouse pointer on a menu option and click on the device’s name to attach it. The new device will automatically replace whatever peripheral was already connected to that port. To disconnect the device, choose the “None” option.

Key elements of setting up VMware ESXi USB passthrough

Here are a few things you need to take into account prior to setting up VMware ESXi USB passthrough:

  • As long as a USB device connected to a virtual machine, you won’t be able to access it from any other VM;
  • Any device that’s not connected directly to a host machine won’t be available for redirection to a guest OS;
  • You’ll need specialized software to access USB devices attached to other machines in your network.

To enable VMware ESXi USB passthrough, follow these steps:

Step 1: Log in to your VMware vSphere Web Client. Then go to Inventory of your VM.

Step 2: On the Virtual Machines list, find the VM that you want to redirect your USB device to. Right-click on a VM’s name to evoke the context menu, then pick Edit Settings…

Step 3: At the bottom of the tab, enable the Host USB device option, then click “Select” next to the “New device”, pick your device on the drop-down menu, and click the Add button.

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: