Memetakan USB drive langsung ke mesin virtual libvirt KVM?

9

Saya mencari informasi tentang pemetaan drive yang ada (drive USB) ke mesin virtual KVM menggunakan libvirt. Saya telah membahas http://libvirt.org/formatstorage.html#StoragePoolTarget . Tapi saya tidak begitu mengerti opsi apa yang diperlukan untuk mengekspos perangkat yang ada ke VM (atau jika itu mungkin).

Dari apa yang saya baca, targetelemen mengharapkan pathelemen ke folder pada mesin untuk menyimpan gambar berbasis file. Bisakah pathperangkat seperti itu /dev/sdc1? dengan typedari raw?

Andy Shinn
sumber

Jawaban:

9

Lihat 'USB passthrough | Menggunakan bagian Libvirt halaman ini dari wiki Edubuntu. Info lebih lanjut di sini dan di sini .

Jika Anda tidak pernah berencana untuk plug panas / cabut USB drive saat tamu sedang berjalan Anda juga dapat mencoba menambahkan bagian seperti

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

ke file definisi xml VM Anda. Cukup ganti sumber dev untuk mencocokkan apa yang ditugaskan ke usb Anda ketika dicolokkan. Namun, Anda tidak dapat menjamin tugas dev usb akan tetap hidup kembali jika perangkat lain ditambahkan atau dihapus, jadi saya akan merekomendasikan pendekatan di tautan pertama di atas sebagai gantinya.

Jika tautannya hilang, berikut adalah bagian passthrough USB yang relevan dari dokumen yang ditautkan:

Menggunakan Libvirt

meluncurkan vm yang sudah ada sebelumnya

virsh start maverick2

dicolokkan di usb drive
menemukan alamat usb menggunakan lsusb, yang memberi saya
{{ Bus 002 Device 006: ID 1058:1023 Western Digital Technologies, Inc. }}}

mendefinisikan file xml dengan info perangkat:

<hostdev mode='subsystem' type='usb'> <source> <vendor id='0x1058'/> <product id='0x1023'/> </source> </hostdev>
melewati drive usb ke vm

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

NAMUN ini tidak bekerja dengan apparmor diaktifkan. Anda harus menonaktifkan apparmor, atau menambahkan

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

baik /etc/apparmor.d/libvirt-qemu(yang memberi semua tamu akses penuh ke perangkat host fisik) atau ke

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

yang hanya akan memberikan satu tamu yang mengakses. (Terima kasih kepada jdstrand untuk bantuan meluruskannya.)

nedm
sumber
1
Terima kasih, halaman itu sangat membantu. Saya memang membuatnya bekerja. Tapi bukannya vendor dan produk, saya menggunakan addresselemen itu. Saat menggunakan vendor dan produk saya tidak bisa memasang 2 drive USB yang sama. Itu hanya akan melewati yang pertama.
Andy Shinn