web-dev-qa-db-ja.com

Linuxファイルシステムを最適化して最大5億の小さなファイルを読み取る

比較的小さい(通常は数十kb)最大500Mのファイルと最大150Kのディレクトリを含むファイルシステムでパフォーマンスの問題が発生しています。ファイルへのアクセスは主に読み取りと書き込みであり、かなりまれです。ファイルは主にハッシュ化されたディレクトリ階層に格納され、ディレクトリごとに最大30Kのファイルがありますが、場合によっては1つのディレクトリに最大500Kのファイルが存在する可能性があります。

サーバーは、ファイルシステムを最大10台のクライアントマシンと共有します。

ディレクトリリストの取得はしばしば遅く、ローカルであっても絶対パスでファイルを読み取ることもあります。

これはUbuntu12.04.4(カーネル:3.8.0/x86_64)を実行する物理サーバーであり、ハードウェアRAID-6ボリュームでext4を使用します。

このシナリオで推奨されるファイルシステムのセットアップは何ですか?

  • この場合に特に適したファイルシステム(例:ext4、xfs、btrfsなど)はありますか?
  • どのような種類のRAID構成(swとhw、RAIDレベルなど)を使用する必要がありますか?
  • ファイル共有のセットアップ(テクノロジー[例:NFSと競合]、構成など)はどうですか?
3
marko

このような問題が発生した場合は、次のことを行う必要があります。

  • すべての要件(遅延、帯域幅、冗長性、信頼性、セキュリティ、必要な機能など)を取得します。
  • 現在のシステムを分析します。ない場合は、テスト環境を作成します。すべてのコンポーネントがどのように機能するかを理解します。現在の負荷と予想される負荷を理解します。
  • 本番システムとテストシステムの両方にシステム監視(グラフ付き)を追加します。少なくともCPU使用率、ネットワーク使用率、およびディスクI/O使用率を監視します。
  • テストサーバーを作成し、それらを負荷テストします。マイクロベンチマークだけでなく、合成ベンチマークを使用した負荷テスト。

最新の安定したカーネルを備えた最新のOSの安定したバージョンを使用します。

2

このシナリオで推奨されるファイルシステムのセットアップは何ですか?

この場合に特に適したファイルシステム(例:ext4、xfs、btrfsなど)はありますか?

安全性の観点から、ここではext4が最良の選択だと思います。読み取りパフォーマンスに関しては、RaiserFS(/ 4)の方が優れている可能性があります。

https://unix.stackexchange.com/questions/28756/what-is-the-most-high-performance-linux-filesystem-for-storing-a-lot-of-small-fi

http://www.phoronix.com/scan.php?page=article&item=linux_39_fs&num=1

何百万もの小さなファイルのファイルシステム

どのような種類のRAID構成(swとhw、RAIDレベルなど)を使用する必要がありますか?

必要がある:

  • 待ち時間/アクセス時間を短縮する
  • 読み取り/書き込みの数を減らします(noatime、nodiratime、realtime、barrier = 0)

並列操作を実行できる可能性のあるすべてのRAIDレベルが適切です。たとえば、RAID 10(LinuxソフトウェアRAID)には多くの調整オプションがあります。

ファイル共有のセットアップ(テクノロジー[例:NFSと競合]、構成など)はどうですか?

ここで数字をあげることはできません。ファイル共有もかなり広い用語です。大量のファイル(FTPSではなく-転送ごとにTLSのネゴシエーションに時間がかかるため)を処理するときは、FTPを使用して非常に優れた経験を積んでいます。小さなファイルを処理する場合、プロトコルの柔軟性(uが実行できること)とプロトコルのオーバーヘッド(所要時間、パケット内のスペース)を最もよく区別できるようです。

0