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


9

我正在搜索有关使用libvirt将现有驱动器(USB驱动器)映射到KVM虚拟机的信息。我一直在浏览http://libvirt.org/formatstorage.html#StoragePoolTarget。但是我不太了解将现有设备公开到VM所需的选项(甚至可能的话)。

从我正在阅读的target内容来看,该元素期望该path元素到计算机上的文件夹中以存储基于文件的图像。可以是path这样的设备/dev/sdc1吗?用typeraw

Answers:


9

查看“ 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驱动器传递给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帮您弄清楚这一点。)


1
谢谢,该页面非常有帮助。我确实做到了。但是我使用了address元素而不是供应商和产品。使用供应商和产品时,我无法安装2个相同的USB驱动器。它只会通过第一个。
安迪·辛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.