Mappage du lecteur USB directement sur la machine virtuelle KVM libvirt?

9

Je recherche des informations sur le mappage d'un lecteur existant (lecteur USB) à une machine virtuelle KVM à l'aide de libvirt. J'ai parcouru http://libvirt.org/formatstorage.html#StoragePoolTarget . Mais je ne comprends pas très bien quelles options sont nécessaires pour exposer un appareil existant à la machine virtuelle (ou si c'est même possible).

D'après ce que je lis, l' targetélément attend un pathélément dans un dossier sur la machine pour stocker une image basée sur un fichier. Peut-il paths'agir d'un appareil tel que /dev/sdc1? avec un typede raw?

Andy Shinn
la source

Réponses:

9

Découvrez le 'Passthrough USB | Utilisation de la section Libvirt de cette page du wiki Edubuntu. Plus d'infos ici et ici .

Si vous ne prévoyez jamais de brancher / débrancher à chaud le lecteur USB pendant que l'invité est en cours d'exécution, vous pouvez également essayer d'ajouter une section comme

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

dans le fichier de définition xml de votre machine virtuelle. Il vous suffit de modifier le développeur source pour qu'il corresponde à ce qui a été attribué à votre clé USB lors de son branchement. Cependant, vous ne pouvez pas garantir que l'affectation de développeur USB survivra au redémarrage si d'autres périphériques sont ajoutés ou supprimés, je recommande donc l'approche dans le premier lien ci-dessus à la place.

Dans le cas où le lien disparaît, voici la section de passage USB appropriée des documents liés:

Utilisation de Libvirt

lancé une vm préexistante

virsh start maverick2

branché dans un lecteur USB a
trouvé l'adresse USB à l'aide lsusb, ce qui m'a donné
{{ Bus 002 Device 006: ID 1058:1023 Western Digital Technologies, Inc. }}}

défini un fichier xml avec les informations de l'appareil:

<hostdev mode='subsystem' type='usb'> <source> <vendor id='0x1058'/> <product id='0x1023'/> </source> </hostdev>
passé le lecteur USB à la vm

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

CEPENDANT, cela ne fonctionne pas avec apparmor activé. Vous devez soit désactiver l'apparmeur, soit ajouter

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

soit /etc/apparmor.d/libvirt-qemu(qui donne à tous les invités un accès complet aux périphériques hôtes physiques), soit

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

ce qui ne donnera qu'un seul invité qui y aura accès. (Merci à jdstrand pour avoir aidé à clarifier les choses.)

nedm
la source
1
Merci, cette page a été très utile. Je l'ai fait fonctionner. Mais au lieu d'un fournisseur et d'un produit, j'ai utilisé l' addressélément. Lors de l'utilisation du fournisseur et du produit, je ne pouvais pas monter 2 clés USB identiques. Il ne passerait que par le premier.
Andy Shinn