Облачное хранилище

Проброс USB в Proxmox

На данный момент установлен Proxmox 3.4, но судя по официальной документации, данные инструкции верны начиная с 2,х версий.

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

  • передать «гостю» определенное устройство;
  • передать USB-порт, к которому это устройство подключено.

Проброс USB-устройств

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

# lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 003 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 003 Device 002: ID 046d:c00c Logitech, Inc. Optical Wheel Mouse
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

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

У меня стояла задача пробросить UPS-ы.

(Ситуация, на самом деле не типовая, скорее из серии как быть не должно: На сервер и сетевое оборудование поставлены 2 самый простых безперебойника для рабочих станций. UPS-ы оказались нежными и начинали голосить по поводу и без. Чтоб быстро подрезать им голос и пока не разбираться с управлением ИБП из Debian и было решено подцепить два безперебойника к Windows-гостям.)

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

Пробрасываемые устройства прописываются в конфигурационном файле соответствующей виртуальной машины.

# nano /etc/pve/qemu-server/101.conf
usb0: host=051d:0002

Перезагрузил. Устройство подцепилось, вроде бы все хорошо. Но тут вспоминаем, что второе устройство с таким же идентификатором. Как их различать? И действительно, опыт показал, что если в две виртуальные машины прописать один идентификатор, то они при включении будут отбирать друг у друга одно и то же устройство. Не смотря на то, что в host-системе есть несколько USB-устройств с таким идентификатором.

Вот тут то мы и вспоминаем, что есть другой способ проброса.

Проброс USB-портов

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

Первый способ:

# lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 480M
 |__ Port 4: Dev 2, If 0, Class=HID, Driver=usbhid, 1.5M
 |__ Port 7: Dev 3, If 0, Class=HID, Driver=usbfs, 12M
 |__ Port 8: Dev 4, If 0, Class=HID, Driver=usbfs, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
 |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
 |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M

 

Как позже выяснилось, нужные мне устройства сидят на шине 3, порты 7 и 8. Но пока нам это не очевидно и вот вариант второй:

qm monitor <VM_ID>
qm> info usbhost
 Bus 3, Addr 4, Port 8, Speed 12 Mb/s
 Class 00: USB device 051d:0002, Back-UPS XS 650CI FW:892.R2.I USB FW:R2
 Bus 3, Addr 3, Port 7, Speed 12 Mb/s
 Class 00: USB device 051d:0002, Back-UPS XS 650CI FW:892.R2.I USB FW:R2
 Bus 3, Addr 2, Port 4, Speed 1.5 Mb/s
 Class 00: USB device 046d:c00c, USB Optical Mouse

Тут мы наглядно видим кто есть кто. И теперь смело:

# nano /etc/pve/qemu-server/101.conf
usb0: host=3-7

Для полноты картины, дополню инструкцию примером из официальной документации.

Возможен такой вариант:

qm monitor &lt;VM_ID&gt;
qm&gt; info usbhost
 <span style="color: #ff0000;">Bus 3</span>, Addr 2, <span style="color: #ff0000;">Port 1.2</span>, Speed 1.5 Mb/s
 Vendor Specific: USB device 0529:0001, HASP 2.17

тогда в файле конфигурации ВМ надо писать следующим образом:

usb0: host=3-1.2

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