19.2. virtiofs를 사용하여 호스트와 해당 가상 머신 간 파일 공유

RHEL 9를 하이퍼바이저로 사용하는 경우 virtiofs 기능을 사용하여 호스트 시스템과 VM(가상 머신) 간에 파일을 효율적으로 공유할 수 있습니다.

사전 요구 사항

  • RHEL 9 호스트에 가상화가 설치 및 활성화되어 있습니다.
  • VM과 공유할 디렉터리입니다. 기존 디렉터리를 공유하지 않으려면 새 디렉터리(예: shared-files )를 만듭니다.

    # mkdir /root/shared-files
  • 데이터를 공유하려는 VM은 Linux 배포를 게스트 OS로 사용하는 것입니다.

절차

  1. VM과 공유할 호스트의 각 디렉터리에 대해 VM의 XML 구성에서 virtiofs 파일 시스템으로 설정합니다.

    1. 원하는 VM의 XML 구성을 엽니다.

      # virsh edit vm-name
    2. 다음과 유사한 항목을 VM 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 로 VM으로 표시되도록 설정합니다.

  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. VM을 부팅합니다.

    # virsh start vm-name
  5. 게스트 운영 체제(OS)에 파일 시스템을 마운트합니다. 다음 예제는 이전에 구성된 host-file-share 디렉터리를 Linux 게스트 OS와 함께 마운트합니다.

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

검증

  • VM에서 공유 디렉터리에 액세스할 수 있게 되고 이제 디렉터리에 저장된 파일을 열 수 있는지 확인합니다.

알려진 문제 및 제한 사항

  • noatimestrictatime 과 같은 액세스 시간과 관련된 파일 시스템 마운트 옵션은 virtiofs에서 작동하지 않을 수 있으며 Red Hat은 사용을 권장하지 않습니다.

문제 해결

  • virtiofs 가 사용 사례에 적합하지 않거나 시스템에 지원되는 경우 NFS 를 대신 사용할 수 있습니다.