USB passthrough кидок USB флешки / пристрої в віртуальну машину на VMWare ESXi

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

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

зміст:

  • Особливості роботи режиму USB Passthrough в VMWare
  • USB Passthrough: кидок USB пристрою в ВМ на ESXi
  • VMware PCI Passthrough (VMDirectPath): кидок USB контролера в ВМ

Особливості роботи режиму USB Passthrough в VMWare

Як ви вже зрозуміли, режим Passthrough дозволяє прокинути фізичний пристрій, підключений до ESXi хосту, безпосередньо в гостьову ОС віртуальної машини. У режимі Passthrough (passing the device through) ви можете надати віртуальній машині прямий доступ до USB флешці / диску, модему, або цілком PCI / USB контролера.

Для проброса USB пристроїв в ESXi потрібні кілька основних компонентів:

  • Arbitrator - окремий сервіс на сервері ESXi, який виконує сканування підключених фізичних USB пристроїв, відповідає за маршрутизацію трафіку USB пристрою між хостом і ВМ, управляє блокуванням доступу до пристрою (тільки одна ВМ може використовувати підключений USB пристрій). USB arbitrator одночасно може відстежувати до 15 USB контролерів.
  • USB контролери - USB контролер повинен бути встановлений як на фізичному хості, так і на віртуальній машині.

Щоб встановити USB контролер для ВМ на VMWare ESXi, відкрийте її налаштування і додайте новий пристрій - USB контролер (USB controller). У разі використання USB контролера потрібно вибрати його тип:

  • USB 2.0 (EHCI + UHCI) - контролер з підтримкою USB 2.0 і USB 1.1 пристроїв;
  • USB 3.0 (xHCI) - підтримуються швидкі пристрої USB 3.0, потрібна версія virtual hardware 8 і вище.
Режим USB 3.0 доступний починаючи з vSphere 5.5 patch 3. Для підтримки такого режиму в гостьовій ОС повинен працювати контролер xHCI. Підтримуються гостьові ОС починаючи з Windows 8.1 / Windows Server 2012 R2 і Linux з ядром 2.6.35.

USB Passthrough: кидок USB пристрою в ВМ на ESXi

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

Основні вимоги та обмеження такого способу проброса:

  • Virtual Hardware 7.0 або вище;
  • Ви можете надати прямий доступ до USB пристрою тільки однієї ВМ;
  • Максимально кількість проброшенних USB пристроїв для однієї ВМ - 20;
  • Чи не підтримується завантаження ВМ з USB.

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

  1. В налаштуваннях ВМ додайте пристрій Host USB device та натисніть Add;
  2. У випадаючому списку виберіть підключений USB пристрій, який потрібно додати;
  3. Для підтримки vMotion для ВМ з підключеним фізичним USB диском потрібно включити опцію "Support vMotion while device is connected";
  4. Після цього USB диск повинен з'явиться всередині гостьової ОС віртуальної машини.
Є ряд обмеження vMotion для ВМ з проброшенним USB диском:

  1. Не можна виключити ВМ або поставити на паузу. При включенні такої машини її потрібно вручну смігріровать на хост, до якого підключено USB пристрій;
  2. Чи не підтримується режим DPM, тому що vCenter може вимкнути хост з USB пристроєм для економії електроенергії;
  3. ESXi хости з ВМ і фізичним USB пристроєм має бути доступні через vmk0 по порту TCP 902.

Якщо при додаванні нового USB пристрої клієнт vSphere пише, що USB пристроїв не виявлено (No available USB devices), Значить ваш USB диск не підтримує VMWare для проброса в такому режимі. Список сумісних USB пристроїв є на сайті VMWare (він не дуже великий). Дивіться секцію "USB Devices tested for Passthrough from an ESXi Host to a Virtual Machine in ESXi 6.7"В статті https://kb.vmware.com/s/article/1021345.

В цьому випадку ви можете з вашого ESXi хоста прокинути в ВМ USB контролер цілком.

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 hub iSerial 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) usb 4-2: new SuperSpeed ​​USB device number 5 using xhci_hcd 2019-12-03T12: 06: 12.570Z cpu0: 33271) usb 4-2: New USB device found , idVendor = 0480, idProduct = b207 2019-12-03T12: 06: 12.570Z cpu0: 33271) usb 4-2: New USB device strings: Mfr = 1, Product = 2, SerialNumber = 3 2019-12-03T12: 06 : 12.570Z cpu0: 33271) usb 4-2: Product: External USB 3.0 2019-12-03T12: 06: 12.570Z cpu0: 33271) usb 4-2: Manufacturer: TOSHIBA 2019-12-03T12: 06: 12.570Z cpu0 : 33271) usb 4-2: SerialNumber: 20180528012427F 2019-12-03T12: 06: 12.571Z cpu0: 33271) usb 4-2: Vendor: 0x0480, Product: 0xb207, Revision: 0x0315 2019-12-03T12: 06: 12.571 Z cpu0: 33271) usb 4-2: Interface Subclass: 0x06, Protocol: 0x50 2019-12-03T12: 06: 12.571Z cpu0: 33271) WARNING: LinScsiLLD: scsi_add_host: 573: vmkAdapter (usb-storage) sgMaxEntries rounded to 255 . Reported size was 65535 2019-12-03T12: 06: 12.571Z cpu0: 33271) usb-storage 4-2: 1.0: interface is claimed by usb-storage 2019-12-03T12: 06: 12.571Z cpu0: 33271) usb 4-2: device is not availa ble for passthrough 2019-12-03T12: 06: 12.571Z cpu0: 33271) usb 4-2: usbfs: registered usb0405 2019-12-03T12: 06: 15.454Z cpu0: 33207) usb-storage 4-2: 1.0: suspended

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

#chkconfig usbarbitrator --list.

Відповідно, ми отримали номер USB контролера, який потрібно прокинути в ВМ.

  1. Щоб прокинути фізичний USB контролер, виберіть ESXi хоста, на якому запущена ваша ВМ і перейдіть в розділ Manage -> Settings -> PCI Devices -> Edit;
  2. У списку PCI пристроїв знайдіть і виберіть потрібний USB контролер по його ID (в моєму прикладі 00: 1D.0, контролер називається C610 / X99 series chipset USB Enhanced Host Controller # 1 Intel Corporation);
  3. Статус USB контролера повинен змінитися з Unavailable (This device is not currently available for VMs to use) на Available (This device available for VMs to use). натисніть Ок.
  4. Для збереження змін потрібно перезавантажити хост ESXi.
  5. Після завантаження хоста, вимкніть ВМ і додайте нове PCI пристрій (New Device -> PCI Device -> Add). У випадаючому списку виберіть ваш USB контролер (наприклад 0000: 00: 1D | Intel Corporation USB Chipset ...). Якщо при додаванні PCI пристрої в налаштуваннях ВМ з'явилося попередження: "Warning: The VM will not power on until its memory reservation equals its memory size", Потрібно зарезервувати пам'ять для ВМ.
  6. Увімкніть ВМ і переконайтеся, що в гостьовій ОС з'явився USB диск. У моєму випадку в гостьовій Windows Server 2012 R2 з'явився підключений USB диск "Toshiba External USB 3.0 USB Device".

У режимі VMDirectPath ви можете прокинути в ВМ до двох PCI пристроїв.

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

Hyper-V також підтримує режим проброса фізичних USB пристроїв в ВМ.