USB-Laufwerk direkt der virtuellen libvirt KVM-Maschine zuordnen?

9

Ich suche nach Informationen zum Zuordnen eines vorhandenen Laufwerks (USB-Laufwerk) zu einer virtuellen KVM-Maschine mithilfe von libvirt. Ich habe http://libvirt.org/formatstorage.html#StoragePoolTarget durchgesehen . Ich verstehe jedoch nicht ganz, welche Optionen erforderlich sind, um ein vorhandenes Gerät der VM auszusetzen (oder ob dies überhaupt möglich ist).

Nach dem, was ich lese, targeterwartet das Element, dass ein pathElement in einem Ordner auf dem Computer ein dateibasiertes Bild speichert. Kann das pathein Gerät sein wie /dev/sdc1? mit einem typevon raw?

Andy Shinn
quelle

Antworten:

9

Überprüfen Sie die 'USB Passthrough | Verwenden des Libvirt-Abschnitts dieser Seite aus dem Edubuntu-Wiki. Mehr Infos hier und hier .

Wenn Sie nicht vorhaben, das USB-Laufwerk während des Betriebs des Gastes im laufenden Betrieb zu verbinden oder zu entfernen, können Sie auch versuchen, einen Abschnitt wie hinzuzufügen

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

in die XML-Definitionsdatei Ihrer VM. Ändern Sie einfach den Quellentwickler so, dass er mit dem übereinstimmt, der Ihrem USB beim Anschließen zugewiesen wurde. Sie können jedoch nicht garantieren, dass die Entwicklerzuweisung des USB den Neustart überlebt, wenn andere Geräte hinzugefügt oder entfernt werden erster Link oben stattdessen.

Falls die Verknüpfung verschwindet, finden Sie hier den entsprechenden Abschnitt zum USB-Passthrough in den verknüpften Dokumenten:

Verwenden von Libvirt

hat eine bereits vorhandene VM ausgelöst

virsh start maverick2

Ein USB-Laufwerk angeschlossen
fand die USB-Adresse mit lsusb, was mir gab
{{ Bus 002 Device 006: ID 1058:1023 Western Digital Technologies, Inc. }}}

definierte eine XML-Datei mit den Geräteinformationen:

<hostdev mode='subsystem' type='usb'> <source> <vendor id='0x1058'/> <product id='0x1023'/> </source> </hostdev>
passierte das USB-Laufwerk an die VM

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

Dies funktioniert jedoch nicht mit aktiviertem Apparmor. Sie müssen entweder Apparmor deaktivieren oder hinzufügen

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

entweder zu /etc/apparmor.d/libvirt-qemu(was allen Gästen vollen Zugriff auf physische Hostgeräte gibt) oder zu

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

Dadurch erhält nur der eine Gast Zugriff. (Danke an jdstrand für die Hilfe, die das klarstellt.)

nedm
quelle
1
Danke, diese Seite war sehr hilfreich. Ich habe es zum Laufen gebracht. Aber anstelle eines Anbieters und eines Produkts habe ich das addressElement verwendet. Bei Verwendung von Hersteller und Produkt konnte ich nicht zwei USB-Laufwerke anbringen, die gleich waren. Es würde nur durch den ersten gehen.
Andy Shinn