Задача: Проработать от и до, как в свой тестовый полигон подключить USB
носитель и прокинуть/пробросить его к одной из VM
. Ведь по-сути такое легко делается при использовании гипервизора ESXi
, а тут у меня связка Debian 10 + Proxmox 6
root@srv-proxmox:~# pveversion pve-manager/6.0-6/c71f879f (running kernel: 5.0.21-1-pve) root@srv-proxmox:~#
Т.к. мой тестовый полигон представлен на конфигурации:
Motherboard: Gigabyte 970A-DS3P
RAM: HMT451U6AFR8C x 4
CPU: AMD FX(tm)-6300 Six-Core Processor
HDD: (KINGSTON SA400S37480G, SBFKB1C2)
в один из разъемов USB
я подключил USB Flash Drive
, гипервизор Debian 10 + Proxmox 6
увидел его, как:
[Thu Oct 3 20:52:44 2019] usb 8-3: New USB device found, idVendor=8564, idProduct=1000, bcdDevice= 4.20 [Thu Oct 3 20:52:44 2019] usb 8-3: New USB device strings: Mfr=0, Product=1, SerialNumber=0 [Thu Oct 3 20:52:44 2019] usb 8-3: Product: USB2.0 Hub
Так у меня есть idVendor & idProduct
Открываю браузер (Google Chrome
) со своей рабочей системы (Ubuntu 18.04 Desktop amd64
) и обращаюсь на URL
-адрес Proxmox 6:
https://IP&DNS:8006 — user&pass — (Folder View) Datacenter — Virtual Machine
— к примеру пробрасывать USB
носитель буду к VM: 103 (W-W7X64)
, сейчас она у меня выключена. Открываю ее свойства: VM: 103 (W-W7X64) - Hardware — Add — USB Device
, далее выбираю «Use USB Vendor/Device ID
»
Но вот почему-то мастер добавления не видит моего подключенного физически USB
носителя, разбираюсь почему так произошло.
root@srv-proxmox:~# lsusb | grep JetFlash Bus 003 Device 003: ID 8564:1000 Transcend Information, Inc. JetFlash
Вычитал из документации, что есть два варианта проброса USB
Вариант №1: Проброс USB
устройства в гостевую VM
производится путем редактирования конфигурационного файла VM
указанием явно idVendor & idProduct:
Вариант №2: Проброс USB
устройства в гостевую VM
производится путем редактирования конфигурационного файла VM
указанием явно на каком интерфейсе/разъеме на материнской плате находится USB:
Оба варианта не заработали до тех пока покуда
IOMMU
в BIOS
выключен:
root@srv-proxmox:~# dmesg | grep -iE "(IOMMU|AMD-Vi)" [ 1.401667] PCI-DMA: using GART IOMMU. [ 1.401669] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture root@srv-proxmox:~#
IOMMU
в BIOS
включил:
Отправляю систему в перезагрузку и в момент прохода POST
нажимаю клавишу Del
тем самым попадаю в BIOS
. У меня BIOS Version: FD
, перехожу в настройку Peripherals
и изменяю IOMMU Controller
с дефолтного Disabled
на Enabled
, затем нажимаю F10
и подтверждаю «Save configuration and exit?
» — Yes
. Тем самым активируется настройка, система загружается и проверяю:
root@srv-proxmox:~# dmesg | grep -iE "(IOMMU|AMD-Vi)" [ 1.427685] iommu: Adding device 0000:00:00.0 to group 0 [ 1.427755] iommu: Adding device 0000:00:02.0 to group 1 [ 1.427832] iommu: Adding device 0000:00:04.0 to group 2 [ 1.427902] iommu: Adding device 0000:00:09.0 to group 3 [ 1.427976] iommu: Adding device 0000:00:11.0 to group 4 [ 1.428057] iommu: Adding device 0000:00:12.0 to group 5 [ 1.428070] iommu: Adding device 0000:00:12.2 to group 5 [ 1.428157] iommu: Adding device 0000:00:13.0 to group 6 [ 1.428171] iommu: Adding device 0000:00:13.2 to group 6 [ 1.428244] iommu: Adding device 0000:00:14.0 to group 7 [ 1.428314] iommu: Adding device 0000:00:14.1 to group 8 [ 1.428385] iommu: Adding device 0000:00:14.2 to group 9 [ 1.428451] iommu: Adding device 0000:00:14.3 to group 10 [ 1.428527] iommu: Adding device 0000:00:14.4 to group 11 [ 1.428593] iommu: Adding device 0000:00:14.5 to group 12 [ 1.428676] iommu: Adding device 0000:00:16.0 to group 13 [ 1.428691] iommu: Adding device 0000:00:16.2 to group 13 [ 1.428780] iommu: Adding device 0000:01:00.0 to group 14 [ 1.428803] iommu: Adding device 0000:01:00.1 to group 14 [ 1.428882] iommu: Adding device 0000:02:00.0 to group 15 [ 1.428958] iommu: Adding device 0000:03:00.0 to group 16 [ 1.469218] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40 [ 1.469219] AMD-Vi: Interrupt remapping enabled [ 1.469324] AMD-Vi: Lazy IO/TLB flushing enabled [ 1.842740] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] [ 1.842804] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] [ 1.842893] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] [ 1.842986] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] [ 1.843082] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] [ 1.843173] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] [ 1.843265] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] [ 1.843356] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] [ 1.843446] AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0xce25d880 flags=0x0000] root@srv-proxmox:~#
Проверяю, у меня сейчас есть VM ID: 103 Name: W-W7X64
она выключена, вставляю в материнскую плату моего гипервизора USB Flash Drive
, гипервизор распознал ее как:
root@srv-proxmox:~# lsusb | grep JetFlash Bus 003 Device 002: ID 8564:1000 Transcend Information, Inc. JetFlash
Так теперь возвращаюсь к VM
, перехожу на Hardware — Add — USB Device
— выбираю Use USB Vendor/Device ID
и вижу USB
носитель подключенный к гипервизору. На представленном скриншоте ниже я его выделил.
Выбрав его нажимаю Add
, оно появляется, как список всех устройств у VM:
А содержимое конфигурационного файла VM
представляет из себя строку с USB Flash Drive:
# Проброс устройства USB # где 0781:5572 - это Vendor ID & Device ID usb0: host=8564:1000
Это был первый вариант подключения к VM USB
-носителя, второй это по номеру порта на материнской плате:
VM
, перехожу на Hardware — Add — USB Device
— выбираю — Use USB Port
Choose Port: 3-3 где первая 3 — это Шина Bus 03 где вторая 3 — это порт Port 3 root@srv-debian:~# lsusb -t /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/4p, 480M |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
А содержимое конфигурационного файла VM
представляет из себя строку с USB Flash Drive:
# Проброс устройства USB
# где 3-3 <=> Bus 03 Port 3 (lsusb -t)
usb0: host=3-3
Оба варианта работают.
Теперь включаю VM
(виртуальную машину)
https://IP&DNS:8006 — user&pass — (Folder View) — Datacenter — Virtual Machine
— выделяю VM ID 103 Name: W-W7X64
и нажимаю Start
, после того как система Windows 7
которая в этой виртуальной машине загрузится нужно доустановить драйвера для работы. Делается это подключением через Hardware — CD/DVD Driver
образа с драйверами virtio-win.0.1.171.iso
. Если же драйвера установлены, то в «Мой компьютер
» вы увидите USB
-носитель:
и с ним можно работать, как с обычным при подключении, Вы его извлекли из гипервизора он пропал в запущенной VM
, подключили снова и он опять доступен. Я такое проделал со всеми своими USB
накопителями и все они работали. Итого все дело было в настройке BIOS
которую нужно активировать дабы можно использовать работу USB
с гипервизором Debian 10 + Proxmox 6.
Работает. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.