多数の小さなファイルを読み書きするためのクラスタファイルシステムの選択

多数の小さなファイルを読み書きするためのクラスタファイルシステムの選択

私は研究室に小規模な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はそのシナリオでうまく機能します。

関連情報