web-dev-qa-db-ja.com

以前に多くのファイルを含んでいた1つの特定のディレクトリでファイルのext4リストが非常に遅い

バックグラウンド

小さなlogrotateの事故が発生しました... Logrotateは、ミステイクによってアーカイブログをローテーションし、/var/log/内のファイルが2次関数的に増加しました。そして、何かがおかしいという風に遭遇したとき、/var/log/にはすでに数百万のファイルが含まれていました......

私は(いくつかの脱毛とfind/sed/grepマジックの後)なんとか問題のあるファイルをすべて削除し、logrotate設定を修正しました。そして、すべてがうまくいったと思った...

問題

私がls/du -hsまたはその他の方法で/var/log/(現在80mbのアーカイブ/ログと最大で数百のファイルを含む)の内容をリストする場合1、2分。これはどういうわけかlogrotateの事故に関連していると思いますが、私は確信がありません、それは他の何かである可能性があります。とにかく、デバッグを開始する場所や、これに対する修正を探す場所がわからなくなっています。助けてください:3

他の情報

uname -a
Linux xxx 3.3.8-gentoo #18 SMP Sat Sep 21 22:44:40 CEST 2013 x86_64 Intel(R) 
Core(TM)2 CPU 4400 @ 2.00GHz GenuineIntel GNU/Linux

cat /proc/meminfo 
MemTotal:        2051552 kB
MemFree:           75612 kB
Buffers:            9016 kB
Cached:          1740608 kB
SwapCached:            0 kB

CFQ IO scheduler + SLUB allocator 

私はこれを考えました: ディレクトリ内のファイルの数が多すぎますか?(ネットからデータをダウンロードしています) 関連していましたが、ファイルがもう残っていません。

編集する

init 1を呼び出した後も問題は解決しないので、FS以外に責任があるプロセスはないと想定しても安全だと思います。

解決策(受け入れられた回答から適用)

init 1
mv /var/log /var/log1
mkdir /var/log
chmod --reference=/var/log1 /var/log
chown --reference=/var/log1 /var/log
tar -C /var/log1 -cvp . | tar -C /var/log -xvp
rm -rf /var/log1
init 5
17
Emily L.

ディレクトリはサイズが大きくなるだけで、縮小することはありません。それらすべてのファイルを一時ディレクトリ(log2など)に移動してから、古いディレクトリをrmdirして、一時ディレクトリの名前を新しい永続ディレクトリに変更します。

26
Matthew Ife