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

このページでは、同じ Google Cloud プロジェクトと VPC ネットワークにある Compute Engine 仮想マシン(VM)インスタンスに Filestore ファイル共有をマウントする方法について説明します。リモート ネットワーク内のクライアントにファイル共有をマウントする方法については、リモート クライアントにファイル共有をマウントするをご覧ください。Google Kubernetes Engine クラスタから Filestore インスタンスにアクセスする場合は、Filestore CSI ドライバを使用して Filestore インスタンスにアクセスするをご覧ください。

始める前に

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

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

次のいずれかの手順を使用して、Filestore ファイル共有を Compute Engine VM にマウントします。最適なパフォーマンスを得るには、n1-standard-8 VM 以降にマウントすることをおすすめします。

Linux: mount

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

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

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

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

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

    詳細(クリックして拡大)

    セカンダリ ネットワーク(nic0 以外のインターフェース)を介してファイル共有をマウントする場合は、クライアント 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 オプションを使用することをおすすめします。

    オプション 説明
    hard NFS クライアントは、NFS リクエストを無期限に再試行します。Filestore インスタンスを再起動したときに I/O 停止の可能性を減らすには、Linux と Windows の両方のクライアントに hard マウント オプションを使用することをおすすめします。
    timeo=600 NFS クライアントは、NFS リクエストを再試行するまで 600 デシ秒(60 秒)待ちます。
    retrans=3 NFS クライアントは、NFS リクエストを 3 回試行してから、さらに復旧処理を行います。
    rsize=262144 NFS クライアントは、NFS サーバーから READ リクエストごとに最大 262,144 バイトを受信できます。
    : ベーシック ティア インスタンスの場合は、rsize 値を 1048576 に設定します。
    wsize=1048576 NFS クライアントは、NFS サーバーから WRITE リクエストごとに最大 1,048,576 バイトを受信できます。
    resvport NFS クライアントは、このマウント ポイントの NFS サーバーと通信するときに特権ソースポートを使用します。
    async NFS クライアントは、特定の条件が満たされるまで、NFS サーバーへのアプリケーション書き込みの送信を遅らせます。
    注意: sync オプションを使用すると、パフォーマンスが大幅に低下します。
    • マウント レイテンシを短縮するには、-o tcp オプションを指定します。
    • Linux カーネル バージョン 5.3 以降を実行しているクライアント VM にエンタープライズまたはゾーン(以前は高スケール SSD)階層インスタンスをマウントする場合は、NFS のパフォーマンスを向上させるために nconnect の指定を検討してください。ゾーン階層の場合は最大 7 個の接続を指定し、エンタープライズ階層の場合は最大 2 個の接続を指定することをおすすめします。一般に、ファイル共有の容量が大きく、接続しているクライアント VM が少ないほど、nconnect で追加の接続を指定することでパフォーマンスが向上します。

    次のような任意のオプションを指定して mount コマンドを実行します。

    sudo mount -o rw,intr ip-address:/file-share mount-point-directory
    

    ここで

    • ip-address は、Filestore インスタンスの IP アドレスです。
    • file-share は、インスタンス上のファイル共有の名前です。
    • 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. NFS ファイルのロックを使用する必要がある場合は、statdおよびnlockmgrデーモンが使用するポートを設定し、それらのポートを開放するためのファイアウォール ルールを構成する必要があるかもしれません。

Linux: /etc/fstab

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

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

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

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

  3. 省略可: 複数のネットワーク インターフェースを持つクライアント 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

    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. /etc/fstab ファイルを開きます。

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

    ip-address:/file-share mount-point-directory nfs options,_netdev 0 0
    

    ここで

    • ip-address は、Filestore インスタンスの IP アドレスです。
    • file-share は、インスタンス上のファイル共有の名前です。
    • mount-point-directory は、Filestore ファイル共有をマッピングするパスです。
    • options は、NFS マウント オプションです。以下の例外を除き、デフォルトの NFS マウント オプションを使用することをおすすめします。
      • 自動マウントを使用する場合は、マウント時とマウント解除時のレイテンシを短縮するために、-o tcp を指定することをおすすめします。
      • Linux カーネル バージョン 5.3 以降を実行しているクライアント VM にゾーン(以前は高スケール SSD)階層インスタンスをマウントする場合は、NFS を増やすために nconnect マウント オプションを指定することを検討してください。ゾーン階層の場合は最大 7 個の接続を指定し、エンタープライズ階層の場合は最大 2 個の接続を指定することをおすすめします。一般に、ファイル共有の容量が大きく、接続しているクライアント VM が少ないほど、nconnect で追加の接続を指定することでパフォーマンスが向上します。

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

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

    sudo mount -a
    

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

Linux: autofs

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

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

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

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

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

  3. 省略可: 複数のネットワーク インターフェースを持つクライアント 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

    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. クライアント 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
    

    ここで

    • mount-point-subdir は、Filestore ファイル共有をマッピングする /nfs のサブディレクトリです。このサブディレクトリは動的に生成され、クライアント VM 内に存在してはなりません。
    • options は、NFS マウント オプションです。以下の例外を除き、デフォルトの NFS マウント オプションを使用することをおすすめします。
      • 自動マウントを使用する場合は、マウント時とマウント解除時のレイテンシを短縮するために、-o tcp を指定することをおすすめします。
      • Linux カーネル バージョン 5.3 以降を実行しているクライアント VM にゾーン(以前は高スケール SSD)階層インスタンスをマウントする場合は、NFS を増やすために nconnect マウント オプションを指定することを検討してください。ゾーン階層の場合は最大 7 個の接続を指定し、エンタープライズ階層の場合は最大 2 個の接続を指定することをおすすめします。一般に、ファイル共有の容量が大きく、接続しているクライアント VM が少ないほど、nconnect で追加の接続を指定することでパフォーマンスが向上します。
      • ip-address は、Filestore インスタンスの IP アドレスです。
      • file-share は、インスタンス上のファイル共有の名前です。

    : /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. Google Cloud コンソールで、[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. 省略可: 複数のネットワーク インターフェースを持つクライアント VM に、セカンダリ ネットワーク経由でファイル共有をマウントします。

    詳細(クリックして拡大)

    セカンダリ ネットワーク(nic0 以外のインターフェース)を介してファイル共有をマウントする場合は、クライアント VM のルーティング ポリシーを変更する必要があります。下記を実行します。

    route -p ^
        add filestore-reserved-address-range ^
        mask address-range-subnet-mask ^
        default-gateway-of-nic-to-filestore
    

    ここで

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

    :

    route -p add 10.65.21.176 mask 255.255.255.248 10.128.0.1
    

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

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

    mount -o mtype=hard 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 -o mtype=hard 10.0.0.2:/vol1 z:
    
  4. 省略可: NFS ファイルのロックを使用するには、次の点を確認します。

    1. 必要なすべての NFS ポート(statdnlockmgr を含む)に対してファイアウォール ルールが構成されていることを確認します。

    2. PowerShell で次のようなコマンドを使用して、Windows NFS クライアントが予約済みポートで構成されていることを確認します。

      nfsadmin client config protocol=tcp UseReservedPorts=yes
      nfsadmin client stop
      nfsadmin client start
      

ファイル共有上にサブディレクトリを作成し、マウントする

ファイル共有がクライアント VM にマウントされると、ファイル共有上にサブディレクトリを作成できます。これにより、クライアントがファイル共有全体をマウントする代わりに、直接マウントできるようになります。

  1. マウントされたファイル共有上にサブディレクトリを作成するには、次のコマンドを実行します。

    sudo mkdir -p mount-point-directory/file-share-sub-dir
    

    ここで

    • mount-point-directory は、ファイル共有をマッピングするパスです。
    • file-share-sub-dir は、作成するファイル共有のサブディレクトリのパスです。

    このコマンドは、クライアント VM とファイル共有の両方にサブディレクトリを作成します。たとえば、ファイル共有の 10.0.0.2:/vol1 をクライアント VM のディレクトリ /mnt にマウントした場合、コマンド sudo mkdir -p /mnt/nfs は、ファイル共有に 10.0.0.2:/vol1/nfs を作成し、クライアント VM には /mnt/nfs を作成します。

  2. 省略可: ファイル共有がマウントされているクライアント VM 上のディレクトリにファイル共有サブディレクトリをマウントする場合は、まずファイル共有をマウント解除する必要があります。

    sudo umount mount-point-directory
    

    ここで、mount-point-directory はファイル共有がマッピングされているディレクトリです。

  3. サブディレクトリをマウントします。

    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 ファイル共有をマッピングするパスです。

    : 次のコマンドで、

    sudo mount 10.0.0.2:/vol1/nfs /mnt/nfs
    
    • 10.0.0.2 は、Filestore インスタンスの IP アドレスです。
    • vol1 はファイル共有の名前です。
    • nfs はファイル共有サブディレクトリです。
    • /mnt/nfs は、ファイル共有サブディレクトリ nfs がマッピングされているクライアント VM 上のディレクトリです。

次のステップ