このシナリオの解決策を教えてください:
ファイル数が200万を超えると、ランダムアクセス時間が遅くなるという問題が発生しました。ファイルシステムはext3で、noatimeおよびdir_indexオプションがありますが、「ls」や「find」などのコマンドを使用する必要はありません。
私が可能だと思う解決策:
1または2を選択した場合、どのように複製しますか? rsyncは、ext3ファイルシステム上のこのような大量のデータを処理できません。
私たちにとって最善の解決策はAmazonS3を使用することですが、これは私たちのトラフィックでは高すぎます...多分あなたはいくつかのアナログ(安いCDNまたはオープンソースプロジェクト)をお勧めします
1つのディレクトリにある何百万ものファイルは設計が悪く、遅くなります。それらをエントリ数の少ないディレクトリに分割します。
見てください https://unix.stackexchange.com/questions/3733/number-of-files-per-directory
RAIDやSSDを使用します。これ自体では遅いアクセス時間を解決することはできませんが、複数のディレクトリを導入し、ディレクトリあたりのファイル数を1桁または2桁減らすと、ホットスポットを防ぐのに役立ちます。
XFSを検討してください。特に、複数のドライブと複数のディレクトリを使用する場合は、優れた利点が得られる可能性があります(使用するオプションについては、たとえば this スレッドを参照してください。md
RAIDでのXFSに関するヒントをいくつか示します) 。
個人的に私は:
mod_rewrite
(これはCDNタイプのアプリケーションだと思います)diff
を実行するのと同じくらい簡単です(つまり、常にログを同期して最初に同期しますが、それらを置き換える前に差分を取り、他にコピーが必要なものを計算します)。