libvirt / 9p / kvm mount en fstab no se puede montar en el momento del arranque

18

Estoy tratando de montar una carpeta compartida usando qemu-kvm / 9p y no funciona si lo agrego al archivo fstab. Recibo un error al arrancar que el dispositivo no se puede montar, pero después del inicio si ejecuto "mount -a", el dispositivo se montará.

línea fstab:

src_mnt /src 9p trans=virtio 0 0

De dmesg puedo ver:

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

Y unas pocas líneas después veo las entradas "virtio-pci". Sin embargo, no tengo claro cómo aplazaría el montaje hasta que ese dispositivo esté disponible.

edA-qa mort-ora-y
fuente

Respuestas:

24

No sé si es la solución ideal, pero en un invitado Ubuntu 12.04 lo hice funcionar agregando los módulos 9p a initramfs.

Agregado a / etc / initramfs-tools / modules:

9p
9pnet
9pnet_virtio

Luego:

sudo update-initramfs -u
Bhassel
fuente
Gracias. Creo que es razonable decir que esta es la idealsolución. El problema es que el módulo no se monta durante el montaje del sistema de archivos, su solución es agregarlo a la lista de módulos cargados en el momento del montaje.
Greg
¿Por qué es este ideal?
Lindhe
4

En Ubuntu 14.04 solo el 9pnet_virtiomódulo necesita precargarse según la respuesta de bhassel .

El dmesg unas pocas líneas antes de la cita indica que las otras dos ya están cargadas pero no pueden encontrar el transporte requerido.

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

Probado con Ubuntu 14.04 invitado en qemu / KVM en openSUSE 13.2.

Tim N
fuente
Hola Tim, y bienvenido al sitio. Tenga en cuenta que el orden de las respuestas puede cambiar tanto por la votación de la comunidad como por las preferencias del usuario, por lo que trate de ser siempre explícito sobre a qué respuesta se refiere. He arreglado esto por ahora en tu publicación; Hágalo usted mismo en el futuro. ¡Gracias!
un CVn
Esto también funciona en ubuntu 16.04.
stalet
Esto también funciona en Ubuntu 18.04
jackkamm
1

El problema aquí es cómo se configura el montaje virtio en el host. Hay dos formas de solucionar este problema.

Solución 1: use mapeado en lugar de transporte

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

Esto funciona, pero todos los archivos serán propiedad del usuario libvirt se ejecuta como. Esto no funciona bien para los sistemas de archivos tmp o log.

Solución 2: Ejecute libvirt como root y use passthrough

vi /etc/libvirt/qemu.conf

Luego, descomenta o agrega:

user=root
group=root

Reinicie el host o reinicie todos los procesos libvirt y qemu / kvm, y use passthrough:

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

Si bien podría haber algunas implicaciones de seguridad para el host, esto hace que el uid: gid de los archivos en el host sea igual que en el invitado, lo que funciona bien para los sistemas de archivos log y tmp. Esto pasa a ser lo que hago en esta situación.

Fmstrat
fuente