私は研究室に小規模なLinuxクラスタを設定しています。現在、ジョブを送信するためのログインノードとギガビットLANを介して接続された3つのコンピューティングノードがあります(残念ながら無制限の帯域幅はありません)。
最初は、単にNFSを使用してクラスタユーザー用の共有ストレージ(ホームフォルダ)をエクスポートしました。しかし、我々はすぐにNFSが実際の負荷で正常に動作しないことを発見しました。
私のクラスタのユーザーが共有ストレージから小さなGBイメージファイル(100 KB未満)を読み書きするのが一般的であることがわかりました。 NFSは、小さなファイルIOのパフォーマンスが非常に低いです。
小さなファイル書き込みに対するNFS / CIFS / SSHFSパフォーマンスの簡単なテストを行いました。各ファイルシステムで20,000個の小さなファイル(合計〜600MB)を解凍するのにかかる時間は次のとおりです。
- CIFS:25~30秒
- SSHFS:45~55秒
- NFS(v3/v4):遅すぎる。待っていませんでした。 (約10分程度)
CIFS/SSHFS のパフォーマンスは NFS に比べて非常に優れています。ただし、コンピュータクラスタシナリオでは、LinuxホームフォルダにCIFS / SSHFSを使用することは一般的な方法ではありません。そして、CIFSは実際にposix互換のファイルシステムではありません。
小さなファイルをロードするためのネットワークファイルシステムの選択についてどう思いますか? NFSを他のクラスタ/分散ファイルシステムと交換する必要がありますか?それとも、小さなファイルに対してNFSを最適化する方法はありますか?
答え1
十分に大きな設定がある場合は、IBM Spectrum Scale(以前のGPFS)をお勧めしますが、作業規模を考慮して、いくつかの調整でZFSを使用することをお勧めします。 atime を off に設定します。ファイルアクセス時間の記録にあまり興味がない場合、ZFSはそのシナリオでうまく機能します。