我正在搜索有关使用libvirt将现有驱动器(USB驱动器)映射到KVM虚拟机的信息。我一直在浏览http://libvirt.org/formatstorage.html#StoragePoolTarget。但是我不太了解将现有设备公开到VM所需的选项(甚至可能的话)。
从我正在阅读的target
内容来看,该元素期望该path
元素到计算机上的文件夹中以存储基于文件的图像。可以是path
这样的设备/dev/sdc1
吗?用type
的raw
?
我正在搜索有关使用libvirt将现有驱动器(USB驱动器)映射到KVM虚拟机的信息。我一直在浏览http://libvirt.org/formatstorage.html#StoragePoolTarget。但是我不太了解将现有设备公开到VM所需的选项(甚至可能的话)。
从我正在阅读的target
内容来看,该元素期望该path
元素到计算机上的文件夹中以存储基于文件的图像。可以是path
这样的设备/dev/sdc1
吗?用type
的raw
?
Answers:
查看“ USB直通| 使用Libvirt库”部分本页面从Edubuntu的维基。更多信息在这里和这里。
如果您不打算在来宾运行时热插拔USB驱动器,也可以尝试添加以下内容
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/sdb'/>
<target dev='sdb' bus='scsi'/>
</disk>
到您的VM的xml定义文件。只需更改源dev以使其与插入USB后分配给您的usb相匹配即可。但是,您不能保证在添加或删除其他设备后usb的dev分配将在重启后仍然存在,因此我建议在而是上面的第一个链接。
万一链接消失,这是链接文档的相关USB直通部分:
使用Libvirt
触发一个预先存在的虚拟机
virsh start maverick2
插入USB驱动器,使用
找到了USB地址lsusb
,这给了我
{{ 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驱动器传递给vmsudo 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帮您弄清楚这一点。)
address
元素而不是供应商和产品。使用供应商和产品时,我无法安装2个相同的USB驱动器。它只会通过第一个。