大容量の小さなファイル(SSDではなくHDD)を保存するための最高のパフォーマンスのLinuxファイルシステムは何ですか?

大容量の小さなファイル(SSDではなくHDD)を保存するための最高のパフォーマンスのLinuxファイルシステムは何ですか?

多くの小さなファイルといくつかの大きなファイルを含むディレクトリツリーがあります。平均ファイルサイズは約1KBです。ツリーには210158個のファイルとディレクトリがあります(この数字は次のようにfind | wc -l実行して得られます)。

少数のファイルが週に複数回追加/削除/再作成されます。これは、小さなファイルと(いくつかの)大きなファイルの両方に適用されます。

私が試したファイルシステム(ext4、btrfs)には、ディスク上のファイルを見つけることにいくつかの問題があります。時間が経つにつれて、ディスク(半導体ディスクではなく回転するメディア)内のファイルの物理的な位置分布がさらにランダム化されます。このランダム展開の否定的な結果は、ファイルシステムがますます遅くなることです(たとえば、最新のファイルシステムよりも4倍遅い)。

これらのパフォーマンスの低下に影響されずに循環メディアで信頼性の高いパフォーマンスプロファイルを維持できるLinuxファイルシステム(またはファイルシステムのメンテナンス方法)はありますか?ファイルシステムはFuseで実行できますが、安定している必要があります。

ベストアンサー1

パフォーマンス

私は小さなベンチマークを書いています(源泉)何十万もの小さなファイルを処理するときにどのファイルシステムが最もうまく機能するかを確認するには、次の手順を実行します。

  • /dev/urandomのデータを使用して300,000個のファイル(512B〜1536B)を作成します。
  • 30,000個のランダムファイルを再作成してサイズを変更します。
  • 30,000個の連続ファイルを読む
  • 30,000のランダムファイルを読む
  • すべてのファイルを削除

  • 各ステップ後のキャッシュの同期と削除

結果(平均時間(秒)、低いほど良い):

Using Linux Kernel version 3.1.7
Btrfs:
    create:    53 s
    rewrite:    6 s
    read sq:    4 s
    read rn:  312 s
    delete:   373 s

ext4:
    create:    46 s
    rewrite:   18 s
    read sq:   29 s
    read rn:  272 s
    delete:    12 s

ReiserFS:
    create:    62 s
    rewrite:  321 s
    read sq:    6 s
    read rn:  246 s
    delete:    41 s

XFS:
    create:    68 s
    rewrite:  430 s
    read sq:   37 s
    read rn:  367 s
    delete:    36 s

結果:
Ext4は全体的なパフォーマンスが良いですが、ReiserFSはシーケンシャルファイルを読み込む速度が非常に高速です。それは明らかですXFSは小さなファイルが多いと遅くなります。このユースケースでは、XFSを使用しないでください。

断片化の問題

ファイルシステムがドライブ全体にファイルを配布するのを防ぐ唯一の方法は、パーティションを実際に必要なサイズに保つことです。ただし、ファイル内の断片化を防ぐために、パーティションを小さすぎないように注意してください。使用左心室容積とても役に立ちます。

追加読書

Arch Wikiにはファイルシステムのパフォーマンスに関する素晴らしい記事があります。

https://wiki.archlinux.org/index.php/Beginner%27s_Guide#Filesystem_types

https://wiki.archlinux.org/index.php/Maximizing_Performance#Storage_devices

おすすめ記事