Red Hat Training

A Red Hat training course is available for RHEL 8

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

ホストシステムと、そのホストが実行する仮想マシンとの間で、データを共有することが頻繁に必要になります。これを迅速かつ効率的に行うために、システムに NFS ファイル共有をセットアップできます。

14.1. NFS を使用してホストとその仮想マシン間でファイルを共有する

RHEL 9 ホストシステムと仮想マシンの間でファイルを効率的に共有するために、仮想マシンがマウントしてアクセスできる NFS 共有をエクスポートできます。

前提条件

  • nfs-utils パッケージがホストにインストールされている。

    # yum install nfs-utils -y
  • NAT または bridge タイプの仮想ネットワークが、ホストを仮想マシンに接続するように設定されている。
  • (必要に応じて) セキュリティーを強化する場合は、仮想マシンが NFS バージョン 4 以降と互換性があることを確認してください。

手順

  1. ホストで、ネットワークファイルシステム (NFS) として共有するファイルを含むディレクトリーをエクスポートします。

    1. 既存のディレクトリーを仮想マシンと共有します。既存のディレクトリーを共有したくない場合は、新しいディレクトリーを作成します。

      # mkdir shared-files
    2. ホストからファイルを共有するために各仮想マシンの IP アドレスを取得します (例: testguest1testguest2)。

      # virsh domifaddr testguest1
      Name       MAC address          Protocol     Address
      ----------------------------------------------------------------
      vnet0      52:53:00:84:57:90    ipv4         192.0.2.2/24
      
      # virsh domifaddr testguest2
      Name       MAC address          Protocol     Address
      ----------------------------------------------------------------
      vnet1      52:53:00:65:29:21    ipv4         192.0.2.3/24
    3. ホスト上の /etc/exports ファイルを編集し、共有するディレクトリー、共有する仮想マシンの IP、および追加のオプションを含む行を追加します。

      /home/<username>/Downloads/<shared_directory>/ <VM1-IP(options)> <VM2-IP(options)>
      ...

      たとえば、以下は、testguest1 および testguest2 があるホストの /usr/local/shared-files ディレクトリーを共有し、仮想マシンがディレクトリーのコンテンツを編集できるようにします。

      /usr/local/shared-files/ 192.0.2.2(rw,sync) 192.0.2.3(rw,sync)
      注記

      Windows の仮想マシンとディレクトリーを共有するには、Windows NFS クライアントに共有ディレクトリーへの書き込み権限があることを確認する必要があります。/etc/exports ファイルでは、all_squashanonuid、および anongid オプションを使用できます。

      /usr/local/shared-files/ 192.0.2.2(rw,sync,all_squash,anonuid=<directory-owner-UID>,anongid=<directory-owner-GID>)

      <directory-owner-UID><directory-owner-GID> は、ホスト上の共有ディレクトリーを所有するローカルユーザーの UID と GID です。

      NFS クライアントの権限を管理するその他のオプションについては、NFS サービスの保護 ガイドに従ってください。

    4. 更新したファイルシステムをエクスポートします。

      # exportfs -a
    5. nfs-server サービスを起動します。

      # systemctl start nfs-server
    6. ホストシステムの IP アドレスを取得して、仮想マシンに共有ディレクトリーをマウントします。

      # ip addr
      ...
      5: virbr0: [BROADCAST,MULTICAST,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP group default qlen 1000
      link/ether 52:54:00:32:ff:a5 brd ff:ff:ff:ff:ff:ff
      inet 192.0.2.1/24 brd 192.0.2.255 scope global virbr0
      valid_lft forever preferred_lft forever
      ...

      関連するネットワークはホストと仮想マシンを接続してファイルを共有することに注意してください。通常、これは virbr0 です。

  2. /etc/exports ファイルで指定されている Linux 仮想マシンに共有ディレクトリーをマウントします。

    # mount 192.0.2.1:/usr/local/shared-files /mnt/host-share
    • 192.0.2.1: ホストの IP アドレスです。
    • /usr/local/shared-files: ホスト上のエクスポートされたディレクトリーへのファイルシステムパスです。
    • /mnt/host-share: 仮想マシン上のマウントポイントです。

      注記

      マウントポイントは空のディレクトリーである必要があります。

  3. /etc/exports ファイルに指定されているように Windows 仮想マシンに共有ディレクトリーをマウントするには、次の手順を実行します。

    1. 管理者として PowerShell シェルプロンプトを開きます。
    2. Windows に NFS-Client パッケージをインストールします。

      1. サーバーバージョンにインストールするには、次のように入力します。

        # Install-WindowsFeature NFS-Client
      2. デスクトップバージョンにインストールするには、次のように入力します。

        # Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart
    3. ホストによってエクスポートされたディレクトリーを Windows 仮想マシンにマウントします。

      # C:\Windows\system32\mount.exe -o anon \\192.0.2.1\usr\local\shared-files Z:

      この例では、以下のように設定されています。

      • 192.0.2.1: ホストの IP アドレスです。
      • /usr/local/shared-files: ホスト上のエクスポートされたディレクトリーへのファイルシステムパスです。
      • Z:: マウントポイントのドライブ文字です。

        注記

        システムで使用されていないドライブ文字を選択する必要があります。

検証

  • ホストと仮想マシンの間でファイルを共有できるように、仮想マシン上の共有ディレクトリーの内容をリスト表示します。

    $ ls <mount_point>
    shared-file1  shared-file2  shared-file3

    この例では、<mount_point> を、マウントされた共有ディレクトリーへのファイルシステムパスに置き換えます。