Смонтировать libvirt / 9p / kvm в fstab не удалось при загрузке

18

Я пытаюсь смонтировать общую папку, используя qemu-kvm / 9p, и она не работает, если я добавляю ее в файл fstab. Я получаю сообщение об ошибке при загрузке, что устройство не может быть подключено, но после запуска, если я запускаю «mount -a», устройство будет подключено.

строка fstab:

src_mnt /src 9p trans=virtio 0 0

Из dmesg я вижу:

[    7.606258] 9p: Could not find request transport: virtio

И через несколько строк я вижу записи "virtio-pci". Однако я не знаю, как отложить монтаж, пока это устройство не будет доступно.

эд-ка морт-ора-й
источник

Ответы:

24

Не знаю, является ли это идеальным решением, но на госте Ubuntu 12.04 я заставил его работать, добавив модули 9p в initramfs.

Добавлен в / etc / initramfs-tools / modules:

9p
9pnet
9pnet_virtio

Потом:

sudo update-initramfs -u
bhassel
источник
Спасибо - я думаю, что разумно сказать, что это idealрешение. Проблема заключается в том, что модуль не монтируется во время монтирования файловой системы, поэтому вы можете добавить его в список модулей, загруженных во время монтирования.
Грег
Почему этот идеал?
Линд
4

В Ubuntu 14.04 только 9pnet_virtioмодуль требует предварительной загрузки согласно ответу bhassel .

Dmesg за несколько строк до цитируемой показывает, что две другие уже загружены, но не могут найти требуемый транспорт.

[ 1.370611] 9pnet: Installing 9P2000 support 
[ 1.376384] 9p: Installing v9fs 9p2000 file system support 
[ 1.376754] 9pnet: Could not find request transport: virtio 

Протестировано с гостем Ubuntu 14.04 на qemu / KVM на openSUSE 13.2.

Тим Н
источник
Привет Тим, и добро пожаловать на сайт. Помните, что порядок ответов может меняться как при голосовании в сообществе, так и в зависимости от предпочтений пользователя, поэтому старайтесь всегда четко указывать, на какой ответ вы ссылаетесь. Я исправил это сейчас в вашем посте; пожалуйста, сделайте это сами в будущем. Благодарность!
CVn
Это работает и в Ubuntu 16.04.
stalet
Это также работает в Ubuntu 18.04
jackkamm
1

Проблема здесь в том, как монтируется virtio на хосте. Есть два способа решить эту проблему.

Решение 1: использовать сопоставленный вместо транспорта

<filesystem type='mount' accessmode='mapped'>
  <source dir='/src_dir'/>
  <target dir='src'/>
</filesystem>

Это работает, но все файлы будут принадлежать пользователю, под которым запускается libvirt. Это плохо работает для файловых систем tmp или log.

Решение 2. Запустите libvirt от имени пользователя root и используйте passthrough

vi /etc/libvirt/qemu.conf

Затем раскомментируйте или добавьте:

user=root
group=root

Перезагрузите хост или перезапустите все процессы libvirt и qemu / kvm и используйте passthrough:

<filesystem type='mount' accessmode='passthrough'>
  <source dir='/src_dir'/>
  <target dir='src'/>
</filesystem>

Хотя хост может иметь некоторые последствия для безопасности, это делает uid: gid файлов на хосте таким же, как и на гостевом, что хорошо работает для файловых систем log и tmp. Это то, что я делаю в этой ситуации.

Fmstrat
источник