[libvirt-users] How to attach USB disk to specified USB controller in domian?

Jianwei Hu jiahu at redhat.com
Tue Dec 17 09:47:49 UTC 2013


Hi guys,

I want to attach a few USB disks to specified USB controller in domain on libvirt layer, but I didn't find any method to deal with it. Anyone can help me on that?

I added some USB type disk to my domain, started it, I found all USB disk had been attached to same USB controller automatically, I want to assign some USB disks to another controller manually but I can't find the entry. qemu-kvm has provided command line to support it by using "bus" argument.(like: device_add usb-storage,id=my_usb_disk,drive=my_usb_disk,bus=usb.0 )

Action steps:
1. Add some USB disks to domain xml, 
<disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/usb-img/usb-1.img'/>
      <target dev='sda' bus='usb'/>
      <alias name='usb-disk0'/>
    </disk>
<disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/usb-img/usb-2.img'/>
      <target dev='sdb' bus='usb'/>
      <alias name='usb-disk1'/>
    </disk>
...

2. Added more than 2 USB controller to domain xml
 <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='usb' index='1'>
      <alias name='usb1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </controller>
    <controller type='usb' index='2'>
      <alias name='usb2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </controller>
    <controller type='usb' index='3'>
      <alias name='usb3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </controller>

3. Enter into guest OS to check those usb device
[root at localhost ~]# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 12M
    |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/8p, 12M
        |__ Port 1: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 12M
        |__ Port 2: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 12M
        |__ Port 3: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 12M
        |__ Port 4: Dev 7, If 0, Class=Mass Storage, Driver=usb-storage, 12M
        |__ Port 5: Dev 8, If 0, Class=Mass Storage, Driver=usb-storage, 12M
        |__ Port 6: Dev 9, If 0, Class=Mass Storage, Driver=usb-storage, 12M
        |__ Port 7: Dev 10, If 0, Class=Mass Storage, Driver=usb-storage, 12M
        |__ Port 8: Dev 11, If 0, Class=Hub, Driver=hub/8p, 12M
            |__ Port 1: Dev 12, If 0, Class=Mass Storage, Driver=usb-storage, 12M
            |__ Port 2: Dev 13, If 0, Class=Mass Storage, Driver=usb-storage, 12M
            |__ Port 3: Dev 14, If 0, Class=Mass Storage, Driver=usb-storage, 12M
            |__ Port 4: Dev 15, If 0, Class=Mass Storage, Driver=usb-storage, 12M
            |__ Port 5: Dev 16, If 0, Class=Mass Storage, Driver=usb-storage, 12M
            |__ Port 6: Dev 17, If 0, Class=Mass Storage, Driver=usb-storage, 12M
            |__ Port 7: Dev 18, If 0, Class=Mass Storage, Driver=usb-storage, 12M
            |__ Port 8: Dev 19, If 0, Class=Hub, Driver=hub/8p, 12M
                |__ Port 1: Dev 20, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                |__ Port 2: Dev 21, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                |__ Port 3: Dev 22, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                |__ Port 4: Dev 23, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                |__ Port 5: Dev 24, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                |__ Port 6: Dev 25, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                |__ Port 7: Dev 26, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                |__ Port 8: Dev 27, If 0, Class=Hub, Driver=hub/8p, 12M
                    |__ Port 1: Dev 28, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                    |__ Port 2: Dev 29, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                    |__ Port 3: Dev 30, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                    |__ Port 4: Dev 31, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                    |__ Port 5: Dev 32, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                    |__ Port 6: Dev 33, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                    |__ Port 7: Dev 34, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                    |__ Port 8: Dev 35, If 0, Class=Hub, Driver=hub/8p, 12M
                        |__ Port 1: Dev 36, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                        |__ Port 2: Dev 37, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                        |__ Port 3: Dev 38, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                        |__ Port 4: Dev 39, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                        |__ Port 5: Dev 40, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                        |__ Port 6: Dev 41, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                        |__ Port 7: Dev 42, If 0, Class=Mass Storage, Driver=usb-storage, 12M
                        |__ Port 8: Dev 43, If 0, Class=Mass Storage, Driver=usb-storage, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
[root at localhost ~]#

BR,
Jianwei





More information about the libvirt-users mailing list