Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

ONTAPのpNFSアーキテクチャについて学ぶ

共同作成者 netapp-dbagwell

pNFS アーキテクチャは、pNFS をサポートする NFS クライアント、メタデータ操作専用のパスを提供するメタデータ サーバー、およびファイルへのローカライズされたパスを提供するデータ サーバーという 3 つの主要コンポーネントで構成されています。

pNFS へのクライアント アクセスには、NFS サーバー上で利用可能なデータおよびメタデータ パスへのネットワーク接続が必要です。NFS サーバーにクライアントがアクセスできないネットワーク インターフェイスが含まれている場合、サーバーはアクセスできないデータ パスをクライアントに通知することがあり、これにより障害が発生する可能性があります。

メタデータサーバー

pNFS のメタデータ サーバーは、NFS サーバーで pNFS が有効になっているときに、クライアントが NFSv4.1 以降を使用してマウントを開始すると確立されます。これが完了すると、すべてのメタデータ トラフィックはこの接続を介して送信され、インターフェイスが別のノードに移行された場合でも、マウント中はこの接続上に残ります。

ONTAPのpNFSにメタデータサーバーを確立する
図 1. ONTAPのpNFSにメタデータサーバーを確立する

pNFS のサポートは、マウント呼び出し中、具体的には EXCHANGE_ID 呼び出し中に決定されます。これは、NFS 操作の下のパケット キャプチャでフラグとして表示されます。pNFSフラグが EXCHGID4_FLAG_USE_PNFS_DS そして EXCHGID4_FLAG_USE_PNFS_MDS 1 に設定されている場合、インターフェイスは pNFS のデータとメタデータの両方の操作に使用できます。

pNFSマウントのパケットキャプチャ
図 2. pNFSマウントのパケットキャプチャ

NFS のメタデータは通常、ファイル ハンドル、アクセス許可、アクセス時刻と変更時刻、所有権情報などのファイルとフォルダーの属性で構成されます。メタデータには、作成および削除の呼び出し、リンクおよびリンク解除の呼び出し、名前の変更も含まれます。

pNFSには、pNFS機能に固有のメタデータ呼び出しのサブセットもあり、これについては以下で詳しく説明します。 "RFC 5661"。これらの呼び出しは、pNFS 対応デバイス、デバイスとデータセットのマッピング、およびその他の必要な情報を決定するのに役立ちます。次の表は、これらの pNFS 固有のメタデータ操作の一覧を示しています。

操作 説明

レイアウト取得

メタデータ サーバーからデータ サーバー マップを取得します。

レイアウトコミット

サーバーはレイアウトをコミットし、メタデータ マップを更新します。

レイアウトリターン

データが変更された場合はレイアウトまたは新しいレイアウトを返します。

デバイス情報を取得する

クライアントは、ストレージ クラスター内のデータ サーバー上の更新情報を取得します。

デバイスリストを取得する

クライアントは、ストレージ クラスターに参加しているすべてのデータ サーバーのリストを要求します。

CB_LAYOUTリコール

競合が検出された場合、サーバーはクライアントからのデータ レイアウトを呼び出します。

CB_RECALL_ANY

すべてのレイアウトをメタデータ サーバーに返します。

CB_NOTIFY_デバイスID

デバイス 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) が使用されます。マッピングに関連付けられたボリュームを見つけるには、 volume show -dsid [dsid_numeric] または volume show -msid [msid_numeric] ONTAP CLI の高度な権限。

クライアントがメタデータ サーバー接続に対してリモートのノードにあるファイルの読み取りまたは書き込みを試みると、pNFS は適切なアクセス パスをネゴシエートしてそれらの操作のデータの局所性を確保し、クライアントはファイルにアクセスするためにクラスター ネットワークを横断しようとするのではなく、アドバタイズされた pNFS デバイスにリダイレクトします。これにより、CPU オーバーヘッドとネットワーク遅延が削減されます。

pNFS を使用せずに NFSv4.1 を使用したリモート読み取りパス
図 3. pNFS を使用せずに NFSv4.1 を使用したリモート読み取りパス
pNFSを使用したローカライズされた読み取りパス
図 4. pNFSを使用したローカライズされた読み取りパス

pNFS制御パス

pNFS のメタデータとデータ部分に加えて、pNFS 制御パスもあります。制御パスは、NFS サーバーがファイル システム情報を同期するために使用されます。ONTAPクラスタでは、バックエンド クラスタ ネットワークが定期的に複製され、すべての pNFS デバイスとデバイス マッピングが同期されていることを確認します。

pNFSデバイスポピュレーションワークフロー

以下では、クライアントがボリューム内のファイルの読み取りまたは書き込みを要求した後に、pNFS デバイスがONTAPにどのように設定されるかについて説明します。

  1. クライアントが読み取りまたは書き込みを要求し、OPEN が実行され、ファイル ハンドルが取得されます。

  2. OPEN が実行されると、クライアントはメタデータ サーバー接続を介して LAYOUTGET 呼び出しでファイル ハンドルをストレージに送信します。

  3. LAYOUTGET は、状態 ID、ストライプ サイズ、ファイル セグメント、デバイス ID など、ファイルのレイアウトに関する情報をクライアントに返します。

  4. 次に、クライアントはデバイス ID を取得し、GETDEVINFO 呼び出しをサーバーに送信して、デバイスに関連付けられた IP アドレスを取得します。

  5. ストレージは、デバイスへのローカル アクセス用に関連付けられた IP アドレスのリストを含む応答を送信します。

  6. クライアントは、ストレージから返されたローカル IP アドレスを介して NFS 会話を継続します。

pNFSとFlexGroupボリュームの相互作用

ONTAPのFlexGroupボリュームは、クラスタ内の複数のノードにまたがるFlexVol volume構成要素としてストレージを提供します。これにより、ワークロードは単一のマウントポイントを維持しながら複数のハードウェア リソースを活用できます。複数のネットワーク インターフェイスを持つ複数のノードがワークロードと対話するため、 ONTAPではリモート トラフィックがバックエンド クラスタ ネットワークを通過するのは当然の結果です。

pNFS を使用しないFlexGroupボリュームでの単一ファイル アクセス
図 5. pNFS を使用しないFlexGroupボリュームでの単一ファイル アクセス

pNFS を使用する場合、 ONTAP はFlexGroupボリュームのファイルとボリュームのレイアウトを追跡し、それらをクラスタ内のローカル データ インターフェイスにマッピングします。たとえば、アクセス対象のファイルを含む構成ボリュームがノード 1 に存在する場合、 ONTAP はクライアントにデータ トラフィックをノード 1 のデータ インターフェイスにリダイレクトするように通知します。

pNFS を使用したFlexGroupボリュームでの単一ファイル アクセス
図 6. pNFS を使用したFlexGroupボリュームでの単一ファイル アクセス

pNFS は、pNFS のない NFSv4.1 では提供されない、単一のクライアントからのファイルへの並列ネットワーク パスの提示も提供します。たとえば、クライアントが pNFS を使用せずに NFSv4.1 を使用して同じマウントから同時に 4 つのファイルにアクセスする場合、すべてのファイルに同じネットワーク パスが使用され、代わりにONTAPクラスタはそれらのファイルにリモート要求を送信します。すべての操作が単一のパスをたどって単一のノードに到達し、データ操作とともにメタデータ操作も処理するため、マウント パスは操作のボトルネックになる可能性があります。

pNFS を使用しないFlexGroupボリュームでの複数のファイル同時アクセス
図 7. pNFS を使用しないFlexGroupボリュームでの複数のファイル同時アクセス

pNFS を使用して単一のクライアントから同じ 4 つのファイルに同時にアクセスする場合、クライアントとサーバーはファイルがある各ノードへのローカル パスをネゴシエートし、データ操作に複数の TCP 接続を使用します。一方、マウント パスはすべてのメタデータ操作の場所として機能します。これにより、ファイルへのローカル パスを使用することでレイテンシーのメリットが得られますが、クライアントがネットワークを飽和させるのに十分なデータを送信できる場合は、複数のネットワーク インターフェイスを使用することでスループットのメリットも得られます。

pNFS を使用したFlexGroupボリュームでの複数のファイル同時アクセス
図 8. pNFS を使用したFlexGroupボリュームでの複数のファイル同時アクセス

以下は、単一の RHEL 9.5 クライアントで実行した簡単なテストの結果を示しています。このテストでは、4 つの 10 GB ファイル (すべて 2 つのONTAPクラスタ ノードの異なる構成ボリュームに存在) が dd を使用して並列に読み取られます。各ファイルでは、pNFS を使用すると全体的なスループットと完了時間が改善されました。pNFS を使用せずに NFSv4.1 を使用すると、マウント ポイントのローカル ファイルとリモート ファイル間のパフォーマンスの差は、pNFS を使用した場合よりも大きくなります。

テスト ファイルあたりのスループット(MB/秒) ファイルあたりの完了時間

NFSv4.1: pNFS なし

  • ファイル1–228(ローカル)

  • ファイル2–227(ローカル)

  • ファイル3–192(リモート)

  • ファイル4–192(リモート)

  • ファイル1–46(ローカル)

  • ファイル2–46.1(ローカル)

  • ファイル3–54.5(リモート)

  • ファイル4–54.5(リモート)

NFSv4.1: pNFS を使用

  • ファイル1–248(ローカル)

  • ファイル2–246(ローカル)

  • File.3–244 (pNFS経由のローカル)

  • File.4–244 (pNFS経由のローカル)

  • ファイル.1–42.3(ローカル)

  • ファイル.2–42.6(ローカル)

  • File.3–43 (pNFS経由のローカル)

  • File.4–43 (pNFS経由のローカル)