Le montage de libvirt / 9p / kvm dans fstab ne parvient pas à se monter au démarrage

18

J'essaie de monter un dossier partagé à l'aide de qemu-kvm / 9p et cela ne fonctionne pas si je l'ajoute au fichier fstab. Je reçois une erreur au démarrage indiquant que le périphérique ne peut pas être monté, mais après le démarrage, si je lance "mount -a", le périphérique sera monté.

ligne fstab:

src_mnt /src 9p trans=virtio 0 0

De dmesg je peux voir:

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

Et quelques lignes plus tard, je vois les entrées "virtio-pci". Je ne sais pas comment je différerais le montage jusqu'à ce que cet appareil soit disponible.

edA-qa mort-ora-y
la source

Réponses:

24

Je ne sais pas si c'est la solution idéale, mais sur un invité Ubuntu 12.04, je l'ai fait fonctionner en ajoutant les modules 9p aux initramfs.

Ajouté à / etc / initramfs-tools / modules:

9p
9pnet
9pnet_virtio

Alors:

sudo update-initramfs -u
bhassel
la source
Merci - je pense qu'il est raisonnable de dire que c'est la idealsolution. Le problème est que le module n'est pas monté pendant le montage du système de fichiers, votre solution est de l'ajouter à la liste des modules chargés au moment du montage.
Greg
Pourquoi est-ce idéal?
lindhe
4

Sur Ubuntu 14.04, seul le 9pnet_virtiomodule doit être préchargé conformément à la réponse de bhassel .

Le dmesg quelques lignes avant celui cité indique que les deux autres sont déjà chargés mais ne peuvent pas trouver le transport requis.

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

Testé avec l'invité Ubuntu 14.04 sur qemu / KVM sur openSUSE 13.2.

Tim N
la source
Salut Tim, et bienvenue sur le site. Gardez à l'esprit que l'ordre des réponses peut changer à la fois par le vote de la communauté et par les préférences des utilisateurs, alors essayez de toujours être explicite sur la réponse à laquelle vous faites référence. J'ai corrigé cela pour l'instant dans votre message; veuillez le faire vous-même à l'avenir. Merci!
un CVn du
Cela fonctionne également sur Ubuntu 16.04.
stalet
Cela fonctionne également sur Ubuntu 18.04
jackkamm
1

Le problème ici est de savoir comment le montage virtio est configuré sur l'hôte. Il existe deux façons de résoudre ce problème.

Solution 1: utiliser mappé au lieu du transport

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

Cela fonctionne, mais tous les fichiers appartiendront à l'utilisateur que libvirt exécute en tant que. Cela ne fonctionne pas bien pour les systèmes de fichiers tmp ou log.

Solution 2: exécutez libvirt en tant que root et utilisez le passthrough

vi /etc/libvirt/qemu.conf

Décommentez ensuite ou ajoutez:

user=root
group=root

Redémarrez l'hôte ou redémarrez tous les processus libvirt et qemu / kvm, et utilisez le passthrough:

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

Bien qu'il puisse y avoir des implications de sécurité pour l'hôte, cela rend l'id: gid des fichiers sur l'hôte identique à celui de l'invité, ce qui fonctionne bien pour les systèmes de fichiers log et tmp. C'est justement ce que je fais dans cette situation.

Fmstrat
la source