使用 Libvirt

使用 Libvirt

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

据我所知,该target元素期望将path元素连接到计算机上的文件夹以存储基于文件的图像。可以是诸如 ?之path类的设备,/dev/sdc1带有?typeraw

答案1

请参阅“USB 直通 | 使用 Libvirt”部分这一页来自 Edubuntu wiki。更多信息这里这里

如果你不打算在客户机运行时热插拔 USB 驱动器,你也可以尝试添加如下部分

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

到您的虚拟机的 xml 定义文件。只需更改源设备以匹配插入时分配给您的 usb 的设备即可。但是,如果添加或移除其他设备,您无法保证 usb 的设备分配在重启后仍然有效,因此我建议使用上面第一个链接中的方法。

如果链接消失,这里是链接文档的相关 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 驱动器传递给虚拟机

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 的帮助。)

相关内容