openstack实例添加物理USB设备及原理说明

471 阅读1分钟

​本文已参与「新人创作礼」活动,一起开启掘金创作之路。

 lsusb来查看usb设备的编号

[root@localhost ~]# lsusb

Bus 002 Device 006: ID 03f0:5a07 Hewlett-Packard

Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

第一种方法:

usb.xml

<hostdev mode='subsystem' type='usb'>

         <source>

             <vendor id='0x03f0'/>

             <product id='0x5a07'/>

         </source>

       </hostdev>

第二种方法:

usb1.xml



<hostdev mode='subsystem' type='usb'>

         <source>

             <address bus='002' device='006'/>

         </source>

       </hostdev>

2 挂载usb设备

virsh attach-device instance-00000051 usb.xml

虚拟机里面也会看到相应的u盘设备,如下在控制台里面,看到虚拟机识别到u盘为sdb,mount u盘分区后,可以看到u盘的内容。

3 卸载usb设备

virsh detach-device instance-00000051 usb.xml

 openstack主机控制器,默认为USB1.0,我们不能直接将U盘,插到openstack实例上。需要修改程序改变加载的配置文件。

将USB类型改为以下型号。修改代码部分网上资料很多,修改原因,和控制器型号特此说明。

以下为网上找到的USB控制器型号。

以下为转载:

主机控制器(Host Controller)类型

• UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1)

• OHCI: Open Host Controller Interface (开放主机控制接口,USB1.0/1.1)

• EHCI: Enhanced Host Controller Interface (用于USB2.0高速设备的“增强主机控制接口”)   

     USB的拓扑结构决定了主机控制器就是最高统帅,没有主机控制器的要求设备永远不能主动发数据。所以主机控制器在USB的世界里扮演着重要的角色,它是幕后操纵者。

1、ich9类型USB控制器

可以单独添加ich9-echi1类型的USB2.0控制器,也可以附带ich9-uhcix类型的USB1.0控制器,但不可以只添加USB1.0控制器,ich9类型主控制器为USB2.0控制器,所以必须在xml中写入ich9-ehci1类型控制器,且总线function为0的需加上multifunction='on'。在我的测试机器上使用dd命令写入速度为11.4M/s。

2、piix3-uhci类型USB1.0控制器

该类型USB控制器pci必须为0:0:1.2。在我的测试机器上使用dd命令写入速度达到1.2M/s。

3、piix4-uhci类型USB1.0控制器

该USB控制器最好使用新的slot号,,functon为0。测试机器上使用dd命令写入速度达到1.2M/s。

4、vt82c686b-uhci类型USB1.0控制器

该USB控制器最好使用新的slot号,functon为0。测试机器上使用dd命令写入速度1.2M/s。

5、ehci类型USB2.0控制器

该USB控制器最好使用新的slot号,functon为0。测试机器上使用dd命令写入速度达到4M/s。

6、nec-xhci类型USB3.0控制器

由于当前使用vplat系统镜像无该控制器驱动,故不能通过该设置访问USB设备。