トラブルシューティング

このページでは、Filestore の使用中に問題が発生した場合に役立つトラブルシューティング手順について説明します。

パフォーマンスの低下

  1. クライアント VM に推奨マシンタイプを使用していることを確認します。
  2. クライアント VM が Linux を実行している場合は、デフォルトのマウント オプションを使用していることを確認します。

  3. クライアント VM が Filestore インスタンスと同じリージョンに配置されていることを確認します。リージョン間でマウントすると、パフォーマンスが低下するだけでなく、ネットワーク コストも発生します。

  4. fio ツールを使用して Filestore インスタンスのパフォーマンスをテストします

    テストの結果、パフォーマンスの異常な低下が見られる場合は、アカウント担当者にお問い合わせください。テスト結果が想定どおり、またはそれよりも高いことが判明した場合は、次のセクションに進みます。

パフォーマンスの低下につながるユースケース

パフォーマンスの低下につながるユースケースとシナリオを以下に示します。

サイズの小さいファイルを多数含むワークロード

Filestore のファイル共有は、データの安全性と NFS プロトコルの遵守のために sync エクスポート オプションを使用します。つまり、ほとんどのデータ修正オペレーションでは、Filestore インスタンスがそのデータをストレージに commit するまで待ってから、クライアント VM からのリクエストに応答します。オペレーションに多くのファイルが含まれていると、クライアントが一連の長い同期オペレーションを行い、累積レイテンシが加算されます。

たとえば、TAR ファイルなどのファイル共有にアーカイブを抽出します。TAR は、多くのファイルを含むアーカイブを抽出する際に、一連の多数の同期オペレーションを行います。その結果、パフォーマンスが大幅に低下します。

ファイル共有に多数の小さなファイルをコピーする場合は、gsutil などのツールでファイルの作成を並列化してみてください。

mkdir -p /mnt/nfs/many_files_rsync/
time gsutil -m -q rsync -rp many_files /mnt/nfs/many_files_rsync/

Cloud Storage と Filestore の間でデータをコピーする

gsutil を使用して Cloud Storage から Filestore インスタンスにデータをコピーする方法は、現在、低速であると認識されています。既知の緩和策はありません。

Filestore が応答しない

定期メンテナンス

Filestore が数分間応答せず、その後で再び応答する場合は、無応答の期間にメンテナンスのイベントがスケジュールされていることが原因である可能性があります。Filestore の SLA については、SLA のページをご覧ください。

Filestore は、カスタム定義のメンテナンスの時間枠をサポートしていません。お客様は、Filestore のメンテナンス時間枠のスケジュールも利用できません。

クライアントにマウントされている間にインスタンスが削除された

ファイル操作または UNIX コマンドの dfls、その他の読み取り/書き込みオペレーションが応答を停止した場合に、Filestore インスタンスはクライアントへのマウント中に削除された可能性があります。

インスタンスがまだ存在するかどうかを確認します。

    gcloud filestore instances list

インスタンスがリストに表示されていない場合は、削除されたインスタンスと同じ IP アドレスとファイル共有名で新しいインスタンスを作成することで、制御を復元します。インスタンスが作成されると、応答のないオペレーションはエラーで終了します。ファイル共有のマウントを解除し、必要に応じて Filestore インスタンスを削除できます。

今後このような問題が発生しないよう、Filestore インスタンスを削除する前にマウントを解除してください。

「デバイスに空き容量がありません」

  1. クライアント VM で次のコマンドを実行して、Filestore インスタンスに十分な inode があるかどうかを確認します。

    df -i
    

    コマンドから次のような結果が返されます。

    Filesystem           Inodes        IUsed      IFree         IUse%  Mounted on
    10.0.0.2:/vol1    134217728        13         134217715     1%     /mnt/test
    

    ファイル共有に保存されるファイルごとに 1 つの inode が消費されます。IUse% が 100% の場合、空いている inode がなく、割り当ての上限に達していなくても、ファイル共有でファイルをもう保存できないことを意味します。inode の数は容量に応じてスケーリングされます。inode をさらに追加する場合は、容量をさらに追加する必要があります。

  2. inode が残っている場合は、ディレクトリの最大エントリ数(ファイルまたはサブディレクトリ)に達した可能性があります。ディレクトリ内に存在できるエントリの最大数は、エントリの名前の長さによって異なります。ただし、この上限に達することは、確固とした制限というよりは確率的なものです。この問題を解決するには、エントリをサブディレクトリに分散して深いファイル階層を作成する必要があります。

インスタンスを作成できません

PERMISSION DENIED(Filestore インスタンスの作成時)

  1. Filestore API が有効になっているかどうかを確認します。

    gcloud services enable file.googleapis.com
    
  2. roles/file.editor ロールがあるかどうかを確認します。詳細については、IAM のロールと権限をご覧ください。

  3. 依然としてエラーが発生する場合は、Filestore サービス アカウントfile.serviceAgent ロールが削除された可能性があります。これを確認するには、次のコマンドを実行します。

    gcloud projects get-iam-policy project-name  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:service-project-id@cloud-filer.iam.gserviceaccount.com"
    

    ここで

    • project-name は Google Cloud プロジェクトの名前です。
    • project-id は、Google Cloud プロジェクトの ID 番号です。

    このコマンドは、次のような出力を返します。

    ROLE
    roles/file.serviceAgent
    

    roles/file.serviceAgent がリストにない場合は、次のコマンドを実行して復元できます。

    gcloud projects add-iam-policy-binding project-id --member serviceAccount:service-project-id@cloud-filer.iam.gserviceaccount.com --role roles/file.serviceAgent
    

    ここで、project-id は Google Cloud プロジェクトの ID 番号です。

インスタンスの作成時にエラーコード 13 が表示される

インスタンスの作成中にエラーコード 13 エラーが生じる原因はいくつかありますが、最も一般的な原因は、Filestore が内部ネットワークの割り当ての上限に達したことです。

Filestore インスタンスを作成する VPC ネットワークごとに、Filestore はそのネットワークとピアリングする内部ネットワークを作成する必要があります。これらの内部ネットワークは、Filestore インスタンスと、それらに関連付けられた Filestore ネットワークが削除されても保持されます。

プロジェクトの内部ネットワーク数が 50 に達すると、Filestore は新しい内部ネットワークを作成できなくなります。このため、新しい VPC ネットワーク上に Filestore インスタンスを作成できなくなります。このような操作を行うと、エラーになります。

Error code 13, message: an internal error has occurred

内部ネットワークをクリアするための唯一の方法は、Filestore API を無効にしてから再度有効にすることです。

gcloud services disable file.googleapis.com

gcloud services enable file.googleapis.com

Filestore インスタンスが必要なために削除できない場合は、アカウント担当者に連絡して、ピアリングされるネットワークを手動でクリアする必要があります。

VPC ネットワークと Filestore インスタンスを定期的に削除して作成する必要がある場合、ネットワーク割り当ての不足を回避するには2つの方法があります。

  1. VPC ネットワークを作成するときは、Filestore インスタンスの作成に使用された以前のネットワークと同じ名前を使用します。

  2. 削除して再作成するのではなく、50 以下の VPC ネットワークのプールを循環します。

ファイル共有をマウントできません

ファイル共有をマウントしようとしたときに権限が拒否されました

インスタンスに NFS エクスポート オプションがリスティングされているかどうかを確認します。

gcloud filestore instances describe instance-id \
    --zone=zone

ここで

  • instance-id は、Filestore のインスタンス ID です。
  • zone は、Filestore インスタンスが存在するゾーンです。

このコマンドは次のような出力を返します。

createTime: '2019-10-11T17:28:23.340943077Z'
fileShares:
- capacityGb: '1024'
  name: vol1
  nfsExportOptions:
  - accessMode: READ_WRITE
    ipRanges:
    - 128.0.0.0/29
    squashMode: NO_ROOT_SQUASH
name: projects/yourproject/locations/us-central1-c/instances/nfs-server
networks:
- ipAddresses:
  - 10.0.0.2
  modes:
  - MODE_IPV4
  network: default
  reservedIpRange: 10.0.0.0/29
state: READY
tier: BASIC_HDD

nfsExportOptions が一覧表示された場合は、クライアントの IP アドレスが想定される accessMode として ipRanges の下で一覧表示されているいずれかの範囲内にあるかどうかを確認してください。範囲内にない場合は、NFS エクスポート オプションを編集してください。これを行う手順については、インスタンスの編集をご覧ください。

App Engine にファイル共有をマウントできません

Filestore は App Engine をサポートしていません。