Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 002: ID 03f0:1027 Hewlett-Packard Virtual keyboard and mouse
Bus 001 Device 002: ID 058f:6387 Alcor Micro Corp. Flash Drive
Tue Dec 16 12:45:21 CST 2014
输出信息中,每一行对应一个 USB 设备或根集线器。例如 ID 058f:6387 对应的就是待分配给虚拟机的 U 盘,其厂商 ID 为 0x058f,产品 ID 为 0x6387,总线号为 1,设备号为 2。
第二步:将需要的 USB 设备分配给虚拟机
可通过 virt-manager 图形界面添加 USB 设备,或直接编辑虚拟机的 XML 配置文件。核心配置段如下:
复制代码
此处指定了厂商 ID、产品 ID 以及总线、设备号,用于告知 KVM 将对应 USB 设备直通给虚拟机。配置完成后,重启虚拟机或通过热插拔即可生效。
第三步:测试效果
配置完成后,插入 U 盘,观察虚拟机是否能够正常识别。结果发现一个有趣的现象:在 CentOS 6.6 宿主机上的 Windows 7 虚拟机中,U 盘始终无法识别。
最初怀疑是 Windows 7 的驱动问题,尝试了多种驱动方案,问题依旧。但有趣的是,如果虚拟机也是 CentOS 6.6,同一 U 盘插入后可直接挂载使用,这说明问题可能出现在 Windows 虚拟机对 USB 控制器类型的兼容性上。
随后在 Fedora 21 上测试同一台 Windows 7 虚拟机,U 盘插入后即可直接识别,无需额外配置。
甚至无需手动挂载 USB 设备,虚拟机中即可直接看到新硬件。推测这与 Fedora 集成的 USB 转发器(如 usbredir)版本有关——较新版本的内核和工具链在 USB 直通支持方面做出了诸多改进。
因此,如果在 CentOS 6 等较老版本系统上遇到 Windows 虚拟机 USB 无法识别的问题,可以尝试更换较新的宿主机发行版,或升级相关的 USB 后端服务。这个经验值得参考。