Mappatura dell'unità USB direttamente sulla macchina virtuale KVM di libvirt?


9

Sto cercando informazioni su come mappare un'unità esistente (unità USB) su una macchina virtuale KVM usando libvirt. Sto andando su http://libvirt.org/formatstorage.html#StoragePoolTarget . Ma non capisco bene quali opzioni sono necessarie per esporre un dispositivo esistente alla VM (o se è persino possibile).

Da quello che sto leggendo, l' targetelemento si aspetta un pathelemento in una cartella sulla macchina per memorizzare un'immagine basata su file. Può pathessere un dispositivo come /dev/sdc1? con un typedi raw?

Risposte:


9

Dai un'occhiata al 'Passthrough USB | Uso della sezione Libvirt di questa pagina dal wiki di Edubuntu. Maggiori informazioni qui e qui .

Se non hai mai intenzione di collegare a caldo / scollegare l'unità USB mentre il guest è in esecuzione, puoi anche provare ad aggiungere una sezione come

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

nel file di definizione XML della VM. Basta cambiare lo sviluppatore sorgente in modo che corrisponda a ciò che è stato assegnato al tuo usb quando è stato collegato. Tuttavia, non è possibile garantire che l'assegnazione degli dev del usb sopravviverà al riavvio se vengono aggiunti o rimossi altri dispositivi, quindi consiglierei l'approccio nel primo link sopra invece.

Nel caso in cui il collegamento scompaia, ecco la sezione passthrough USB pertinente dei documenti collegati:

Usando Libvirt

acceso un vm preesistente

virsh start maverick2

collegato a una chiavetta USB
trovato l'indirizzo usb utilizzando lsusb, che mi ha dato
{{ Bus 002 Device 006: ID 1058:1023 Western Digital Technologies, Inc. }}}

definito un file xml con le informazioni sul dispositivo:

<hostdev mode='subsystem' type='usb'> <source> <vendor id='0x1058'/> <product id='0x1023'/> </source> </hostdev>
passato l'unità USB alla VM

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

TUTTAVIA questo non funziona con apparmor abilitato. È necessario disabilitare apparmor o aggiungere

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

a /etc/apparmor.d/libvirt-qemu(che offre a tutti gli ospiti pieno accesso ai dispositivi host fisici) o a

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

che darà l'accesso a un solo ospite. (Grazie a jdstrand per l'aiuto nel chiarire le cose.)


1
Grazie, quella pagina è stata molto utile. L'ho fatto funzionare. Ma invece di un fornitore e un prodotto, ho usato l' addresselemento. Quando si utilizza il fornitore e il prodotto, non è possibile montare 2 unità USB uguali. Passerebbe solo attraverso il primo.
Andy Shinn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.