Menu Close
Settings Close

Language and Page Formatting Options

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

您可能需要在主机系统和其运行的虚拟机(VM)间共享数据。要快速有效地完成此操作,您可以在系统中设置 NFS 或 Samba 文件共享。作为 RHEL 9 中新支持的功能,您还可以使用 virtiofs 文件系统与 Linux 虚拟机共享数据。

19.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 配置添加共享内存的 NUMA 拓扑。以下示例为所有 CPU 和所有 RAM 添加基本拓扑。

    <cpu mode='host-passthrough' check='none'>
      <numa>
        <cell id='0' cpus='0-{number-vcpus - 1}' memory='{ram-amount-KiB}' unit='KiB' memAccess='shared'/>
      </numa>
    </cpu>
  3. 将共享内存支持添加到 XML 配置的 <domain> 部分:

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

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

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

验证

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

限制和已知问题

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

故障排除

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