20.2. 使用 virtiofs 在主机及其虚拟机之间共享文件


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

20.2.1. 使用 virtiofs 在主机及其虚拟机之间共享文件

当使用 RHEL 9 作为管理程序时,您可以使用 virtiofs 功能在主机系统及其虚拟机(VM)之间高效地共享文件。

先决条件

  • 虚拟化已在 RHEL 9 主机 上安装并启用
  • 要与虚拟机共享的目录。如果您不想共享任何现有目录,请创建一个新目录,例如: shared-files

    # mkdir /root/shared-files
  • 您要与之共享数据的虚拟机使用 Linux 发行版作为其客户机操作系统。

流程

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

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

      # virsh edit vm-name
    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>

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

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

    <domain>
     [...]
     <memoryBacking>
       <access mode='shared'/>
     </memoryBacking>
     [...]
    </domain>
  3. 引导虚拟机。

    # virsh start vm-name
  4. 在客户端操作系统中挂载文件系统。以下示例使用 Linux 客户机操作系统挂载之前配置的 host-file-share 目录。

    # mount -t virtiofs host-file-share /mnt

验证

  • 确保共享目录可在虚拟机上访问,且您现在可以打开文件存储在 目录中。

限制和已知问题

  • 与访问时间相关的文件系统挂载选项(如 noatimestrictatime )可能不适用于 virtiofs,红帽不建议使用它。

故障排除

  • 如果 virtiofs 不适用于您的用例或系统不支持,您可以使用 NFS

20.2.2. 使用 virtiofs 在主机和 Windows 虚拟机之间共享文件

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

注意

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

先决条件

流程

  1. 在 Windows 虚拟机上,安装 WinFsp。为此,请挂载 virtio-win ISO 镜像,启动 winfsp MSI 安装程序,并按照提示进行操作。

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

  2. 启动 virtiofs 服务:

    # sc start VirtioFsSvc
  3. 进入 This PC:

    File Explorer This PC

    virtiofs 应作为从 z: 开始的第一个可用驱动器符在 Windows 虚拟机上提供,并向后移动。例如,my_viofs (Z:)

    重要

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

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

    1. 停止 virtiofs 服务:

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

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

      例如,将带有标签 mount_tag0 的 virtiofs 挂载到 Y: 驱动器:

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

      "C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" stop virtiofs viofsY

验证

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

    File Explorer This PC

    • 如果您在设置 virtiofs 服务时没有指定挂载点,它将使用以 z: 开始的第一个可用驱动器符,并往后移动。
    • 如果您设置了多个 virtiofs 实例,它们将显示为具有您分配给实例的符号的驱动器。

20.2.3. 在 web 控制台中使用 virtiofs 在主机及其虚拟机之间共享文件

您可以通过 RHEL web 控制台使用 virtiofs 功能在主机系统及其虚拟机(VM)之间高效地共享文件。

先决条件

  • Web 控制台 VM 插件 已安装在您的系统上
  • 要与虚拟机共享的目录。如果您不想共享任何现有的目录,请创建一个新目录,例如,名为 centurion

    # mkdir /home/centurion
  • 您要与之共享数据的虚拟机使用 Linux 发行版作为其客户机操作系统。

流程

  1. Virtual Machines 接口中,点击您要共享文件的虚拟机。

    这时将打开一个新页面,其中有一个 Overview 部分,其中包含有关所选虚拟机和 Console 部分的基本信息。

  2. 滚动到 Shared directories

    Shared directory 部分显示由该虚拟机共享的主机文件和目录的信息,以及用来 添加删除 共享目录的选项。

    显示与所选虚拟机共享的目录的图片。
  3. 单击 Add shared directory

    此时会出现 与客户机共享主机目录 对话框。

    显示与与客户机共享主机目录的对话框的图片。
  4. 输入以下信息:

    • Source path - 您要共享的主机目录的路径。
    • Mount tag - 虚拟机用来挂载目录的标签。
  5. 设置其它选项:

    • Extended attributes - 设置是否在共享文件和目录上启用扩展属性 xattr
  6. 单击 Share

    所选目录与虚拟机共享。

验证

  • 确保共享目录可在虚拟机上访问,并且您现在可以打开存储在该目录中的文件。

20.2.4. 使用 web 控制台,使用 virtiofs 删除主机及其虚拟机之间的共享文件

您可以通过 RHEL web 控制台使用 virtiofs 功能删除主机系统及其虚拟机(VM)之间共享的文件。

先决条件

流程

  1. Virtual Machines 接口中,点击您要从中删除共享文件的虚拟机。

    这时将打开一个新页面,其中有一个 Overview 部分,其中包含有关所选虚拟机和 Console 部分的基本信息。

  2. 滚动到 Shared directories

    Shared directory 部分显示由该虚拟机共享的主机文件和目录的信息,以及用来 添加删除 共享目录的选项。

    显示与所选虚拟机共享的目录的图片。
  3. 点击您要与虚拟机解除共享的目录旁边的 Remove

    此时会出现 Remove filesystem 对话框。

    显示删除文件系统对话框的图片。
  4. 点击 Remove

    所选目录与虚拟机解除共享。

验证

  • 共享目录对虚拟机不再可用和可访问。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.