标签: 9p

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

我最近开始尝试在最新版本的 KVM/QEMU/libvirt 中支持直通文件系统。使文件系统可用于读取访问“刚刚奏效”,但我对写入访问应该如何工作感到有些困惑。在客户机中挂载文件系统后:

# mount -t 9p -o trans=virtio /fs/data /mnt
Run Code Online (Sandbox Code Playgroud)

如果现有文件具有 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
Run Code Online (Sandbox Code Playgroud)

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

# ls -ld /mnt/work
drwxrwxrwx. 2 root root 4096 Dec 20 11:16 /mnt/work
# cd /mnt/work
# …
Run Code Online (Sandbox Code Playgroud)

virtualization filesystems libvirt qemu 9p

17
推荐指数
1
解决办法
1万
查看次数

KVM 来宾无法写入非 root 用户拥有的 9p 共享

我的目标是为 KVM 来宾设置对 9p 共享的完全写入访问权限。主机和来宾都具有相同 ID 的相同用户/组。主机和来宾都应该能够使用相同的用户名写入共享,我不想区分文件是由主机写入还是由来宾写入。kvm 进程以 root 身份运行——我在 /etc/libvirt/qemu.conf 中设置了usergroupto root

在主机上的guest定义中,共享定义如下:

<filesystem type='mount' accessmode='passthrough'>
  <source dir='/mnt/storage/data'/>
  <target dir='data'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</filesystem>
Run Code Online (Sandbox Code Playgroud)

在来宾中,共享安装为:

mount -t 9p -o rw,trans=virtio,version=9p2000.L,msize=262144 data /mnt/data
Run Code Online (Sandbox Code Playgroud)

问题是来宾中的 root 用户无法写入主机上非 root 用户拥有的文件/文件夹。更奇怪的是,guest 的 root 可以重命名和删除此类文件。也就是说,当我在主机上以非 root 用户身份创建文件时,即使我可以重命名和删除它,我也无法以访客的 root 用户身份编辑它!

我还发现,在主机上以非 root 用户创建的文件夹的权限设置为 777,来宾的 root 可以写入(即在其中创建文件)。但是,这不适用于文件 - 无论权限如何,它们仍然无法编辑。

主机和来宾都运行 Linux 服务器 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux。在 Debian 中,SELinux 默认是禁用的,我没有启用它。我尝试了所有三种可用的 9p 访问模式(passthroughmapped和 …

permissions qemu kvm-virtualization 9p

17
推荐指数
1
解决办法
5996
查看次数

如何有效地与 KVM 来宾共享主机的文件夹?

我正在配置服务,该服务将 nginx 上传的大量文件存储在主机系统的 /srv/storage 目录中。这些文件由工作 KVM 来宾处理,它们可能会创建新文件或为现有文件分配扩展属性。文件永远不会被覆盖,但最终会被其中一名工作人员删除。

因此主机服务器的文件写入速度约为 177MB/s。KVM 映像是存储在主机文件系统上的 QCOW2 文件,由于此 virtio 设置,映像在 KVM 实例内达到了约 155MB/s:

<driver name='qemu' type='raw' cache='none' io='native'/>
Run Code Online (Sandbox Code Playgroud)

但是我无法为共享文件夹获得这样的结果。我使用virtfs aka virtio 9p获得了最大 40MB/s 的速度。似乎没有挂载的 AIO 等效项:

mount -t 9p -o trans=virtio,version=9p2000.L uploads /srv/storage
Run Code Online (Sandbox Code Playgroud)

我也在想:

  • 没有 NFS - 缺少扩展属性
  • 没有 GlusterFS - 工作但性能比 virtio 差,因为联网,在单个硬件机器上有点矫枉过正,
  • 也许为 r/w 共享 LVM 卷?- 实际上文件夹存储在单独的分区中,但是我在某处读到 LV 不能 r/w 共享,因为这可能会导致 fs 损坏。
  • 将上传的文件保存在 QCOW2 上并让各方共享?
  • 将 nginx 和上传的文件保存在 QCOW2 上的 KVM 实例中,以某种方式与所有客人共享图像?
  • iSCSI - 可以使用单个分区吗?

那么如何使用扩展属性有效地与 KVM 来宾共享主机的文件夹)。

storage-area-network qemu kvm-virtualization 9p virtio

8
推荐指数
1
解决办法
8333
查看次数

Centos 6.2 中的文件系统直通功能?

我有一台 CentOS 6.3 机器,目前正在通过 KVM/QEMU/Libvirt 运行 2 台虚拟化的 CentOS 6.2 机器。我正在尝试在来宾和主机之间设置文件系统直通。但是,该选项在 Virtualization Manager 中呈灰色显示,并显示消息“不支持此管理程序/libvirt 组合”。

此外,如果我尝试使用

virsh edit [VM name]
Run Code Online (Sandbox Code Playgroud)

VM 沿着“QEMU 不支持直通”这一行在引导时引发错误(抱歉,我现在没有确切的错误。我无法访问机器,下次我在前面时会更新其中)。

我似乎无法找到有关此问题的大量信息。CentOS 和文件系统直通之间是否存在兼容性问题?

谢谢。

filesystems passthrough qemu centos6 9p

7
推荐指数
1
解决办法
4484
查看次数