anatoly techtonik Asked: 2016-05-16 06:30:09 +0800 CST2016-05-16 06:30:09 +0800 CST 2016-05-16 06:30:09 +0800 CST 9p (libvirt/QEMU) 共享模式 772 谁能解释一下 libvirt/QEMU 配置中的共享模式(默认、映射、直通、压缩)是什么意思? 我在passthrough模式中有这个份额。我看到在 VM 内部它由vagrant:vagrant用户拥有(主机不存在)并且共享设置了 rw 位。但是尝试在那里创建文件会access denied出错。 我需要了解解决问题的过程。 virtualization 2 个回答 Voted FGiorlando 2019-01-11T07:44:22+08:002019-01-11T07:44:22+08:00 共享模式定义了虚拟化 (p9fs) 文件系统如何呈现给客户机。权限映射具有重要意义。要理解这一点,重要的是要记住虚拟化文件系统需要管理文件的权限,并且它们在主机中可能与在客户机中不同。 我发现的关于模式的最佳文档来自libvirt 文档: 文件系统块有一个可选属性accessmode,它指定访问源的安全模式(从 0.8.5 开始)。目前这仅适用type='mount'于 QEMU/KVM 驱动程序。可能的值是: passthrough 使用source来宾内部用户的权限访问。accessmode如果未指定,则这是默认设置。更多信息。请注意,权限/所有权的更改将影响使用该文件系统的所有来宾。这种模式通常相当快。 mapped 使用管理程序(QEMU 进程)的权限访问源。更多信息。这意味着您需要确保 QEMU 进程(libvirt-qemu我的设置中的用户名)可以访问管理程序上的文件。优点是文件属性和权限是为来宾“映射”的,因此它们是其他地方的独立更改(只要文件保持可访问性)。如果您的主机系统支持 ACL,则此模式还将允许来宾中适当的 ACL 支持。这种模式通常比直通慢一点。 squash 与“passthrough”类似,例外是“chown”等特权操作的失败被忽略。这使得以非 root 身份运行管理程序的人可以使用类似直通的模式。更多信息 Best Answer cl-netbox 2016-05-16T07:50:59+08:002016-05-16T07:50:59+08:00 我曾经有一个非常相似的问题,提供对共享文件夹的读写访问。可以读取文件,但不允许我将文件写入共享源路径文件夹。 Unix & Linux - KVM / QEMU / Virt-Manager : 如何将文件存储在挂载的共享文件夹中 根本原因是来宾系统以libvirt-qemu用户身份运行。在已挂载的共享文件夹中,从正在运行的来宾系统中创建文件应该执行以下步骤: 在Virt-Manager-> Add Hardware->中Filesystem选择Mapped作为ModeVM 的设置。 更改共享文件夹的权限:sudo chmod -R 777 /<path-to-shared-folder> 将所有者更改为您的用户名:sudo chown -R user:user /<path-to-shared folder> 更改虚拟磁盘文件的权限:sudo chmod -R 777 /<path-to-virtual-disks> 将所有者更改为您的用户名:sudo chown -R user:user /<path-to-virtual-disks> 将您的用户名添加到libvirtd组:sudo usermod -G libvirtd -a <your-user-name> 授予libvirt-qemu用户完全权限:sudo setfacl -R -m u:libvirt-qemu:rwx /* 注意:* = 指定要授予libvirt-qemu权限的文件夹目录层次结构。 重新启动主机操作系统......现在您应该能够在来宾系统中创建文件。 有关 9p virtio 的信息 ->与来宾共享主机文件| QEMU 文档 9psetup Mode指定访问源的安全模式。Mapped指定使用管理程序的权限设置访问源。Passthrough指定使用从虚拟来宾机器内部设置的用户权限设置访问源。这是默认模式。Squash和Passthrough_ chown_ Passthrough_
共享模式定义了虚拟化 (p9fs) 文件系统如何呈现给客户机。权限映射具有重要意义。要理解这一点,重要的是要记住虚拟化文件系统需要管理文件的权限,并且它们在主机中可能与在客户机中不同。
我发现的关于模式的最佳文档来自libvirt 文档:
文件系统块有一个可选属性
accessmode
,它指定访问源的安全模式(从 0.8.5 开始)。目前这仅适用type='mount'
于 QEMU/KVM 驱动程序。可能的值是:passthrough
使用source
来宾内部用户的权限访问。accessmode
如果未指定,则这是默认设置。更多信息。请注意,权限/所有权的更改将影响使用该文件系统的所有来宾。这种模式通常相当快。mapped
使用管理程序(QEMU 进程)的权限访问源。更多信息。这意味着您需要确保 QEMU 进程(libvirt-qemu
我的设置中的用户名)可以访问管理程序上的文件。优点是文件属性和权限是为来宾“映射”的,因此它们是其他地方的独立更改(只要文件保持可访问性)。如果您的主机系统支持 ACL,则此模式还将允许来宾中适当的 ACL 支持。这种模式通常比直通慢一点。squash
与“passthrough”类似,例外是“chown”等特权操作的失败被忽略。这使得以非 root 身份运行管理程序的人可以使用类似直通的模式。更多信息我曾经有一个非常相似的问题,提供对共享文件夹的读写访问。可以读取文件,但不允许我将文件写入共享源路径文件夹。
Unix & Linux - KVM / QEMU / Virt-Manager : 如何将文件存储在挂载的共享文件夹中
根本原因是来宾系统以
libvirt-qemu
用户身份运行。在已挂载的共享文件夹中,从正在运行的来宾系统中创建文件应该执行以下步骤:在
Virt-Manager
->Add Hardware
->中Filesystem
选择Mapped
作为Mode
VM 的设置。更改共享文件夹的权限:
sudo chmod -R 777 /<path-to-shared-folder>
将所有者更改为您的用户名:
sudo chown -R user:user /<path-to-shared folder>
更改虚拟磁盘文件的权限:
sudo chmod -R 777 /<path-to-virtual-disks>
将所有者更改为您的用户名:
sudo chown -R user:user /<path-to-virtual-disks>
将您的用户名添加到
libvirtd
组:sudo usermod -G libvirtd -a <your-user-name>
授予
libvirt-qemu
用户完全权限:sudo setfacl -R -m u:libvirt-qemu:rwx /*
注意:* = 指定要授予
libvirt-qemu
权限的文件夹目录层次结构。重新启动主机操作系统......现在您应该能够在来宾系统中创建文件。
有关 9p virtio 的信息 ->与来宾共享主机文件| QEMU 文档 9psetup
Mode
指定访问源的安全模式。Mapped
指定使用管理程序的权限设置访问源。Passthrough
指定使用从虚拟来宾机器内部设置的用户权限设置访问源。这是默认模式。Squash
和Passthrough
_chown
_Passthrough
_