为了方便在虚拟机内部使用USBkey设备、USB海量存储设备等USB设备,openEuler提供了USB设备直通的功能。用户可以通过USB直通和热插拔相关接口给虚拟机配置直通USB设备、或者在虚拟机处于运行的状态下热插/热拔USB设备。
USB控制器是为虚拟机上的USB设备提供具体USB功能的虚拟控制器设备,在虚拟机内部使用USB设备必须给虚拟机配置USB控制器。当前openEuler支持如下三种USB控制器:
这里介绍为虚拟机配置USB控制器的配置内容说明。建议同时配置USB 1.1、USB 2.0和USB 3.0,做到同时兼容三种设备。
USB 1.1控制器(UHCI)的XML配置项为:
<controller type='usb' index='0' model='piix3-uhci'>
</controller>
USB 2.0控制器(EHCI)的XML配置为:
<controller type='usb' index='1' model='ehci'>
</controller>
USB 3.0控制器(xHCI)的XML配置为:
<controller type='usb' index='2' model='nec-xhci'>
</controller>
当虚拟机配置好USB控制器后,就可以通过设备直通的方式将主机上的物理USB设备挂载到虚拟机内部供虚拟机使用。在虚拟化场景下,除了支持静态配置以外还同时支持USB设备的热插/拔操作,即在虚拟机处于运行状态的时候挂载/卸载USB设备。
这里介绍为虚拟机配置USB设备的配置内容说明。
USB设备的XML描述:
<hostdev mode='subsystem' type='usb' managed='yes'>
<source>
<address bus='m' device='n'/>
</source>
<address type='usb' bus='x' port='y'/>
</hostdev>
配置USB直通的步骤如下:
为虚拟机配置USB控制器,配置方法请参见“虚拟机配置 - 配置USB控制器”。
查询主机上的USB设备信息。
通过lsusb命令(需要安装usbutils软件包)查询主机上的USB设备信息,包含bus地址、device地址、设备厂商ID、设备ID和产品描述信息等。例如:
# lsusb
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 002: ID 0bda:0411 Realtek Semiconductor Corp.
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 003: ID 136b:0003 STEC
Bus 005 Device 002: ID 0bda:5411 Realtek Semiconductor Corp.
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 12d1:0003 Huawei Technologies Co., Ltd.
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
准备USB设备的XML描述文件,注意在设备热拔之前,请确保USB设备当前不在使用当中,否则可能造成数据丢失。
执行热插、热拔命令。
假设虚拟机名称为openEulerVM,对应的配置文件为usb.xml。
热插USB设备,只对当前运行的虚拟机有效,虚拟机冷重启后需要重新配置。
# virsh attach-device openEulerVM usb.xml --live
热插USB设备,持久化该配置,即该虚拟机重启后该设备会自动直通给该虚拟机使用。
# virsh attach-device openEulerVM usb.xml --config
热拔USB设备,只对当前运行的虚拟机有效,持久化配置的USB设备在虚拟机重启后USB设备会自动直通给该虚拟机。
# virsh detach-device openEulerVM usb.xml --live
热拔USB设备,持久化该配置。
# virsh detach-device openEulerVM usb.xml --config
点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!