ONTAPのpNFSアーキテクチャについて
pNFSアーキテクチャは、pNFSをサポートするNFSクライアント、メタデータ操作専用のパスを提供するメタデータサーバ、およびファイルへのローカライズされたパスを提供するデータサーバという3つの主要コンポーネントで構成されています。
pNFSへのクライアントアクセスには、NFSサーバで使用可能なデータパスとメタデータパスへのネットワーク接続が必要です。NFSサーバにクライアントがアクセスできないネットワークインターフェイスが含まれている場合、サーバはクライアントにアクセスできないデータパスをアドバタイズし、サービス停止を引き起こす可能性があります。
メタデータサーバ
pNFSのメタデータサーバは、NFSサーバでpNFSが有効になっているときに、クライアントがNFSv4.1以降を使用してマウントを開始すると確立されます。これが完了すると、すべてのメタデータトラフィックはこの接続を介して送信され、インターフェースが別のノードに移行された場合でも、マウント中はこの接続上に維持されます。
pNFSのサポートは、マウント呼び出し、具体的にはEXCHANGE_ID呼び出し時に決定されます。これは、NFS操作の下にあるパケットキャプチャでフラグとして確認できます。pNFSフラグ `EXCHGID4_FLAG_USE_PNFS_DS`と `EXCHGID4_FLAG_USE_PNFS_MDS`が1に設定されている場合、インターフェースはpNFSのデータ操作とメタデータ操作の両方に対応します。
NFSのメタデータは通常、ファイルハンドル、権限、アクセス時刻と変更時刻、所有権情報などのファイルとフォルダの属性で構成されます。メタデータには、作成と削除の呼び出し、リンクとリンク解除の呼び出し、名前の変更などが含まれる場合もあります。
pNFSには、pNFS機能に固有のメタデータ呼び出しのサブセットも存在します。これらについては"RFC 5661"で詳しく説明します。これらの呼び出しは、pNFS対応デバイス、デバイスとデータセットのマッピング、その他の必要な情報を決定するのに役立ちます。次の表は、これらのpNFS固有のメタデータ操作の一覧です。
| 処理 | 概要 |
|---|---|
LAYOUTGET |
メタデータ サーバからデータ サーバ マップを取得します。 |
LAYOUTCOMMIT |
サーバはレイアウトをコミットし、メタデータ マップを更新します。 |
LAYOUTRETURN |
レイアウト、またはデータが変更された場合は新しいレイアウトを返します。 |
GETDEVICEINFO |
クライアントは、ストレージ クラスタ内のデータ サーバの更新情報を取得します。 |
デバイスリスト取得 |
クライアントは、ストレージ クラスタに参加しているすべてのデータ サーバのリストを要求します。 |
CB_LAYOUTRECALL |
競合が検出された場合、サーバはクライアントからデータ レイアウトを再呼び出しします。 |
CB_RECALL_ANY |
すべてのレイアウトをメタデータ サーバに返します。 |
CB_NOTIFY_DEVICEID |
デバイス ID の変更を通知します。 |
データパス情報
メタデータサーバが確立され、データ操作が開始されると、ONTAPはpNFSの読み取りおよび書き込み操作に有効なデバイスIDと、クラスタ内のボリュームをローカル ネットワーク インターフェースに関連付けるデバイス マッピングの追跡を開始します。このプロセスは、マウント内で読み取りまたは書き込み操作が実行されたときに発生します。 `GETATTR`などのメタデータ呼び出しでは、これらのデバイス マッピングはトリガーされません。そのため、マウント ポイント内で `ls`コマンドを実行しても、マッピングは更新されません。
デバイスとマッピングは、次に示すように、ONTAP CLI の高度な権限を使用して表示できます。
::*> pnfs devices show -vserver DEMO (vserver nfs pnfs devices show) Vserver Name Mapping ID Volume MSID Mapping Status Generation --------------- --------------- --------------- --------------- ------------- DEMO 16 2157024470 available 1 ::*> pnfs devices mappings show -vserver SVM (vserver nfs pnfs devices mappings show) Vserver Name Mapping ID Dsid LIF IP -------------- --------------- --------------- -------------------- DEMO 16 2488 10.193.67.211
|
|
これらのコマンドでは、ボリューム名は使用されません。代わりに、ボリュームに関連付けられた数値ID(マスター セット ID(MSID)とデータ セット ID(DSID))が使用されます。マッピングに関連付けられたボリュームを確認するには、ONTAP CLIのadvanced権限で `volume show -dsid [dsid_numeric]`または `volume show -msid [msid_numeric]`を使用します。 |
クライアントがメタデータ サーバ接続から離れたノードにあるファイルの読み取りまたは書き込みを試みると、pNFSは適切なアクセス パスをネゴシエートし、これらの操作におけるデータの局所性を確保します。クライアントは、ファイルにアクセスするためにクラスタ ネットワークを経由するのではなく、アドバタイズされたpNFSデバイスにリダイレクトします。これにより、CPUオーバーヘッドとネットワークレイテンシが削減されます。
pNFS制御パス
pNFSには、メタデータとデータ部分に加えて、pNFS制御パスも存在します。この制御パスは、NFSサーバがファイルシステム情報を同期するために使用されます。ONTAPクラスタでは、バックエンドクラスタネットワークが定期的にレプリケーションを実行し、すべてのpNFSデバイスとデバイスマッピングが同期されていることを確認します。
pNFSデバイス設定ワークフロー
以下では、クライアントがボリューム内のファイルの読み取りまたは書き込みを要求した後に、pNFSデバイスがONTAPにどのように設定されるかについて説明します。
-
クライアントが読み取りまたは書き込みを要求すると、OPENが実行され、ファイル ハンドルが取得されます。
-
OPENが実行されると、クライアントはメタデータ サーバ接続を介したLAYOUTGET呼び出しでファイル ハンドルをストレージに送信します。
-
LAYOUTGET は、状態 ID、ストライプ サイズ、ファイル セグメント、デバイス ID など、ファイルのレイアウトに関する情報をクライアントに返します。
-
次に、クライアントはデバイスIDを取得し、GETDEVINFO呼び出しをサーバに送信して、デバイスに関連付けられたIPアドレスを取得します。
-
ストレージは、デバイスへのローカル アクセス用に関連付けられたIPアドレスのリストを含む応答を送信します。
-
クライアントは、ストレージから返されたローカル IP アドレスを介してNFS会話を継続します。
pNFSとFlexGroupボリュームの相互作用
FlexGroupボリュームは、ONTAPでストレージをクラスタ内の複数のノードにまたがるFlexVolボリューム構成要素として提示します。これにより、ワークロードは単一のマウントポイントを維持しながら、複数のハードウェアリソースを活用できます。複数のネットワークインターフェイスを持つ複数のノードがワークロードとやり取りするため、リモートトラフィックがONTAPのバックエンドクラスタネットワークを通過するのは自然な結果です。
pNFSを利用する場合、ONTAPはFlexGroupボリュームのファイルとボリュームのレイアウトを追跡し、それらをクラスタ内のローカル データ インターフェースにマッピングします。例えば、アクセス対象のファイルを含む構成ボリュームがノード1に存在する場合、ONTAPはクライアントにネットワーク トラフィックをノード1のデータ インターフェースにリダイレクトするよう通知します。
pNFSは、pNFSのないNFSv4.1では提供されない、単一のクライアントからファイルへの並列ネットワーク パスのプレゼンテーションも提供します。たとえば、クライアントがpNFSのないNFSv4.1を使用して同じマウントから4つのファイルに同時にアクセスする場合、すべてのファイルに同じネットワーク パスが使用され、ONTAPクラスタは代わりにそれらのファイルへのリモート要求を送信します。マウント パスは、すべての操作が単一のパスをたどって単一のノードに到達し、データ操作とともにメタデータ操作も処理するため、操作のボトルネックになる可能性があります。
pNFSを使用して単一のクライアントから同じ4つのファイルに同時にアクセスする場合、クライアントとサーバはファイルが存在する各ノードへのローカル パスをネゴシエートし、データ操作には複数のTCP接続を使用します。一方、マウント パスはすべてのメタデータ操作の場所として機能します。これにより、ファイルへのローカル パスを使用することでレイテンシが低減されるだけでなく、複数のネットワーク インターフェイスを使用することでスループットも向上します(ただし、クライアントがネットワークを飽和させるのに十分なデータを送信できる場合)。
以下は、単一のRHEL 9.5クライアント上で、2つのONTAPクラスタノードにまたがる異なるコンスティチュエントボリュームにそれぞれ存在する4つの10GBファイルをddを使用して並列に読み取るという簡単なテスト実行の結果です。各ファイルにおいて、pNFSを使用することで全体的なスループットと完了時間が向上しました。pNFSを使用せずにNFSv4.1を使用した場合、マウントポイントに対してローカルなファイルとリモートなファイル間のパフォーマンス差は、pNFSを使用した場合よりも大きくなっていました。
| テスト | ファイルあたりのスループット(MB/秒) | ファイルあたりの完了時間 |
|---|---|---|
NFSv4.1:pNFSなし |
|
|
NFSv4.1:pNFS を使用 |
|
|