Compute Engine クライアントへのファイル共有のマウント

このページでは、Compute Engine 仮想マシン(VM)インスタンスに Filestore ファイル共有をマウントする方法について説明します。

クライアント VM は、Filestore インスタンスと同じ Google Cloud プロジェクトと VPC ネットワークに存在する必要があります。オンプレミス ターミナルや VM などのリモート クライアントにファイル共有をマウントする方法については、リモート ネットワーク内のクライアントでのファイル共有のマウントをご覧ください。

準備

Filestore で使用できるようにネットワークのファイアウォールが正しく構成されていることを確認します。詳細については、ファイアウォール ルールの構成をご覧ください。

Compute Engine VM インスタンスにファイル共有をマウントする

次のいずれかの手順を使用して、Filestore ファイル共有を Compute Engine VM にマウントします。

Linux: mount

Linux クライアント VM に手動でファイル共有をマウントするには:

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. クライアントとして使用する Linux VM を見つけて、[SSH] をクリックし、その VM でターミナルを開きます。

  3. 省略可: 複数のネットワーク インターフェースを持つクライアント VM に、セカンダリ ネットワーク経由でファイル共有をマウントします。

    詳細

    クライアント VM に複数のネットワーク インターフェースがあり、セカンダリ ネットワーク(nic0 以外のインターフェース)を介してファイル共有をマウントする場合は、クライアント VM のルーティング ポリシーを構成して、ファイル共有が正しいネットワーク インターフェースを介してマウントされるようにします。これを行うには、クライアント VM で次のコマンドを実行します。

    sudo ip route \
        add filestore-reserved-address-range \
        via default-gateway-of-nic-to-filestore
    

    ここで

    • filestore-reserved-address-range は、Filestore インスタンスで使用するために予約されているアドレス範囲です。
    • default-gateway-of-nic-to-filestore は、Filestore インスタンスと共有されている VPC ネットワークに接続されている NIC のデフォルト ゲートウェイ IP アドレスです。

    複数の NIC で Compute Engine インスタンスを使用する方法については、ポリシー ルーティングの構成をご覧ください。

  4. NFS をインストールします。

    Debian、Ubuntu

    Debian または Ubuntu に NFS をインストールするには、次のコマンドを使用します。

    sudo apt-get -y update &&
    sudo apt-get install nfs-common

    RHEL / CentOS

    Red Hat Enterprise Linux または CentOS に NFS をインストールするには、次のコマンドを使用します。

    sudo yum update &&
    sudo yum install nfs-utils

    SUSE

    SUSE に NFS をインストールするには、次のコマンドを使用します。

    sudo zypper update &&
    sudo zypper -n install nfs-client
  5. Filestore ファイル共有にマッピングするローカル ディレクトリを作成します。

    sudo mkdir -p mount-point-directory
    

    ここで、mount-point-directory は作成するディレクトリです(例: /mnt/filedir)。

  6. mount コマンドを実行して、Filestore インスタンスからファイル共有をマウントします。任意の NFS マウント オプションを使用できます。 最適なパフォーマンスを得るには、デフォルトの NFS mount オプションを使用することをおすすめします。

    デフォルト NFS mount オプション

    デフォルト オプション 説明
    hard NFS クライアントは、NFS リクエストを無期限に再試行します。
    timeo=600 NFS クライアントは、NFS リクエストを再試行するまで 600 デシ秒(60 秒)待ちます。
    retrans=3 NFS クライアントは、NFS リクエストを 3 回試行してから、さらに復旧処理を行います。
    rsize=1048576 NFS クライアントは、NFS サーバーから READ リクエストごとに最大 1,048,576 バイトを受信できます。
    wsize=1048576 NFS クライアントは、NFS サーバーから WRITE リクエストごとに最大 1,048,576 バイトを受信できます。
    resvport NFS クライアントは、このマウント ポイントの NFS サーバーと通信するときに特権ソースポートを使用します。
    async NFS クライアントは、特定の条件が満たされるまで、NFS サーバーへのアプリケーション書き込みの送信を遅らせます。
    注意: sync オプションを使用すると、パフォーマンスが大幅に低下します。

    mount コマンドを実行します。

    sudo mount ip-address:/file-share/file-share-sub-dir mount-point-directory
    

    ここで

    • ip-address は、Filestore インスタンスの IP アドレスです。
    • file-share は、インスタンス上のファイル共有の名前です。
    • file-share-sub-dir は、マウントするファイル共有内のサブディレクトリのパスです。ファイル共有全体をマウントするには、空欄のままにします。
    • mount-point-directory は、Filestore ファイル共有をマッピングするパスです。

    インスタンスの IP アドレスとファイル共有名は、次のいずれかのソースから取得できます。

    たとえば、IP アドレスが 10.0.1.2 であり、ファイル共有名が share1 である Filestore インスタンスの場合、次のコマンドはファイル共有をローカル マウント ポイント ディレクトリ /mnt/render にマウントします。

    sudo mount 10.0.1.2:/share1 /mnt/render
    
  7. 省略可: chmod を実行してマウント ディレクトリに権限を設定し、root ユーザー以外のユーザーが書き込みできるようにします。次のコマンドを実行して、ディレクトリ権限を設定します。

    sudo chmod permissions mount-point-directory
    

    ここで

    • permissions は、付与する権限セットです。たとえば、chmod go+rw を設定すると、ディレクトリは、そのディレクトリを所有するグループ内のユーザーとその他の全ユーザーが読み取りと書き込みを行えるようになります。権限の設定の詳細については、ファイル共有のアクセス権限を構成するをご覧ください。
    • mount-point-directory は、Filestore ファイル共有がマウントされているディレクトリへのパスです。
  8. 省略可: Filestore ファイル共有がマウントされていることを確認します。

    df -h --type=nfs
    

    出力には、次のようなエントリが含まれます。

    Filesystem        Size    Used  Avail  Use%  Mounted on
    10.0.1.2:/share1  1018G   76M   966G   1%    /mnt/render
    10.0.2.2:/vol3    1018G   76M   966G   1%    /mnt/filestore3
  9. マウントされた Filestore ファイル共有で使用する予定のアプリケーションで NFS ファイルロックが必要であり、そのクライアント VM インスタンスで、設定が未変更であるデフォルトの VPC ネットワーク以外のネットワークが使用されている場合、ファイアウォール構成をより容易に行うために、イスタンスに 2 つのポートを設定する必要が生じることがあります。VPC ネットワークに対してファイアウォール ルールを構成する必要があるかどうかを判別する方法の詳細については、ファイアウォール ルールの構成をご覧ください。ポートの設定の詳細については、NFS ポートの設定をご覧ください。

Linux: /etc/fstab

クライアントの /etc/fstab ファイルを変更することで、起動時にファイル共有をクライアント VM に自動的にマウントできます。

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. クライアントとして使用する Linux VM を見つけて、[SSH] をクリックし、その VM でターミナルを開きます。

  3. 省略可: 複数のネットワーク インターフェースを持つクライアント VM に、セカンダリ ネットワーク経由でファイル共有をマウントします。

    詳細

    クライアント VM に複数のネットワーク インターフェースがあり、セカンダリ ネットワーク(nic0 以外のインターフェース)を介してファイル共有をマウントする場合は、クライアント VM のルーティング ポリシーを構成して、ファイル共有が正しいネットワーク インターフェースを介してマウントされるようにします。これを行うには、次のファイルを変更します。

    • /etc/default/instance_configs.cfg で、NetworkInterfacessetup フラグを false に設定します。
      [NetworkInterfaces]
      dhclient_script = /sbin/google-dhclient-script
      dhcp_command =
      ip_forwarding = true
         setup = false
      
    • /etc/network/interfaces に、次の行を追加します。

      auto eth1
      iface eth1 inet dhcp
          up ip route add filestore-reserved-address-range via default-gateway-of-nic-to-filestore
      

    ここで

    • filestore-reserved-address-range は、Filestore インスタンスで使用するために予約されているアドレス範囲です。
    • default-gateway-of-nic-to-filestore は、Filestore インスタンスと共有されている VPC ネットワークに接続されている NIC のデフォルト ゲートウェイ IP アドレスです。

    複数の NIC で Compute Engine インスタンスを使用する方法については、ポリシー ルーティングの構成をご覧ください。

  4. NFS をインストールします。

    * { Debian/Ubuntu } 次のコマンドを使用して、NFS を Debian または Ubuntu にインストールします。
    sudo apt-get -y update &&
    sudo apt-get install nfs-common
    * { RHEL/CentOS } Red Hat Enterprise Linux または CentOS に NFS をインストールするには、次のコマンドを使用します。
    sudo yum update &&
    sudo yum install nfs-utils
    * { SUSE } SUSE に NFS をインストールするには、次のコマンドを使用します。
    sudo zypper update &&
    sudo zypper -n install nfs-client
  5. Filestore ファイル共有にマッピングするローカル ディレクトリを作成します。

    sudo mkdir -p mount-point-directory
    

    ここで、mount-point-directory は作成するディレクトリです(例: /mnt/filedir)。

  6. /etc/fstab ファイルを開きます。

    sudo vim /etc/fstab
    
  7. 次の行を /etc/fstab ファイルに追加します。

    ip-address:/file-share/file-share-sub-dir mount-point-directory nfs defaults,_netdev 0 0
    

    ここで

    • ip-address は、Filestore インスタンスの IP アドレスです。
    • file-share は、インスタンス上のファイル共有の名前です。
    • file-share-sub-dir は、マウントするファイル共有内のサブディレクトリのパスです。ファイル共有全体をマウントするには、空欄のままにします。
    • mount-point-directory は、Filestore ファイル共有をマッピングするパスです。

    : /etc/fstab の次の行は、IP アドレス 10.0.0.2 の Filestore インスタンスのファイル共有 vol1 を、デフォルトのマウント オプションで、マウント ポイント ディレクトリ /mnt にマウントします。

    10.0.0.2:/vol1 /mnt nfs defaults 0 0
    
  8. /etc/fstab 内のすべてをマウントします。

    sudo mount -a
    

    これで、クライアント VM が起動するたびにファイル共有が自動的にマウントされます。

Linux: autofs

アクセスしているときにのみファイル共有を自動的にマウントし、使用されていないときはマウント解除のまま維持するように、autofs を構成できます。ファイル共有を /etc/fstab に静的にマウントする場合と比較して、この方法では、クライアントが多数のマウント ポイントにマッピングする必要がある場合にクライアント VM リソースを節約できます。

クライアント VM で NFSautofs をインストールする

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. クライアントとして使用する Linux VM を見つけて、[SSH] をクリックし、その VM でターミナルを開きます。

  3. 省略可: 複数のネットワーク インターフェースを持つクライアント VM に、セカンダリ ネットワーク経由でファイル共有をマウントします。

    詳細

    クライアント VM に複数のネットワーク インターフェースがあり、セカンダリ ネットワーク(nic0 以外のインターフェース)を介してファイル共有をマウントする場合は、クライアント VM のルーティング ポリシーを構成して、ファイル共有が正しいネットワーク インターフェースを介してマウントされるようにします。これを行うには、次のファイルを変更します。

    • /etc/default/instance_configs.cfg で、NetworkInterfacessetup フラグを false に設定します。
      [NetworkInterfaces]
      dhclient_script = /sbin/google-dhclient-script
      dhcp_command =
      ip_forwarding = true
         setup = false
      
    • /etc/network/interfaces に、次の行を追加します。

      auto eth1
      iface eth1 inet dhcp
          up ip route add filestore-reserved-address-range via default-gateway-of-nic-to-filestore
      

    ここで

    • filestore-reserved-address-range は、Filestore インスタンスで使用するために予約されているアドレス範囲です。
    • default-gateway-of-nic-to-filestore は、Filestore インスタンスと共有されている VPC ネットワークに接続されている NIC のデフォルト ゲートウェイ IP アドレスです。

    複数の NIC で Compute Engine インスタンスを使用する方法については、ポリシー ルーティングの構成をご覧ください。

  4. 次のコマンドを実行して、NFS をインストールします。

    * { Debian/Ubuntu } 次のコマンドを使用して、NFS を Debian または Ubuntu にインストールします。
    sudo apt-get -y update &&
    sudo apt-get install nfs-common
    * { RHEL/CentOS } Red Hat Enterprise Linux または CentOS に NFS をインストールするには、次のコマンドを使用します。
    sudo yum update &&
    sudo yum install nfs-utils
    * { SUSE } SUSE に NFS をインストールするには、次のコマンドを使用します。
    sudo zypper update &&
    sudo zypper -n install nfs-client
  5. クライアント VM のターミナル ウィンドウで、autofs をインストールします。

    Debian、Ubuntu

    sudo apt-get install autofs
    

    RHEL / CentOS

    sudo yum install autofs
    

    SUSE

    sudo zypper -n install autofs
    

クライアント VM にファイル共有を動的にマウントするように autofs を構成する

  1. autofs の有効化:

    sudo systemctl enable --now autofs
    
  2. Filestore ファイル共有にマッピングするローカル ディレクトリを作成します。

    sudo mkdir -p mount-point-directory
    

    ここで、mount-point-directory は作成するディレクトリです。サブディレクトリを含めることはできません。このガイドでは、マウント ポイント ディレクトリとして /nfs を使用します。

  3. /etc/auto.master ファイルを開きます。

    sudo vim /etc/auto.master
    
  4. /etc/auto.master ファイルに次の行を追加します。

    /nfs /etc/auto.nfs --timeout seconds
    

    ここで、seconds はマウント タイムアウトまでの秒数です。 デフォルト値は 300 です。この値を 0 に設定すると、autofs によるマウント解除が無効になります。

  5. /etc/auto.nfs というファイルを作成します。

    sudo vim /etc/auto.nfs
    
  6. /etc/auto.nfs ファイルに次の行を追加します。

    mount-point-subdir options ip-address:/file-share/file-share-sub-dir
    

    ここで

    • mount-point-subdir は、Filestore ファイル共有をマッピングする /nfs のサブディレクトリです。このサブディレクトリは動的に生成され、クライアント VM 内に存在してはなりません。
    • options は、NFS マウント オプションです。デフォルトのオプションを使用する場合は、このフィールドを空白のままにします。
    • ip-address は、Filestore インスタンスの IP アドレスです。
    • file-share は、インスタンス上のファイル共有の名前です。
    • file-share-sub-dir は、マウントするファイル共有内のサブディレクトリのパスです。ファイル共有全体をマウントするには、空欄のままにします。

    : /etc/auto.nfs の次の行は、IP アドレス 10.0.0.2 の Filestore インスタンスのファイル共有 vol1 を、read/write アクセス権を付与して、動的に生成されたサブディレクトリ file-shares にマウントします。

    file-shares -rw 10.0.0.2:/vol1
    

構成をテストする

  1. ファイル共有が現在マウントされている場合は、マウントを解除する必要があります。

    sudo umount mount-point-directory
    

    ここで、mount-point-directory は Filestore ファイル共有のマッピング先のパスです。

    システム起動時にファイル共有をマウントする /etc/fstab エントリがある場合、必ず削除します。

  2. autofs を再読み込みします。

    sudo service autofs reload
    
  3. 構成が機能していることを確認します。

    ls mount-point-directory/mount-point-subdir
    

    ここで

    • mount-point-directory は、/etc/auto.master ファイルで示されるマウント ポイント ディレクトリです。
    • mount-point-subdir は、/etc/auto.nfs ファイルで示されるマウント ポイント サブディレクトリです。

    この例では、コマンドは次のようになります。

    ls /nfs/file-shares
    

    自動マウントが正しく構成されると、システムは最初にファイル共有をマウントしてから、ls コマンドの結果を返します。ファイル共有は、/etc/auto.master ファイルで指定された timeout 値によって定義された非アクティブ期間後に、自動的にマウント解除されます。

Windows

Windows VM に接続する

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. クライアントとして使用する Windows VM を見つけて、[RDP] をクリックし、その VM へのリモート デスクトップ接続を開きます。詳細については、Windows インスタンスに接続するをご覧ください。

Windows VM に NFS をインストールする

  1. Windows VM で、管理者として PowerShell を開きます。
  2. PowerShell で NFS クライアントをインストールします。

    Install-WindowsFeature -Name NFS-Client
    
  3. 指示に従って Windows VM インスタンスを再起動し、新しいリモート デスクトップ接続を開きます。

NFS クライアントが使用するユーザー ID を構成する

  1. PowerShell で次のコマンドを実行して、2 つの新しいレジストリ エントリ AnonymousUidAnonymousGid を作成します。

    New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" `
        -Name "AnonymousUid" -Value "0" -PropertyType DWORD
    
    New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" `
        -Name "AnonymousGid" -Value "0" -PropertyType DWORD
    
  2. NFS クライアント サービスを再起動します。

    nfsadmin client stop
    
    nfsadmin client start
    

ファイル共有を Windows VM にマッピングする

  1. PowerShell を終了します。

    exit
    
  2. Command Prompt で、ファイル共有をドライブ文字にマッピングします。

    mount filestore-ip:/file-share-name drive-letter:
    

    ここで

    • filestore-ip は、Filestore インスタンスの IP アドレスです。
    • file-share-name は、Filestore インスタンス上のファイル共有の名前です。
    • drive-letter は、マッピングに割り当てるドライブ文字です。

    次のコマンドは、IP アドレス 10.0.0.2 の Filestore インスタンスのファイル共有 vol1 を、クライアント Windows VM のドライブ z: にマッピングします。

    mount 10.0.0.2:/vol1 z:
    

次のステップ