CentOS 6-Inode已满-无法删除包含文件的文件夹

CentOS 6-Inode已满-无法删除包含文件的文件夹

我在 rackspace 有一台 CentOS 6 服务器,有 40GB 空间。我的服务器不断崩溃,并出现“设备上没有剩余空间”错误,但还有超过 50% 的可用空间。

当我运行 df-i 时,输出如下:

/dev/xvda1           2490368 2490351      17  100% /

我认为问题出在 postdrop 上。在我禁用 postfix 和 postdrop 之前,只要我释放一些 inode,它们就会立即填满。

据我所知,/var/spool/postfix/maildrop 中创建了成千上万个文件。文件夹本身有 67MB。我无法“ls”该文件夹,我尝试过“rm -rf maildrop/”,但只是挂起了很长时间。

我如何删除此文件夹。我甚至不使用服务器上的邮件,所以我禁用了 postfix、postdrop 和 sendmail。

drwx-wx---. 2 postfix postdrop  67M Dec 18 18:25 maildrop 

只是想更新:

ls -1 | xargs -I{} rm {}

上述命令解决了这个问题

断断续续耗时 48 小时。/var/spool/postfix/maildrop 文件夹中似乎有近 2,000,000 个文件。

答案1

如果你的目录中满是文件,通常你不能用 rm 删除所有文件

尝试:

find /path/to/directory -type f -exec rm {} \;

或者尝试:

ls -1 /path/to/directory | xargs -I{} rm {}

换句话说,您必须尝试将命令分成两部分,一部分处理文件,另一部分删除文件。

当您将大量文件放入一个目录中时,您无法使用 rm 之类的命令删除文件。因为 rm 在任何情况下都会在所有文件和目录之间进行迭代。

答案2

嗯,你真的想关闭你的服务器吗?所以不要在

find /path/to/directory -type f -exec rm {} \;

此命令将为每个文件运行“rm”命令!

正确使用“查找”命令:

find /directory/ -name ‘*’ -exec rm {} +

这将仅对找到的文件调用“rm”命令。您的服务器会感谢您!;) ;) ;)

答案3

在尝试执行 freedev 建议的任何命令时收到各种错误后,我最终像这样清理它:

rm -f 0*
rm -f 1*
rm -f 2*
[...]
rm -f 9*

你可能想先做一个来rm -f 00*估计需要多长时间

相关内容