Accès en lecture / écriture pour les systèmes de fichiers passthrough (9p) avec libvirt / qemu?

14

J'ai récemment commencé à expérimenter le support des systèmes de fichiers passthrough dans les versions récentes de KVM / QEMU / libvirt. Rendre les systèmes de fichiers disponibles pour l'accès en lecture a "juste fonctionné", mais je suis un peu perplexe sur la façon dont l'accès en écriture est censé fonctionner. Après avoir monté le système de fichiers dans l'invité:

# mount -t 9p -o trans=virtio /fs/data /mnt

Je peux modifier un fichier existant s'il a un mode o+w:

# cd /mnt/work
# ls -l foo
-rw-rw-rw-. 1 root root 17 Dec 20 11:16 foo
# cat foo
this is line one
# echo this is line two >> foo
# cat foo
this is line one
this is line two

Mais quelles que soient les autorisations du répertoire, je ne peux pas créer un nouveau fichier ou répertoire:

# ls -ld /mnt/work
drwxrwxrwx. 2 root root 4096 Dec 20 11:16 /mnt/work
# cd /mnt/work
# touch bar
touch: setting times of `bar': No such file or directory
# mkdir bar
# mkdir: cannot create directory `bar': Operation not permitted

La documentation que j'ai pu trouver (par exemple, ceci ) ne traite pas explicitement de ce problème. J'espère que quelqu'un ici à Serverfault pourra m'aider à configurer un système de fichiers passthrough qui me permettra d'accorder un accès en écriture à un utilisateur de l'invité sur un système de fichiers hôte.

larsks
la source
Êtes-vous sûr d'avoir monté le système de fichiers en lecture / écriture? Pouvez-vous créer des fichiers? Créez-vous des fichiers en tant qu'utilisateur root ou ordinaire (ouais je vois votre # mais vous l'avez peut-être écrit manuellement)?
Janus Troelsen
Avez-vous réussi à résoudre ce problème? J'ai un problème similaire de ne pas pouvoir écrire sur le chemin fs de l'hôte monté dans l'invité.
Shoan
Je n'ai jamais vraiment fait de progrès à ce sujet. C'était une sorte d'application de niche pour moi ... Je n'exécute généralement pas d'invités KVM dans des endroits où l'accès à un système de fichiers local serait utile. Je me suis mis à exécuter VirtualBox sur mon bureau où je veux réellement cette fonctionnalité de temps en temps.
larsks
Voyez-vous une alerte selinux sur l'hôte physique ou sur l'invité?
c4f4t0r
Cela pourrait aider? linux-kvm.org/page/9p_virtio
Danila Ladner

Réponses:

5

Cela me semble être un problème de permission sur l'hôte:

Par défaut, le processus qemu / kvm est démarré en tant qu'utilisateur non privilégié (libvirt-qemu dans Debian Wheezy). Ainsi, seuls les fichiers accessibles (ou accessibles en écriture) par cet utilisateur sont accessibles (accessibles en écriture) par les invités VM.

Vous pouvez essayer de définir la propriété du répertoire sur l'utilisateur qemu est exécuté en tant que (voir user = et group = dans /etc/libvirt/qemu.conf)

Peut-être que cela vous aide dans votre cas?

matt_gnu
la source
1
J'ai essayé cela dans mon cas, qui est le même que cette question , mais je ne peux pas le faire fonctionner, même avec apparmor éteint.
Diagon
0

au démarrage de votre moniteur qemu en shell, vous devez ajouter "sudo" comme préfixe. Je l'ai fait pour résoudre le problème d'autorisation lors de la création d'un fichier ou d'un dossier. mon environnement est ubuntu16.04 + qemu-2.12.

ianwang
la source