Astra Trident の NFS マウントを OpenShift 上で最適化する方法
環境
- OpenShift Container Platform 4.x
- OpenShift Virtualization 4.x
- NFSバックアップのStorageClassesを使用するAstra Trident
- NFSv4.1またはNFSv4.2バックエンドを使用するONTAP 9
- Red Hat Enterprise Linux CoreOS(RHCOS)ワーカーノードおよびコントロールプレーンノード
概要
この記事では、ONTAP NFSバックエンドを使用する Astra Trident 環境(OpenShift 上で動作し、OpenShift 仮想化ワークロードを含む同時実行ワークロード下でレイテンシの上昇またはレイテンシスパイクが発生している環境)向けの基本的なチューニングガイダンスを提供します。
これらの設定は基本的な推奨事項であり、普遍的なデフォルト設定ではありません。パフォーマンスは、ワークロードプロファイル、ネットワークトポロジー、およびバックエンド構成によって異なります。
ステップ1と2を基準として適用し、パフォーマンスを再評価し、ワークロードのパフォーマンスが依然として低い場合にのみステップ3を使用してください。メンテナンス期間中に変更内容を検証し、必要に応じてデプロイメントに合わせて調整してください。
手順
- Trident バックエンドまたはStorageClassのマウントオプションを
sec=sys,nconnect=8に更新します。- バックエンドの例:
kind: TridentBackendConfig
spec:
nfsMountOptions: sec=sys,nconnect=8 - StorageClass の例:
mountOptions:
- sec=sys
- nconnect=8 - StorageClass メソッドを使用する場合は、同じ名前で StorageClass を削除して再作成してください。
- 既存のポッドと仮想マシンは、再起動、停止/起動、またはライブマイグレーションによって PVC が再マウントされるまで、変更を反映しません。
- バックエンドの例:
- ワーカーの MachineConfig を適用して、
sunrpcおよびnfsモジュールをロードし、ライブ値を設定します。/sys/module/sunrpc/parameters/tcp_max_slot_table_entriesを128に設定します。/sys/module/nfs/parameters/max_session_slotsを1024に設定します。- ワーカープールが終了するまで待機し、その後、コントロールプレーンのMachineConfigを使用して同じsystemdユニットを適用します。
- ロールアウトを監視し、両方のプールが正常に完了したことを確認します。
oc get mcp worker -w
oc get mcp master -wUPDATED=True、UPDATING=False、およびDEGRADED=Falseを確認します。
- 更新されたノードでサービスとライブ値を検証します。
oc debug node/<node> -- chroot /host systemctl status nfs-slot-tuning.service --no-pager
oc debug node/<node> -- chroot /host sh -c 'cat /sys/module/sunrpc/parameters/tcp_max_slot_table_entries; cat /sys/module/nfs/parameters/max_session_slots' - ONTAP SVM の設定
-v4.x-session-num-slotsを段階的に増やします。180から256、512、768、そして1024に順次増加させます。set -privilege advanced
vserver nfs show -vserver <svm_name> -fields v4.x-session-num-slots
vserver nfs modify -vserver <svm_name> -v4.x-session-num-slots <value>
set -privilege admin- 影響を受けるワークロードを再マウントまたは再起動して、新しい NFSv4.x セッションが更新されたスロット数をネゴシエートするようにしてください。
- レイテンシが悪化した場合は、逆順にロールバックしてください。
- Trident マウントオプションを
sec=sysに戻します。 - ONTAP セッションスロットを
180にリセットします:set -privilege advanced
vserver nfs modify -vserver <svm_name> -v4.x-session-num-slots 180
set -privilege admin - ワーカーの MachineConfig を削除し、完了するまで待ってから、コントロールプレーンの MachineConfig を削除します。
- Trident マウントオプションを
パートナーノート
追加情報
- プールは一度に1つずつロールアウトしてください。ワーカープールとコントロールプレーンプールを同時に更新しないでください。
- 開始前にPodDisruptionBudgetsがドレインをブロックしていないことを確認してください。
max_session_slots=1024はクライアント側の上限値です。ONTAPは、新しいNFSv4.1またはNFSv4.2セッションに対して、クライアントとサーバーの低い方の値にネゴシエートします。tcp_max_slot_table_entries=128はTCP接続ごとの明示的なRPC上限を設定します。スロットテーブルの引き上げとは表現しないでください。- このワークフローでは
modprobe.dの代わりにsystemdユニットを使用するため、モジュールパスが存在し、起動時にライブ値が適用されます。 - ONTAPのセッションスロットの変更は、新たに確立されたNFSv4.xセッションにのみ適用されます。
- オプションでOpenShiftのnode-exporter mountstatsコレクターを有効にして、チューニング前後のクライアント側NFSアクティビティを測定できます。