Назад | Перейти на главную страницу

Подключить USB-накопитель напрямую к виртуальной машине libvirt KVM?

Я ищу информацию о подключении существующего диска (USB-накопителя) к виртуальной машине KVM с помощью libvirt. Я собирался http://libvirt.org/formatstorage.html#StoragePoolTarget. Но я не совсем понимаю, какие параметры необходимы, чтобы открыть доступ к существующему устройству виртуальной машине (или если это вообще возможно).

Из того, что я читаю, target элемент ожидает path в папку на машине для хранения файлового изображения. Может ли path быть таким устройством, как /dev/sdc1? с type из raw?

Ознакомьтесь с «USB-переходом | Использование Libvirt в разделе эта страница из вики Edubuntu. Больше информации Вот и Вот.

Если вы никогда не планируете горячее подключение / отключение USB-накопителя во время работы гостя, вы также можете попробовать добавить раздел, например

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

в файл определения xml вашей виртуальной машины. Просто измените исходный код разработчика так, чтобы он соответствовал тому, что было назначено вашему USB-накопителю, когда он был подключен. Однако вы не можете гарантировать, что назначение USB-устройства сохранится после перезагрузки, если другие устройства будут добавлены или удалены, поэтому я бы рекомендовал подход в вместо этого первая ссылка выше.

В случае, если ссылка исчезнет, ​​вот соответствующий раздел USB-перехода связанных документов:

Использование Libvirt

запустил уже существующий vm

virsh start maverick2

подключен USB-накопитель
нашел адрес USB, используя lsusb, который дал мне
{{ Bus 002 Device 006: ID 1058:1023 Western Digital Technologies, Inc. }}}

определил XML-файл с информацией об устройстве:

<hostdev mode='subsystem' type='usb'> <source> <vendor id='0x1058'/> <product id='0x1023'/> </source> </hostdev>
передал USB-накопитель на ВМ

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

ОДНАКО это не работает с включенным apparmor. Вы должны либо отключить apparmor, либо добавить

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

либо /etc/apparmor.d/libvirt-qemu (что дает всем гостям полный доступ к физическим хост-устройствам) или к

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

который предоставит доступ только одному гостю. (Спасибо jdstrand за помощь в этом.)