多数の小さなファイルの読み取り/書き込みに適したクラスタファイルシステムの選択

多数の小さなファイルの読み取り/書き込みに適したクラスタファイルシステムの選択

私は研究室用に小さな Linux クラスターをセットアップしています。現在、ジョブ送信用のログイン ノードと 3 つの計算ノードがあり、それらはギガビット LAN (残念ながら Infiniband はありません) で接続されています。

最初は、NFS を使用してクラスター ユーザー用の共有ストレージ (ホーム フォルダー) をエクスポートしていました。しかし、すぐに、NFS は実際のペイロードではうまく機能しないことがわかりました。

私のクラスター ユーザーが共有ストレージ内の数 GB の小さな画像ファイル (1 つは 100 KB 未満) を読み書きすることは非常に一般的であることがわかりました。NFS は小さなファイルの IO では非常にパフォーマンスが悪いです。

小さなファイルの書き込みに関する NFS/CIFS/SSHFS のパフォーマンスの簡単なテストがあります。各ファイルシステムで 20000 個の小さなファイル (合計約 600 MB) を解凍するのにかかる時間は次のとおりです。

  • 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 をオフに設定してください。ファイルへのアクセス時間を記録する必要がない場合は、ZFS はシナリオで非常に優れたパフォーマンスを発揮します。

関連情報