將 USB 驅動器直接映射到 libvirt KVM 虛擬機?
我正在搜尋有關使用 libvirt 將現有驅動器(USB 驅動器)映射到 KVM 虛擬機的資訊。我一直在瀏覽 http://libvirt.org/formatstorage.html#StoragePoolTarget。但我不太明白將現有設備暴露給 VM 需要哪些選項(或者是否有可能)。
從我正在閱讀的內容來看,該
target
元素期望path
機器上的一個文件夾中的一個元素來儲存基於文件的圖像。可以path
是一個設備/dev/sdc1
嗎?有type
一個raw
?
查看“USB 直通 | 使用Edubuntu wiki中本頁的Libvirt 部分。更多資訊在這里和這裡。
如果您不打算在來賓執行時熱插拔 USB 驅動器,您也可以嘗試添加類似的部分
<disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/sdb'/> <target dev='sdb' bus='scsi'/> </disk>
到您的 VM 的 xml 定義文件。只需更改源開發以匹配插入 USB 時分配給您的 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 驅動器傳遞給 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 幫助弄清楚這一點。)