文件ext4列表很慢,在一个特定的目录,其中包含大量的文件之前

背景

我有一个小的logrotate misshap … Logrotate会通过misstake旋转归档日志,导致/var/log/中文件的二次增长。 而当我发现错误的时候, /var/log/已经包含了几百万个文件

我设法(在一些hairloss和查找/ sed / grep魔术后)删除所有有问题的文件,并修复我的logrotateconfiguration。 并认为一切都很好…

问题

每当ls / du -hs或以其他方式列出/var/log/ (其中现在包含80mb的存档/日志以及最多几百个文件)的内容时,执行该过程的过程会持续一两分钟。 我确实相信这与logrotate misshap有关,但我不确定,可能是别的。 无论如何,我不知道从哪里开始debugging或寻找解决办法。 请帮忙: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 

我以为: 一个目录中有多less文件太多? (从网上下载数据)是相关的,但我没有留下的文件了。

编辑

即使在调用init 1之后,问题仍然存在,所以我认为可以安全地假设除了FS以外没有别的过程可以指责。

解决scheme(应用于接受的答案)

 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 

目录只有规模增长,不缩水。 尝试将所有这些文件移动到一个临时目录(如log2),然后rmdir旧的目录,并重新命名为新的永久性的临时目录。