web-dev-qa-db-ja.com

多くの小さなファイル(SSDではなくHDD)を格納するための最も高性能なLinuxファイルシステムは何ですか?

多くの小さなファイルと少数の大きなファイルを含むディレクトリツリーがあります。ファイルの平均サイズは約1キロバイトです。ツリーには210158個のファイルとディレクトリがあります(この数はfind | wc -lを実行して取得されました)。

ごく一部のファイルが週に数回追加/削除/書き換えされます。これは、小さなファイルだけでなく、(少数の)大きなファイルにも当てはまります。

私が試したファイルシステム(ext4、btrfs)は、ディスク上のファイルの配置にいくつかの問題があります。長い時間をかけて、ディスク上のファイルの物理的な位置(ソリッドステートディスクではなく回転するメディア)がよりランダムに分散されています。このランダムな分布のマイナスの結果は、ファイルシステムの速度が遅くなることです(たとえば、新しいファイルシステムの4倍遅い)。

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

46
user14159

パフォーマンス

小さなベンチマーク( source )を書いて、何十万もの小さなファイルでどのファイルシステムが最もよく機能するかを調べました。

  • / dev/urandomからのデータを使用して300000ファイル(512Bから1536B)を作成します
  • 30000個のランダムファイルを書き換えてサイズを変更する
  • 30000個の順次ファイルを読み取る
  • 30000個のランダムファイルを読み取る
  • すべてのファイルを削除

  • すべてのステップの後にキャッシュを同期およびドロップする

結果(秒単位の平均時間、短い=良い):

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は多くの小さなファイルで低速であることが判明しました-この使用例では使用しないでください

断片化の問題

ファイルシステムがドライブにファイルを配布するのを防ぐ唯一の方法は、パーティションを本当に必要なだけ大きくすることですが、ファイル内の断片化を防ぐためにパーティションを小さくしすぎないように注意してください。 [〜#〜] lvm [〜#〜] を使用すると非常に役立ちます。

参考文献

Arch Wikiには、ファイルシステムのパフォーマンスに関する優れた記事がいくつかあります。

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

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

49
taffer

私はこのタスクにReiserFSを使用しています。これは、多くの小さなファイルを処理するために特に作られています。 funtoo wikiには簡単に それについてのテキストを読む があります。

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

7
Baarn

Ext4のパフォーマンスは、ディレクトリ内のファイルが100万から200万個になると低下します。このページを参照 http://genomewiki.ucsc.edu/index.php/File_system_performance UCSCでHiram Clawsonによって作成

7
Max

XFSは、このような状況で非常によく機能することで知られています。これは、メールストア(1つのディレクトリに数十万のファイルを格納できる)の仕事で使用する理由の一部です。 ReiserFSよりもフォールトトレランスが優れており、幅広く使用されており、一般に非常に成熟したファイルシステムです。

さらに、XFSはオンラインでの最適化をサポートしています。ただし、遅延割り当て技術を使用しているため、そもそも断片化(他のファイルシステムと比べて)が少なくなっています。

0
Patrick