このページでは、NetApp Volumes エクスポートのマウント時のパフォーマンスと動作に影響する Linux NFS マウント オプションについて説明します。これらのオプションは、mount コマンドを実行するときに設定するか、/etc/fstab に追加します。
推奨される設定順序と、マウント オプションがカーネルの同時実行と先読みにどのように影響するかについては、Linux NFS クライアントを最適化するをご覧ください。
マウント コマンドとエクスポート アクセスの例については、 NFS クライアントを接続するをご覧ください。
始める前に
NetApp Volumes をマウントする前に、次の要件を満たしてください。
ワークロードで別のオプションが必要な場合を除き、 Google Cloud コンソールのマウント手順の mount コマンドを使用します。
スロットテーブルまたはセッション スロットの設定で同時実行を調整する場合は、マウントする前にこれらの設定を構成します。詳細については、 Linux NFS の同時実行をご覧ください。
非本番環境で変更をテストします。マウント オプションの効果は、ワークロード、Linux のバージョン、ネットワーク レイテンシによって異なります。
クイック リファレンス
次の表に、ワークロードの目標に基づく一般的なマウント オプションのクイック リファレンスを示します。
| 目標 | 検討すべきオプション | メモ |
|---|---|---|
| 汎用 | コンソールのマウント手順を使用する Google Cloud | プロトコルに適したデフォルトが含まれています |
| 1 つの VM からのスループットまたは IOPS の向上 | nconnect=8 から nconnect=16、rsize と wsize を調整する |
最初にスロットテーブルを設定します。Linux NFS の同時実行をご覧ください |
| データベースのレイテンシの短縮 | rsize=262144、wsize=262144、hard、timeo=600、vers=4.1 |
特定のアプリケーションでテストする |
| NFS のバージョンを指定する | vers=3 または vers=4.1 |
Linux はデフォルトで利用可能な最新バージョンをマウントします |
| アドバイザリ ロックなしの NFSv3 | vers=3、nolock |
ファイアウォールとロック マネージャーのガイダンスについては、NFS クライアントを接続するをご覧ください |
| Kerberos NFSv4.1 | sec=krb5、krb5i、または krb5p |
nconnect では使用しないでください |
| 整合性のトレードオフがわかっている読み取り専用データ | nocto、actimeo= |
高度な設定です。最初にキャッシュの動作を理解してください |
NFSv3 をマウントする場合は、必ず tcp を含めてください。Linux はデフォルトで NFS トラフィックに TCP を使用しますが、tcp を明示的に追加すると、マウント プロセスで UDP ではなく TCP が使用されるようになります。これにより、多くのシステムが同時にマウントしようとした場合のパフォーマンスが向上します。noatime を含めて、メタデータ オペレーションを減らします。
推奨されるマウント プロファイル
次のマウント プロファイルでは、パフォーマンス要件、プロトコルのバージョン、クライアント スケールに基づいて推奨されるオプションを示します。これらのコマンドを実行するときは、VOLUME_IP と /export_path をコンソールのマウント手順の実際の値に置き換えます。 Google Cloud
プロファイル A: デフォルト(コンソール)
コンソールに表示される mount コマンドを変更せずに実行します。 Google Cloud
プロファイル B: パフォーマンス重視(単一の Linux クライアント)
NFSv3 の例。パフォーマンス ベンチマーク テスト構成に沿っています。
sudo mount -t nfs -o hard,tcp,vers=3,rsize=262144,wsize=262144,nconnect=16 \ VOLUME_IP:/export_path /mnt/volume
ベンチマークでは、nconnect=16 と 64 KiB の rsize と wsize を使用します。多くのワークロードは nconnect=8 で適切に動作します。両方の値をテストしてください。
プロファイル C: 明示的なバージョンを使用した NFSv4.1
sudo mount -t nfs -o vers=4.1,hard,rsize=262144,wsize=262144 \ VOLUME_IP:/export_path /mnt/volume
ボリュームで NFSv4.2 が有効になっている場合に自動的にマウントされないようにするには、vers=4.1 を指定します。詳細については、NFS クライアントを接続するをご覧ください。
プロファイル D: コンピューティング ファーム用の NFSv3
多数のクライアントをボリュームに接続する場合(数百など)、nconnect を使用するとボリュームで使用可能な TCP セッションが使い果たされるため、使用しないでください。
sudo mount -t nfs -o vers=3,nolock,hard,tcp,rsize=262144,wsize=262144 \ VOLUME_IP:/export_path /mnt/volume
/etc/fstab で永続化する
次の例は、NFSv4.1 の /etc/fstab 行を示しています。
VOLUME_IP:/export_path /mnt/volume nfs vers=4.1,hard,tcp,rsize=262144,wsize=262144,timeo=600,_netdev 0 0
_netdev オプションを使用すると、システムはマウントする前にネットワークを待機します。
nconnect
nconnect マウント オプションを使用すると、NFS クライアントが同じストレージ エンドポイント(ボリューム IP アドレス)に開く TCP 接続の数を制御できます。各接続は、設定された上限まで、複数の NFS オペレーションを同時に処理します。接続数を増やすと、1 つのクライアントからの I/O の同時実行とスループットが向上します。
推奨事項
nconnect マウント オプションを構成する際は、次の推奨事項を考慮してください。
nconnect=8とnconnect=16をテストします。最大 16 までの値がサポートされています。nconnectは、専用の高パフォーマンス クライアントにのみ使用してください。コンピューティング ファームなど、多くのクライアントが同じストレージに接続する場合は、nconnectの使用を避けてください。特定のボリューム IP への最初のマウント オペレーションを実行して、そのクライアントのその IP の
nconnect値を設定します。後で同じ IP にマウントする場合は、別の値を指定しても同じ値が使用されます。選択したnconnect値でエクスポートを最初にマウントするか、その IP へのすべてのマウントに同じオプションを使用します。1 つのボリューム IP の
nconnectを設定しても、別のボリューム IP へのマウントには影響しません。nconnectを使用する前に、Linux ディストリビューションがnconnectをサポートしていることを確認してください。
接続あたりのスロット上限の詳細については、 Linux NFS の同時実行をご覧ください。
rsize と wsize
rsize マウント オプションと wsize マウント オプションは、NFS の読み取りオペレーションと書き込みオペレーションの最大転送サイズを設定します。省略すると、クライアントとサーバーは両方がサポートする最大サイズをネゴシエートします。これは、Linux クライアントと NetApp Volumes で最大 1 MiB です。
推奨事項
rsize マウント オプションと wsize マウント オプションを構成する際は、次の推奨事項を考慮してください。
rsize=262144とwsize=262144(256 KiB)をテストして、レイテンシの影響を受けやすいアプリケーションのスループットとレイテンシを調整します。256 KiB より大きい値を使用する場合は注意してください。ワークロードによってはレイテンシが増加したり、スループットが低下したりする可能性があります。デプロイ前にパフォーマンスを測定してください。
NFSv3 テストには
rsize=65536とwsize=65536(64 KiB)を使用します。これらの 値は パフォーマンス ベンチマークで使用されています。
これらの設定はランダム ワークロードにはほとんど影響しません。ランダム ワークロードでは通常、rsize と wsize よりも小さいオペレーション サイズが使用されます。一方、ページキャッシュを介したシーケンシャル I/O では、rsize と wsize までのオペレーション サイズが使用されることがよくあります。
rsize マウント オプションは先読みの動作に影響します。詳細については、
Linux NFS の先読みをご覧ください。
プロトコルのバージョン
次の表に、vers オプションの値と対応するプロトコルのバージョンを示します。
| オプション | 使用 |
|---|---|
vers=3 |
NFSv3 |
vers=4.1 |
NFSv4.1 |
vers=4.2 |
NFSv4.2 |
vers を設定しない場合、Linux mount コマンドはクライアントとボリュームでサポートされている最新の NFS バージョンを使用します。NFSv4.1 が有効になっている Flex Unified、Standard、Premium、Extreme ボリュームは NFSv4.2 もサポートしています。vers=4.1 を指定しない限り、NFSv4.2 をマウントできます。
NFSv4.1 の ID マッピング、Kerberos、数値 ID の詳細については、 NFS クライアントを接続するをご覧ください。
hard、timeo、retrans
hard、timeo、retrans マウント オプションは、接続の問題が発生した場合のクライアントの動作とタイムアウト再試行ロジックを管理します。
hard: NFS リクエストが成功するまで再試行します。このオプションは、本番環境ワークロードのデータの完全性で一般的です。timeo: リクエストが再試行されるまでのタイムアウトを 10 分の 1 秒単位で指定します。データベース指向のワークロードでは、timeo=600(60 秒)がよく使用されます。retrans: 再試行回数を指定します。 Google Cloud ランブックで特に指定しない限り、コンソールのデフォルトで 十分です。
NFSv3 nolock オプション
NFSv3 アドバイザリ ロックでは、Network Lock Manager(NLM)を使用し、コールバック ポートに
クライアントサイドの rpc.statd と ファイアウォール ルールが必要です。
アドバイザリ ロックを使用しない場合は、ロック マネージャーのトラフィックを回避するために nolock でマウントします。
NFSv4.1 では、ポート 2049 のプロトコルでロックが実装されます。クライアントに個別のロック マネージャーの入力ルールは必要ありません。
NFSv3 でのアドバイザリ ロックの使用と、ファイアウォール ルール NFS ボリュームへのアクセスに関する詳細については、NFS クライアントを接続するをご覧ください。
nocto と actimeo を使用したキャッシュと整合性
NFS クライアントは緩い整合性モデルを使用します。属性キャッシュ タイマーは、クライアントがサーバーに接続する前にファイルとディレクトリのメタデータを信頼する期間を決定します。デフォルトの close-to-open 整合性(cto)では、ファイルを開くとファイルデータが更新されます。
nocto: クライアントはオープン時にサーバーの整合性を強制しません。getattr呼び出しは減りますが、データの鮮度が低下するリスクが高まります。actimeo=N: すべての属性キャッシュ タイマーをN秒(acregmin、acregmax、acdirmin、acdirmax)に構成します。
次のような場合は、nocto と actimeo の値を大きくすることをおすすめします。
別のパスで更新を受け取る単一のライターまたは読み取り専用コンシューマ。
EDA ライブラリ、ウェブ コンテンツ、レンダリング テクスチャなど、一時的な鮮度低下が許容される大規模な静的データセット。
ほとんどの場合、属性キャッシュには推奨される Linux のデフォルトを使用します。
通常のファイルの最小値と最大値:
acregmin=3秒、acregmax=60秒ディレクトリの最小値と最大値:
acdirmin=30秒、acdirmax=60秒
これらの値を小さくすると、NFS サーバーの負荷が増加し、パフォーマンスが低下する可能性があります。actimeo=0 は、影響を理解している非常に特殊なユースケースを除き、避けてください。
その他の一般的なオプション
NFS クライアントでは、次の一般的なマウント オプションを使用できます。
rwまたはro: 読み取り / 書き込みまたは読み取り専用のマウント。noatime: 読み取り時にアクセス時間を更新しません。これにより、メタデータ オペレーションが減り、推奨される方法です。sec=sys: AUTH_SYS。Kerberos 以外のエクスポートのデフォルトです。_netdev: ネットワークが使用可能になった後にマウントするには、fstabでこれを使用します。