首页 理论教育 基于KVM的桌面云服务端I/O虚拟化研究

基于KVM的桌面云服务端I/O虚拟化研究

时间:2023-10-19 理论教育 版权反馈
【摘要】:USB设备包括控制器和外设,控制器位于主机上且一个主机可同时拥有多个USB控制器,控制器通过root hub提供接口供其他USB设备连接,而这些USB设备又可以分为hub、存储、智能卡、加密狗、打印机等。目前常用的USB协议有1.1、2.0、3.0、3.1等。在QEMU中,一般可以对USB控制器进行透传,外设进行透传或重定向。

基于KVM的桌面云服务端I/O虚拟化研究

USB设备包括控制器和外设,控制器位于主机上且一个主机可同时拥有多个USB控制器,控制器通过root hub提供接口供其他USB设备连接,而这些USB设备又可以分为hub、存储、智能卡、加密狗、打印机等。目前常用的USB协议有1.1、2.0、3.0、3.1(Type-C)等。在QEMU中,一般可以对USB控制器进行透传,外设进行透传或重定向

(1)控制器透传

USB控制器也位于PCI总线上,所以将整个控制器及其上面的hub、外设全部透传至虚拟机中,可以参考上一节中的相关域定义,不同的是我们需要找到USB控制器对应的PCI总线地址,如下所示:

然后选择要透传的USB控制器,需要查看主机线路简图或外设简图以确定要透传的USB接口,如果是对主机直接操作,需避免将连有USB键盘鼠标设备的控制器透传至虚拟机,否则会造成后续操作的不便。

参考上一节中的驱动绑定,使用vfio-pci对USB控制器进行透传,假设要透传的控制器为2号控制器,它的总线地址为00:1a.0,设备ID为8086:8d26:

最后在QEMU中添加如下参数:(www.xing528.com)

(2)外设透传

QEMU下USB外设的透传相对比较容易,只需要在域定义中添加对应的USB外设的厂商与设备ID即可,以透传USB-Key为例:

查看设备总线地址与设备ID:

然后在域定义中添加设备ID,也可指定设备的总线地址:

对应到QEMU的参数是“-device usb-host,vendorid=0x04b9,productid=0x8001”或者“-device usb-host,hostbus=1,hostaddr=3,id=hostdev0”,也可是“-usbdevice host:0529:0001”等形式。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈