Динамический проброс USB-устройства в виртуальную машину на базе KVM-гипервизора

Задача: необходимо выполнить проброс Flash-накопителя в виртуальную машину на базе KVM-гипервизора, чтобы при переподключении одного и тоже же Flash-накопителя гипервизор автоматически выполнял проброс с хост-машины в гостевую.

Проблема: При переподключении Flash-накопителя через GUI virt-manager устройство автоматически не импортируется в виртуальную машину, так как при переподключении изменился индентификатор устройста.

Проброс KVM через virt-manager

Решение: Чтобы обойти данную проблему необходимо создать файл с описанием параметров idVendor и idProduct для Flash-накопителя. Параметры lsusb

После того, как мы узнали idVendor и idProduct, создадим файд .xml формата, чтобы импортировать его в конфигурацию виртуальной машины KVM. В файле /etc/libvirt/qemu/usb_device.xml указывает полученные данные в шестнадцатиричном формате. Здесь usb_device.xml любое название файла.

<hostdev mode='subsystem' type='usb'>
  <source>
    <vendor id='0xffff'/>
    <product id='0x5678'/>
  </source>
</hostdev>

Далее создадим правило в файле /etc/udev/rules.d/90-libvirt-usb.rules для устройства, которое будет подключено к хост-машине.

ACTION=="add", \
    SUBSYSTEM=="usb", \
    ENV{ID_VENDOR_ID}=="ffff", \
    ENV{ID_MODEL_ID}=="5678", \
    RUN+="/usr/bin/virsh attach-device win2016 /etc/libvirt/qemu/usb_device.xml"
ACTION=="remove", \
    SUBSYSTEM=="usb", \
    ENV{ID_VENDOR_ID}=="ffff", \
    ENV{ID_MODEL_ID}=="5678", \
    RUN+="/usr/bin/virsh detach-device win2016 /etc/libvirt/qemu/usb_device.xml"

Здесь /usr/bin/virsh путь до бинарного файла virsh, win2016 – имя виртуальной машины, на которую выполняем проброс Flash-накопителя, /etc/libvirt/qemu/usb_device.xml – путь до .xml файла с описание устройства. Так же в файле правила указывает идентификаторы Flash-накопителя ID_VENDOR_ID = idVendor и ID_MODEL_ID = idProduct.

Перезагружаем правила udev командой udevadm control --reload-rules && udevadm trigger или перезагружаем хост-машину. После этого переподключаем Flash-накопитель и проверяем работу динамического проброса устройства.

Сведения о статье:
Дата публикации: 19/11/2019 8:09AM
Последнее обновление: 19/11/2019 8:44AM (rmntrvn)
Поделиться статьей: 
Автор: rmntrvn
Постоянная ссылка: http://kb.rmntrvn.ru/kb/usb-passthrough-on-kvm