第 19 章 在主机及其虚拟机间共享文件
您可能经常需要在主机系统和其运行的虚拟机(VM)之间共享数据。要快速高效地完成此操作,您可以使用 virtio 文件系统(virtiofs)。
19.1. 使用 virtiofs 在主机及其虚拟机之间共享文件 复制链接链接已复制到粘贴板!
通过使用 virtio 文件系统(virtiofs),您可以在主机和虚拟机(VM)之间将文件共享为目录树,其工作原理与本地文件系统结构一样。
19.1.1. 使用命令行在主机和 Linux 虚拟机之间共享文件 复制链接链接已复制到粘贴板!
当使用 RHEL 10 作为 hypervisor 时,您可以使用 virtiofs 功能在主机系统及其虚拟机(VM)之间共享文件。
先决条件
- 虚拟化已在 RHEL 10 主机上 安装并启用了。
您要与虚拟机共享的目录已存在。如果您不想共享任何现有目录,请创建一个新目录,例如:shared-files。
# mkdir /root/shared-files- 您要与其共享文件的虚拟机使用 Linux 发行版作为其客户机操作系统。
流程
对于您要与虚拟机共享的主机的每个目录,请在虚拟机 XML 配置中将其设置为 virtiofs 文件系统。
打开预期虚拟机的 XML 配置。
# virsh edit vm-name在虚拟机 XML 配置的
<devices>部分添加类似于以下内容的条目。<filesystem type='mount' accessmode='passthrough'> <driver type='virtiofs'/> <binary path='/usr/libexec/virtiofsd' xattr='on'/> <source dir='/root/shared-files'/> <target dir='host-file-share'/> </filesystem>本例设置主机上的
/root/shared-files目录,使其作为host-file-share呈现给虚拟机。
为虚拟机设置共享内存。为此,请将共享内存支持添回到 XML 配置的
<domain>部分:<domain> [...] <memoryBacking> <access mode='shared'/> </memoryBacking> [...] </domain>引导虚拟机。
# virsh start vm-name在客户端操作系统中挂载文件系统。以下示例使用 Linux 客户机操作系统挂载之前配置的
host-file-share目录。# mount -t virtiofs host-file-share /mnt
验证
- 确保共享目录可在虚拟机上访问,且您现在可以打开文件存储在 目录中。
故障排除
-
与访问时间相关的文件系统挂载选项(如
noatime和strictatime)可能不适用于 virtiofs,红帽不建议使用它。
19.1.2. 使用 web 控制台在主机和 Linux 虚拟机之间共享文件 复制链接链接已复制到粘贴板!
您可以使用 RHEL web 控制台,使用 virtiofs 功能在主机系统及其虚拟机(VM)之间高效地共享文件。
先决条件
- Web 控制台 VM 插件 已安装在您的系统上。
要与虚拟机共享的目录。如果您不想共享任何现有的目录,请创建一个新目录,例如,名为 centurion。
# mkdir /home/centurion- 您要与之共享数据的虚拟机使用 Linux 发行版作为其客户机操作系统。
流程
在 接口中,点击您要共享文件的虚拟机。
这时将打开一个新页面,其中有一个 Overview 部分,其中包含有关所选虚拟机和 Console 部分的基本信息。
滚动到 。
Shared directory 部分显示由该虚拟机共享的主机文件和目录的信息,以及用来 添加 或 删除 共享目录的选项。
单击 。
此时会显示 Share a host directory with the guest 对话框。
输入以下信息:
- Source path - 您要共享的主机目录的路径。
- Mount tag - 虚拟机用来挂载目录的标签。
设置其它选项:
-
Extended attributes - 设置是否在共享文件和目录上启用扩展属性
xattr。
-
Extended attributes - 设置是否在共享文件和目录上启用扩展属性
单击 。
所选目录与虚拟机共享。
验证
- 确保共享目录可在虚拟机上访问,并且您现在可以打开存储在该目录中的文件。