Menu Close
Settings Close

Language and Page Formatting Options

第19章 ホストとその仮想マシン間でのファイルの共有

ホストシステムと、そのホストが実行する仮想マシンとの間で、データを共有することが頻繁に必要になります。これを素早く効率的に行うには、ファイル共有 NFS または Samba をシステムに設定します。RHEL 9 で新たにサポートされた機能として、virtiofs ファイルシステムを使用して、Linux 仮想マシンとデータを共有することもできます。

19.1. virtiofs を使用したホストとその仮想マシン間でのファイルの共有

RHEL 9 をハイパーバイザーとして使用する場合は、virtiofs 機能を使用して、ホストシステムとその仮想マシン間でファイルを効率的に共有できます。

前提条件

  • 仮想化は、RHEL 9 ホストでインストールされ、有効になります。
  • 仮想マシンと共有するディレクトリーがある。既存のディレクトリーを共有しない場合は、shared-files などの新しいディレクトリーを作成します。

    # mkdir /root/shared-files
  • データを共有する仮想マシンは、ゲスト OS として 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. 共有メモリー用の NUMA トポロジーを XML 設定に追加します。以下の例では、すべての 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 ゲスト OS で事前に設定した host-file-share ディレクトリーをマウントします。

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

検証

  • 共有ディレクトリーが仮想マシンからアクセス可能になり、ディレクトリーに保存されているファイルを開けるようになりました。

既知の問題と制限

  • noatimestrictatime など、アクセス時間に関連するファイルシステムのマウントオプションは virtiofs では機能しない可能性が高く、Red Hat はその使用を推奨しません。

トラブルシューティング

  • virtiofs がユースケースに最適でない場合や、使用できない場合は、NFS または Samba を使用できます。