Libvirt

將 USB 驅動器直接映射到 libvirt KVM 虛擬機?

  • August 10, 2015

我正在搜尋有關使用 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 幫助弄清楚這一點。)

引用自:https://serverfault.com/questions/348983