我最近在开发Web服务器上安装了Munin来跟踪系统使用情况.我已经注意到系统的inode使用量每天增加大约7-8%,即使磁盘使用量几乎没有增加.我猜是有些东西正在写大量的小文件,但我无法找到/在哪里.
我知道如何查找磁盘空间使用情况,但我似乎无法找到总结inode使用情况的方法.
是否有一种很好的方法来确定目录的inode使用情况,以便找到使用的来源?
解决方法
不要指望这个快速运行……
cd到您怀疑可能存在包含大量inode的子目录的目录.如果此脚本花费大量时间,您可能会在文件系统中找到要查找的位置. / var是一个好的开始……
否则,如果您切换到该文件系统中的顶级目录并运行它并等待它完成,您将找到包含所有inode的目录.
find . -type d | while read line do echo "$( find "$line" -maxdepth 1 | wc -l) $line" done | sort -rn | less
我并不担心分拣的成本.我运行了一个测试并对未分类的输出进行排序,对350,000个目录进行了8秒.最初的发现花了.实际成本是在while循环中打开所有这些目录. (循环本身需要22秒). (测试数据在一个包含350,000个目录的子目录上运行,其中一个目录有一百万个文件,其余的目录在1到15个目录之间).
不同的人都指出ls并不是很好,因为它对产量进行了分类.我试过回声,但这也不是很好.其他人指出stat提供了这个信息(目录条目数),但它不可移植.事实证明,找到-maxdepth在打开目录和计算.files方面真的很快,所以……这里是每个人的点数!