Linux中Inodes满了怎么办?Inodes使用率100%原因与解决方法

如何解决Inodes使用率100%的问题

今天一位朋友/分区存储空间还没有用完,但是却不能创建目录和文件了,查看/分区的,结果发现Inodes文件数量被占满了,Inodes使用率过高达到了100%。命令如下:

df -h 
#查看分区存储情况
df -i
#查看inodes情况
Linux中Inodes满了怎么办?Inodes使用率100%原因与解决方法

原因:

大多数情况下是由于文件数量过多所引起的,只需要删除无用的就好了。

解决方法

1、查看并删除临时文件

ls -lt /tmp | wc -l
find /tmp -type f -exec rm {} \;

2、删除0字节的文件,这些文件也会占用inode

find /home -type f -size 0 -exec rm {} \;

3、查找大文件,并进行适当删除

根据我的个人经验,前两个占用inode的使用率很少,主要是查找大文件这个步骤,可以查看哪些占用inode使用率最高?具体如下:

第一步:查看某个目录下的文件数量

我这里为什么要循环/var/*?这是根据个人经验吧!毕竟你的服务器情况只有自己最清楚。

[root@node2 ~]# for i in /var/*; do echo $i; find $i |wc -l; done
Linux中Inodes满了怎么办?Inodes使用率100%原因与解决方法

结果:我们通过查看,只有 /var/spool/ 目录下文件数量最多。

第二步:按照第一步的思路,继续查看 /var/spool/ 目录下的文件数量
[root@node2 ~]# for i in /var/spool/*; do echo $i; find $i |wc -l; done
Linux中Inodes满了怎么办?Inodes使用率100%原因与解决方法

结果:发现 /var/spool/postfix/ 目录下有1889027的文件数。

原因:

问:我这里为什么 /var/spool/postfix/ 下面会生成那么多的文件数量?

答:这是因为crontab定时任务所导致的,定时任务执行后发送告知联系人,但是发送失败就会在postfix下生成,所有就产生了这么多的垃圾文件。

第三步:既然知道了原因,那就删除多余的垃圾文件,方法如下:

首先,进入到miaildrop目录下进行清理这些无用文件

[root@node2 maildrop]# cd /var/spool/postfix/maildrop
[root@node2 maildrop]# pwd
/var/spool/postfix/maildrop
[root@node2 maildrop]# 

其次,我先通过 rm 直接删除,结果报错参数列表太长:

[root@node2 maildrop]# rm -rf *
Linux中Inodes满了怎么办?Inodes使用率100%原因与解决方法

最后,我只好使用类似于 ls | xargs -n 500 rm -rf 的方式进行删除:

[root@node2 maildrop]#  ls | xargs -n 500 rm -rf
Linux中Inodes满了怎么办?Inodes使用率100%原因与解决方法
第四步:再次查看Inodes文件数是否被释放?Inodes使用率是否还是100%?

结果:Inodes使用率只有4%。

Linux中Inodes满了怎么办?Inodes使用率100%原因与解决方法

总结:

Linux中Inodes满了的原因有很多,不同的场景情况也是不一样的,Inodes占用100%是很正常的,也会经常遇见这种情况。上面所有的操作步骤只是给大家一个解决问题的思路,哪怕你以后再遇到inode使用率满了这个类似的问题,只要按照此文章原理,相信你一定可以解决的。

每天一杯奶茶
© 版权声明
THE END
喜欢就支持一下吧
点赞6
分享
评论 抢沙发
Bear的头像-神秘的小店

昵称

取消
昵称表情代码图片