使用libvirt / qemu进行passthrough(9p)文件系统的读/写访问?

我最近开始尝试在最新版本的KVM / QEMU / libvirt中支持直通文件系统。 使文件系统可用于读访问已经“刚刚工作”,但是我对写访问应该如何工作有些困惑。 在客户机中安装文件系统之后:

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

我可以修改现有的文件,如果它有模式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 

但不pipe目录权限如何,我都无法创build新的文件或目录:

 # 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 

我能find的文档(例如, 这个 )没有明确地解决这个问题。 我希望Serverfault中的某个人可以帮助我build立一个直通文件系统,让我可以将访客中的用户写入主机文件系统。

这在我看来就像主机上的权限问题:

默认情况下,qemu / kvm进程作为非特权用户(Debian Wheezy中的libvirt-qemu)启动。 因此,只有该用户可以访问(或可写)的文件才能被VM guest虚拟机访问(写入)。

您可以尝试将目录的所有权设置为用户qemu的运行方式(请参阅/etc/libvirt/qemu.conf中的user =和group =)。

也许这有助于你的情况?