Mapeando a unidade USB diretamente para a máquina virtual KVM libvirt?

9

Estou procurando informações sobre o mapeamento de uma unidade existente (unidade USB) para uma máquina virtual KVM usando o libvirt. Eu tenho analisado o link . Mas eu não entendo muito bem quais opções são necessárias para expor um dispositivo existente para a VM (ou se é mesmo possível).

Pelo que estou lendo, o elemento target está esperando um elemento path para uma pasta na máquina para armazenar uma imagem baseada em arquivo. O path pode ser um dispositivo como /dev/sdc1 ? com type de raw ?

    
por Andy Shinn 11.01.2012 / 20:27

1 resposta

9

Confira o 'USB passthrough | Usando a seção Libvirt 'de esta página do wiki do Edubuntu. Mais informações aqui e aqui .

Se você nunca planeja conectar / desconectar a unidade usb enquanto o convidado está em execução, você também pode tentar adicionar uma seção como

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

ao arquivo de definição xml da sua VM. Basta alterar o código-fonte para corresponder ao que foi atribuído ao seu usb quando ele foi conectado. No entanto, você não pode garantir que a atribuição de dev do usb sobreviverá à reinicialização se outros dispositivos forem adicionados ou removidos, então eu recomendaria a abordagem no primeiro link acima em vez disso.

Caso o link desapareça, aqui está a seção de passagem USB relevante dos documentos vinculados:

Using Libvirt

fired up a pre-existing vm

virsh start maverick2

plugged in a usb drive
found the usb address using lsusb, which gave me
{{ Bus 002 Device 006: ID 1058:1023 Western Digital Technologies, Inc. }}}

defined a xml file with the device info:

<hostdev mode='subsystem' type='usb'> <source> <vendor id='0x1058'/> <product id='0x1023'/> </source> </hostdev>
passed the usb drive to the vm

sudo virsh attach-device maverick2 /tmp/a.xml

HOWEVER this does not work with apparmor enabled. You must either disable apparmor, or add

/dev/bus/usb/*/[0-9]* rw,

to either /etc/apparmor.d/libvirt-qemu (which gives all guests full access to physical host devices) or to

/etc/apparmor.d/libvirt/libvirt-<uuid>

which will give only the one guest that access. (Thanks to jdstrand for help getting that straight.)

    
por 11.01.2012 / 22:06