文章目录
- 38 KVM管理设备-管理虚拟机USB
- 38.1 配置USB控制器
- 38.1.1 概述
- 38.1.2 注意事项
- 38.1.3 配置方法
- 38.2 配置USB直通设备
- 38.2.1 概述
- 38.2.2 注意事项
- 38.2.3 配置说明
- 38.2.4 配置方法
38 KVM管理设备-管理虚拟机USB
为了方便在虚拟机内部使用USBkey设备、USB海量存储设备等USB设备,openEuler提供了USB设备直通的功能。用户可以通过USB直通和热插拔相关接口给虚拟机配置直通USB设备、或者在虚拟机处于运行的状态下热插/热拔USB设备。
38.1 配置USB控制器
38.1.1 概述
USB控制器是为虚拟机上的USB设备提供具体USB功能的虚拟控制器设备,在虚拟机内部使用USB设备必须给虚拟机配置USB控制器。当前openEuler支持如下三种USB控制器:
- UHCI(Universal Host Controller Interface):通用主机控制器接口,也称为USB 1.1主机控制器规范。
- EHCI(Enhanced Host Controller Interface):增强主机控制器接口,也称为USB 2.0主机控制器规范。
- xHCI(eXtensible Host Controller Interface):可扩展主机控制器接口,也称为USB 3.0主机控制器规范。
38.1.2 注意事项
- 主机服务器上需存在支持USB 1.1、USB 2.0和USB 3.0标准的USB控制器硬件和模块。
- 为虚拟机配置USB控制器时,请按照USB 1.1、USB 2.0到USB 3.0的顺序来配置。
- 一个xHCI控制器有8个端口,最多可以挂载4个USB 3.0设备和4个USB 2.0设备。一个EHCI控制器有6个端口,最多可以挂载6个USB2.0设备。一个UHCI控制器有2个端口,最多可以挂载2个USB 1.1设备。
- 每台虚拟机最多支持配置一个相同类型的USB控制器。
- 不支持热插拔USB控制器。
- 若虚拟机没有安装USB 3.0的驱动,可能无法识别xHCI控制器,USB 3.0驱动下载和安装方法请参见对应OS发行商官方说明。
- 为了不影响操作系统的兼容性,为虚拟机配置USB接口的tablet设备时,请指定USB控制器bus号为0(默认挂载到USB 1.1控制器上)。
38.1.3 配置方法
这里介绍为虚拟机配置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>
38.2 配置USB直通设备
38.2.1 概述
当虚拟机配置好USB控制器后,就可以通过设备直通的方式将主机上的物理USB设备挂载到虚拟机内部供虚拟机使用。在虚拟化场景下,除了支持静态配置以外还同时支持USB设备的热插/拔操作,即在虚拟机处于运行状态的时候挂载/卸载USB设备。
38.2.2 注意事项
- 一个USB设备只能直通给一台虚拟机使用
- 配置了直通USB设备的虚拟机不支持热迁移
- 虚拟机配置文件中直通的USB设备不存在时,虚拟机会创建失败
- 对一个正在读写的USB存储设备进行强制热拔操作有可能会损坏USB设备内的文件
38.2.3 配置说明
这里介绍为虚拟机配置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>
- ,其中,m表示该USB设备在主机上的bus地址,n表示device ID编号。
- 表示该USB设备要挂载到虚拟机指定的USB控制器。其中x表示控制器ID,与虚拟机所配置的USB控制器index编号相对应,y表示port地址。用户配置直通USB设备的时候需要配置这个字段,确保设备挂载的控制器与预期相符。
38.2.4 配置方法
配置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
-
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!