Linux サーバー プロセスでは、数千個のファイルをディレクトリに書き込み、そのファイルを削除し、その後、ディレクトリを削除せずに同じディレクトリにさらに数千個のファイルを書き込んでいます。書き込みを行っているプロセスがどんどん遅くなっていることに気付き始めています。
私の質問は次のとおりです: ls -l の出力からわかるように、フォルダーのディレクトリ サイズが 4096 から 200000 以上に増加しました。
root@ad57rs0b# ls -l 15000PN5AIA3I6_B 合計 232 drwxr-xr-x 2 chef chef 233472 5月30日 21:35 バーコード
ext3 では、ディレクトリのサイズが大きいとパフォーマンスが低下する可能性がありますか?
ありがとう。
アーロン
答え1
はい、ディレクトリ サイズが大きいと問題になることがあります。一般的には、ファイルをサブディレクトリにハッシュして問題を回避するのが最善です。それができない場合は、大きなディレクトリの検索パフォーマンスを大幅に向上できる ext3 機能があります。
tune2fs -O dir_index /dev/$DEVICE
e2fsck -D /dev/$DEVICE
これにより、ディレクトリ インデックス データの b-tree ハッシュが有効になり、検索時間が大幅に短縮されます。もちろん、インストール時に既にこれが有効になっている可能性もあります。このコマンドを実行して出力を確認すると、次のようになりますdir_index
。
tune2fs -l /dev/$DEVICE | grep 'features:'
編集:
また、マウント オプションとして設定することを検討することもできますnoatime
。これは、大規模なディレクトリに特化した調整ではありませんが、大量のファイルシステム アクティビティが行われているときはいつでも、パフォーマンスを大幅に向上させることができます。