第 20 章 在主机及其虚拟机间共享文件


您可能需要在主机系统和其运行的虚拟机(VM)之间共享数据。要快速高效地完成此操作,您可以使用 virtio 文件系统(virtiofs)。

通过使用 virtio 文件系统(virtiofs),您可以在主机和虚拟机(VM)之间共享文件,作为与本地文件系统结构相同的目录树。

当使用 RHEL 10 作为 hypervisor 时,您可以使用 virtiofs 功能以及 virtio-win 软件包在主机系统和 Windows 虚拟机(VM)之间高效地共享文件。

注意

您可以使用 virtiofs.exe 命令和 -i 参数在 Windows 虚拟机上以区分大小写的模式运行 virtiofs 服务。

先决条件

  • 要与虚拟机共享的目录。如果您不想共享任何现有目录,请创建一个新目录,例如: shared-files

    # mkdir /root/shared-files
    Copy to Clipboard Toggle word wrap
  • 您已将 virtio 驱动程序安装介质附加到虚拟机。
  • 您已将 virtio 驱动程序安装介质附加到虚拟机
  • 您已在 Windows 虚拟机上安装了 virtio-win 软件包。如需更多信息,请参阅在 Windows 客户端中安装 virtio 驱动程序

流程

  1. 对于您要与虚拟机共享的主机的每个目录,请在虚拟机 XML 配置中将其设置为 virtiofs 文件系统。

    1. 打开预期虚拟机的 XML 配置。

      # virsh edit vm-name
      Copy to Clipboard Toggle word wrap
    2. 在虚拟机 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>
      Copy to Clipboard Toggle word wrap

      本例设置主机上的 /root/shared-files 目录,使其作为 host-file-share 呈现给虚拟机。

  2. 为虚拟机设置共享内存。为此,请将共享内存支持添回到 XML 配置的 <domain> 部分:

    <domain>
     [...]
     <memoryBacking>
       <access mode='shared'/>
     </memoryBacking>
     [...]
    </domain>
    Copy to Clipboard Toggle word wrap
  3. 引导虚拟机。

    # virsh start vm-name
    Copy to Clipboard Toggle word wrap
  4. 在 Windows 虚拟机上,安装 WinFsp。为此,请挂载 virtio-win ISO 镜像,启动 winfsp MSI 安装程序,并按照提示进行操作。

    在安装向导的 Custom Setup 窗口中,选择您要在虚拟机上安装的功能。

  5. 启动 virtiofs 服务:

    # sc start VirtioFsSvc
    Copy to Clipboard Toggle word wrap
  6. 进入 This PC:

    File Explorer This PC

    如果正确配置,则 virtiofs 可以在 Windows 虚拟机上作为以 Z: 开始的第一个可用驱动器符提供,然后是后向。例如,my_viofs (Z:)

    重要

    您必须在每次虚拟机重启后重启 virtiofs 服务来访问共享目录。

  7. 可选:要设置额外的 virtiofs 实例:

    1. 停止 virtiofs 服务:

      # sc stop VirtioFsSvc
      # sc config VirtioFsSvc start=demand
      Copy to Clipboard Toggle word wrap
    2. 配置 WinFSP.Launcher 服务以设置多个 virtiofs 实例:

      # "C:\Program Files (x86)\WinFsp\bin\fsreg.bat" virtiofs "<path to the binary>\virtiofs.exe" "-t %1 -m %2"
      Copy to Clipboard Toggle word wrap
    3. virtiofs 实例挂载到驱动器中。

      例如,要将带有标签 mount_tag0virtiofs 挂载到 Y: 驱动器:

      "C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" start virtiofs viofsY mount_tag0 Y:
      Copy to Clipboard Toggle word wrap
    4. 重复上述步骤,挂载所有 virtiofs 实例。
    5. 卸载 virtiofs 实例:

      "C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" stop virtiofs viofsY
      Copy to Clipboard Toggle word wrap

验证

  1. 在 Windows 虚拟机上,导航到 This PC:

    File Explorer This PC

    • 如果您在设置 virtiofs 服务时没有指定挂载点,它将使用以 z: 开头的第一个可用驱动器符,然后后向。
    • 如果您设置了多个 virtiofs 实例,它们将显示为带有您分配给实例的字母的驱动器。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat