我在我的RHEL服务器上生成了超过50 so的缓存文件(典型的文件大小是200 so,所以没有一个文件是巨大的)。当我试图删除这些文件时,需要8-10小时。
然而,更大的问题是,在这8-10个小时内,系统负载达到了临界状态。在删除过程中,我是否可以控制系统负载。
我试着用
nice -n19 rm -rf *但这对系统负载没有帮助。
我在superuser.com上问了同样的问题,但没有得到足够好的答案,所以在这里尝试。
发布于 2010-03-29 11:05:04
正如您在评论中提到的,您使用的是ext3。
众所周知,rm对于ext3上的大型文件的性能很差;这是ext4中修复的问题之一。例如,请参见这个职位或核菜鸟 (其中提到区段可以提高大文件的删除和截断速度)。
我不知道这在多大程度上适用于您典型的文件大小。我希望它至少能应用一点,因为在大约200 at的时间里,您已经在ext3上使用间接块,而在ext4上可能只使用一个区段。
作为一种解决办法(因为您可能不会仅仅为了这一点而升级到ext4 ),每次只删除几个文件,并在删除之间添加一个sleep。这不是很漂亮,但应该有助于减轻负荷。
另外,如果丢失断电文件不是问题(因为它是某种缓存),那么您可以将它们放在一个单独的分区中,在引导时再次使用mkfs,并使用没有日志甚至ext2的ext3。造成高负载的原因可能是日志被刷新到磁盘,与读取冲突(您在另一篇文章中提到,您有很多并发读取)。
发布于 2010-03-29 10:04:05
也许壳是问题的原因。您应该直接使用find:find /dir -mindepth 1 -maxdepth 1 -delete
发布于 2010-03-29 09:29:56
那只是25万个左右的文件,应该不是一个真正的问题--您使用的是什么文件系统,这个卷还用于其他什么吗?
https://serverfault.com/questions/127221
复制相似问题