hotplug usb drive to a VM

Согласно этой статье: https://www.linux-kvm.org/page/USB Я могу создать образ диска и прикрепить его как USB диск к моей работающей ВМ.

Я попробовал это, используя qemu-monitor-command опцию virsh , но каким-то образом везде. Я помещаю файл img, доступ к нему невозможен!

$ sudo  virsh qemu-monitor-command --hmp MyVM1 'drive_add 0 id=my_usb_disk,if=none,file=/tmp/usb.img'
Could not open '/tmp/usb.img': Permission denied
$ ls -l /tmp/usb.img 
-rwxrwxrwx 1 libvirt-qemu kvm 8388608000 Apr 16 19:02 /tmp/usb.img

Если я не запущу это, я не думаю, что смогу сделать device_add ?!

Это моя qemu версия (на Bionic - 18.04):

$ qemu-system-x86_64 --version 
QEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.4)

Есть ли другой способ (скажем, libvirt XML), при помощи которого я могу прикрепить необработанный образ в виде USB-накопителя? (Я искал в документах libvirt, не нашел ни одного примера)

Чего мне не хватает здесь ?

-- Спасибо

1
задан 16 April 2021 в 16:55

1 ответ

Я очень рад сообщить, что у меня есть решение. Сначала, чтобы получить подробную информацию журнала трассировки, я отредактировал настройки Grub (используя опцию «e») и удалил «quiet» из списка параметров ядра в строке «linux».

quiet

Более подробный журнал имел достаточно подробностей, чтобы указать на происходящее. Загрузка замерла после того, как журнал показал, что dmeventd обнаруживает «LVM2 зеркала, снимок и т. д.» «Ждите Полной Инициализации Устройства»

, Оказывается, что у других людей была в основном та же проблема с теми же дисковыми аппаратными средствами как мой, который является WD SSD на 512 ГБ. Они опубликовали подробности в прошлом году. Короткая версия... (Я перефразирую здесь) с настройками загрузки Grub по умолчанию, загрузчик не ждал достаточно долго, чтобы получить ответ с диска. Затем после нескольких попыток она остановилась.

Решение состояло в том, чтобы изменить настройки Grub (снова с помощью опции «e») и добавить этот новый параметр в перечислять параметров ядра в строке «linux»:

nvme_core.default_ps_max_latency_us=5500

С этим изменением мой liveUSB хорошо работает. Имейте в виду, что объем моей проблемы и это решение ограничено параметром liveUSB «Try ubuntu». Конечно, я должен применять исправление каждый раз, когда я загружаюсь, что не является большой проблемой. Я еще не установил ubuntu на диск. Когда я это сделаю, мне придется отредактировать файл где-то, чтобы сделать решение постоянным.

Признание вкладчиков по этим двум должностям для решения. Большое спасибо!!

https://www.linux.org/threads/freeze-at-a-start-job-is-running-for-monitoring-of-lvm2-mirrors-snapshots-etc.31411/

https://community.wd.com/t/linux-support-for-wd-black-nvme-2018/225446/17

-121--913759-

Ubuntu - это ОС, а не приложение, поэтому нет пути запускать Ubuntu как ОС из внутренних окон.

Для отказа от использования виртуальной машины необходимо перезагрузить компьютер.

-121--913557-

Вы не изложили причины этого и прежде чем помочь вам, я хотел бы сообщить, что «подключение как USB» в большинстве случаев является плохим решением, большинство других способов (virtio диск, scsi диск, passthrough,...) гораздо лучше передать блочное устройство (если поддерживается файлом или реальным) гостю Передача USB гостям обычно используется только для передачи реальных устройств гостю.

Но вы можете иметь в виду конкретный тест, поэтому сейчас позвольте мне предположить, что есть причина для использования USB здесь: -) Если вам нужен образ в качестве USB-диска, вам нужно сделать две вещи.

Во-первых, если вы используете libvirt, вы можете использовать его здесь не только для передачи команд. Это делает наиболее сложную работу для вас (именно для этого):

# qemu-img create -f qcow2 test.img 10M
Formatting 'test.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10485760 lazy_refcounts=off refcount_bits=16
# virsh attach-disk ubuntu20.04-Desktop --targetbus usb --source /var/lib/libvirt/images/test.img --target hda
Disk attached successfully

Конечно, вы можете конвертировать это в XML (или непосредственно использовать XML) для более программного подхода, но выше работает нормально.

И секунды вы должны знать об общих и необычных путях. Если вы просто присоедините файл к qemu, он будет заблокирован изоляцией устройства - см. раздел в руководстве по серверу . Вы должны сказать libvirt, какой путь вы используете, чтобы он позволил этот путь. В моем приведенном выше примере все сделано для вас и просто работает.Существует набор путей, для которых все это может происходить автоматически, и, например ,/var/lib/libvirt/images + сообщение libvirt о том, что вы делаете с attach-disk, является одним из них.

При необходимости запуска по другим путям необходимы дополнительные правила для virt-aa-helper в /etc/apparmor.d/local/usr.lib.libvirt.virt-aa-helper .

И если вы настаиваете на том, чтобы сделать это вручную через libvirt, вам нужно добавить правило, которое позволяет гостю данный путь/файл/etc/apparmor.d/libvirt/libvirt - и затем перезагрузить этот профиль (или перезапустить гостя). Тогда этот путь будет разрешен для доступа qemu.

1
ответ дан 23 April 2021 в 23:22

Другие вопросы по тегам:

Похожие вопросы: