次のNFSベースのストレージ設定があります。
計算ノードはLinuxです。 NFSサーバーはSolarisです。
それほど重要ではないユーザーは、計算ノードのサブセットで一連の読み取り集中型ジョブを実行します。その結果、計算ノードのグループ全体が非常に遅くなります(ls
ブロックで30秒間)。専用のNFSサーバーがsanの読み取りスループットの限界に達していることを追跡できました。
NFS帯域幅をノード、プロセス、またはユーザーに制限するサービス品質(QoS)を実装するにはどうすればよいですか?
クラスターからのDDOSに相当するものに対してNFSを「強化」できるかどうかはわかりません。本当に必要な場合は、他の何かを使用して永続ストレージにアクセスする方が簡単です。
セットアップを考えると、クラスターエンジンレベルで「QoS」を実行することをお勧めします。
リソース「io_heavy」を「10」に制限して構成し、IOが多いジョブの場合はユーザーにこれの「1」を要求させます。そうすれば、I/Oバウンドのジョブが同時に実行されるのは10個までです。 NFSが崩壊することはなく、クラスターの残りの部分はCPUバウンドタスクのために解放されたままになります。
また、ノードにスクラッチディスクを追加する必要があります。これらは、実際にはNFSに移動する必要のない一時データを保持できます。また、ここで一般的に使用される「参照データ」を提供するのにも役立ちます。
SolarisNFSサーバーはZFSを使用していると思います。サーバーにできるだけ多くのRAMを入力します。ZFSキャッシュディスクとして使用するサーバーにSSDを追加します。これらは両方とも、SANのトラフィックを削減します。
QOSは通常、特定のタイプのネットワークストリームを優先するために使用されます。ネットワークスイッチ上のユーザーのポートを分離して制限することはできませんか?または、彼/彼女を別のVLANに配置しますか?または、ポートのデータレートを100MBpsに制限しますか?
それ以外は、ユーザー名またはMACアドレスによるNFS帯域幅の制限を認識していません。たぶんあなたのNFSサーバーにはファイルリクエストを処理するより分散した方法を確実にするオプションがありますか?
箱から出して考える:読み取りの多いファイルをユーザーの近くに移動し、バックアップ/ rsyncプロセスを実行して、更新されたデータをNASに書き戻しますか?
とにかく、これらはどのような読み取り集約型の仕事ですか?