web-dev-qa-db-ja.com

何百万もの小さなファイルのブロックサイズ

Debian WheezyのハードウェアRAID1(LSI MegaRaidの可能性があります)に2x4TBディスクがあります。物理ブロックサイズは4kBです。 1億5000万から2億の小さなファイル(3から10kBの間)を保存します。私はパフォーマンスを求めているのではなく、ストレージを節約するための最適なファイルシステムとブロックサイズを求めています。 8200バイトのファイルをブロックサイズ4kBのext4にコピーしました。これには32kBのディスクが必要でした!?ジャーナリングはその理由ですか?では、このような小さなファイルのほとんどのストレージを節約するには、どのようなオプションがありますか?

10
rabudde

そのような状況にあった場合、すべてのデータを個別のファイルとしてではなく、コンパクトなオフセットベースのインデックスを持つ単一のファイルに格納できるデータベースを検討していました。たぶん、必要に応じてファイルとして操作できるFuseドライバーを備えたデータベースであり、実際にはすべてが個別のファイルではありません。

または、たとえば、ファイルサイズの60〜70パーセンタイルを見て、そのファイルサイズをディスク上の個別のブロックとしてではなく、ファイルシステムツリーノードに直接適合させようとすることもできます。各ノードに10kを格納することはおそらく大きな課題ですが、そこにファイルの60%〜70%を取得できれば、それはおそらく大きなメリットになります。

特定のファイルシステムだけがそれを実行できます(reiserfsは1つです)。それはすべて、そのパーセンタイルのサイズ、ツリーに収まるかどうかに依存すると思います。あなたはそれを調整することができるかもしれません。残りを1つのブロックに収めてみてください。

そして、ジャーナルについて心配する必要はありません。とにかくサイズの上限があります。

1
user99963