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

使用 libvirt/qemu 对直通(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

但无论目录权限如何,我都无法创造新的文件或目录:

# 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

我能找到的文档(例如,) 没有明确解决这个问题。我希望 Serverfault 的某个人能帮我设置一个直通文件系统,让我能授予客户机中的用户对主机文件系统的写访问权限。

答案1

在我看来,这似乎是主机上的权限问题:

默认情况下,qemu/kvm 进程以非特权用户身份启动(Debian Wheezy 中的 libvirt-qemu)。因此,只有该用户可访问(或可写入)的文件才可供 VM 客户端访问(可写入)。

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

也许这对你的情况有帮助?

答案2

在 shell 中启动 qemu 监视器时,应添加“sudo”作为前缀。我这样做是为了解决创建文件或文件夹时的权限问题。我的环境是 ubuntu16.04 + qemu-2.12。

相关内容