20.2. 使用 virtiofs 在主机及其虚拟机之间共享文件
使用 virtiofs,您可以在主机和虚拟机(VM)之间将文件共享为与本地文件系统结构相同的目录树。
20.2.1. 使用 virtiofs 在主机及其虚拟机之间共享文件
当使用 RHEL 9 作为管理程序时,您可以使用 virtiofs
功能在主机系统及其虚拟机(VM)之间高效地共享文件。
先决条件
- 虚拟化已在 RHEL 9 主机 上安装并启用。
要与虚拟机共享的目录。如果您不想共享任何现有目录,请创建一个新目录,例如: 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,红帽不建议使用它。
故障排除
-
如果
virtiofs
不适用于您的用例或系统不支持,您可以使用 NFS。
20.2.2. 使用 virtiofs 在主机和 Windows 虚拟机之间共享文件
当使用 RHEL 9 作为 hypervisor 时,您可以使用 virtiofs
功能以及 virtio-win
软件包在主机系统和 Windows 虚拟机(VM)之间高效地共享文件。
您可以使用 virtiofs.exe
命令和 -i
参数在 Windows 虚拟机上运行 virtiofs
服务,不区分大小写。
先决条件
- 您已将虚拟机的 XML 配置文件配置为使用 virtiofs。详情请查看 第 20.2.1 节 “使用 virtiofs 在主机及其虚拟机之间共享文件”。
-
您已将
virtio
驱动程序安装介质附加到虚拟机。 -
您已在 Windows 虚拟机上安装了
virtio-win
软件包。如需更多信息,请参阅在 Windows 客户端中安装 virtio 驱动程序。
流程
在 Windows 虚拟机上,安装 WinFsp。为此,请挂载
virtio-win
ISO 镜像,启动winfsp
MSI 安装程序,并按照提示进行操作。在安装向导的 Custom Setup 窗口中,选择您要在虚拟机上安装的功能。
启动 virtiofs 服务:
# sc start VirtioFsSvc
进入 This PC:
File Explorer
This PC virtiofs 应作为从
z:
开始的第一个可用驱动器符在 Windows 虚拟机上提供,并向后移动。例如,my_viofs (Z:)
。重要您必须在每次虚拟机重启后重启 virtiofs 服务来访问共享目录。
可选:要设置额外的 virtiofs 实例:
停止 virtiofs 服务:
# sc stop VirtioFsSvc # sc config VirtioFsSvc start=demand
配置 WinFSP.Launcher 服务以设置多个 virtiofs 实例:
# "C:\Program Files (x86)\WinFsp\bin\fsreg.bat" virtiofs "<path to the binary>\virtiofs.exe" "-t %1 -m %2"
将 virtiofs 实例挂载到驱动器。
例如,将带有标签
mount_tag0
的 virtiofs 挂载到Y:
驱动器:"C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" start virtiofs viofsY mount_tag0 Y:
- 重复上述步骤以挂载所有 virtiofs 实例。
要卸载 virtiofs 实例:
"C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" stop virtiofs viofsY
验证
在 Windows 虚拟机上,导航到 This PC:
File Explorer
This PC -
如果您在设置 virtiofs 服务时没有指定挂载点,它将使用以
z:
开始的第一个可用驱动器符,并往后移动。 - 如果您设置了多个 virtiofs 实例,它们将显示为具有您分配给实例的符号的驱动器。
-
如果您在设置 virtiofs 服务时没有指定挂载点,它将使用以