大容量の小さなファイル(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

答え2

ディレクトリに100万〜200万のファイルがあると、ext4のパフォーマンスが低下します。このページを参照してくださいhttp://genomewiki.ucsc.edu/index.php/File_system_performanceUCSCのHiram Clawson製作

答え3

私はこの作業のために多数の小さなファイルを処理するように特別に設計されたReiserFSを使用します。一枚くらいなら楽です。それについて読んでくださいfuntoo Wikiから。

ReiserFSには、小さなファイルのパフォーマンスを向上させるために特別に設計された多くの機能もあります。 ext2とは異なり、ReiserFSは固定1kまたは4kブロックにストレージスペースを割り当てません。代わりに、必要な正確なサイズを割り当てます。

答え4

XFSはこのような状況で良いパフォーマンスを発揮することが知られています。これが職場でメールストアとして使用する理由の1つです(1つのディレクトリに何十万ものファイルを含めることができます)。 ReiserFSよりもフォールトトレランスが良く、より多様で一般的に非常に成熟したファイルシステムです。

さらに、XFSはオンラインデフラグをサポートします。遅延割り当て技術を使用していますが、まず他のファイルシステムと比較して断片化を減らします。

関連情報