将USB驱动器直接映射到libvirt KVM虚拟机?

我正在search使用libvirt将现有驱动器(USB驱动器)映射到KVM虚拟机的信息。 我一直在通过http://libvirt.org/formatstorage.html#StoragePoolTarget 。 但我不太明白需要什么选项来将现有设备公开给虚拟机(或者甚至可能)。

从我正在阅读的内容来看, target元素需要一个path元素到机器上的一个文件夹来存储基于文件的图像。 path可以是/dev/sdc1吗? 用一种raw

查看“USB直通| 使用Edubuntu wiki 页面的 Libvirt部分。 更多信息在这里和这里 。

如果你不打算在guest虚拟机运行时热插拔usb驱动器,你也可以尝试添加一个节

 <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/sdb'/> <target dev='sdb' bus='scsi'/> </disk> 

到您的虚拟机的XML定义文件。 只要更改源代码开发,以匹配什么是分配给你的USB插入时,但是,你不能保证USB的开发分配将保持重新启动,如果其他设备添加或删除,所以我build议在首先是上面的链接。

如果链接消失,链接文档的相关USB传递部分如下:

使用Libvirt

发射了一个预先存在的虚拟机

 virsh start maverick2 

插入一个USB驱动器
使用lsusb发现了usb地址,这给了我
{{ Bus 002 Device 006: ID 1058:1023 Western Digital Technologies, Inc. }}}

用设备信息定义一个xml文件:

<hostdev mode='subsystem' type='usb'> <source> <vendor id='0x1058'/> <product id='0x1023'/> </source> </hostdev>
通过USB驱动器的VM

 sudo virsh attach-device maverick2 /tmp/a.xml 

但是这不适用于启用apparmor。 您必须禁用apparmor,或添加

 /dev/bus/usb/*/[0-9]* rw, 

/etc/apparmor.d/libvirt-qemu (让所有访客都可以完全访问物理主机设备)或者

 /etc/apparmor.d/libvirt/libvirt-<uuid> 

这将只给予一个访问的访客。 (感谢jdstrand寻求帮助。)