彻底解决Linux索引节点(inode)用满导致故障的方法

  • A+
所属分类:Linux

在换服务器时,tar解压网站打包文件时,发现中途出现 Cannot open: No such file or directory

第一感觉是空间不足,于是就查了大量资料,发现是站点文件个数太多造成的,也就是索引节点(inode)不足。

方案一:

空间剩余14G,可以排除空间已满的情况。导致文件生成失败还有另一个原因,就是文件索引节点inode已满。

inodes 占用100%,果然是这个问题。

解决方法:删除无用的临时文件,释放inode

查找发现 /tmp 目录下有很多sess_xxxxx的 session临时文件。

进入/tmp目录,执行find -exec命令

如果使用rm *,有可能因为文件数量太多而出现Argument list too long错误,关于Argument list too long错误可以参考《linux Argument list too long错误解决方法》

除了/tmp的临时文件外,0字节的文件也会占用inode,应该也释放。

遍历寻找0字节的文件,并删除。

删除后,inode 的使用量减少为19%,可以正常使用了。

方案二:

服务器监控突然曝出了如下的错误:

登录到服务器上df -i
一看/路径下96%,而数据目录/data下才用了30%,故初步判断生成的数据量正常,可能是一些系统产生的文件把根路径占满了

于是乎在执行以下命令,查看根路径下各个文件夹的文件数

数文件数超过10W的有两个/data(我们的数据分区,确认数据量正常)和/var

/data 13W+文件

/var下70W+文件

楼主Linux水平有限,于是把/var下的目录一个个的执行了上面的命令

重点来了,当执行到下面的时候

文件夹里有70W+文件

于是重复上述步骤,终于找到了罪魁祸首

/var/spool/postfix/maildrop/下有67W+文件

彻底解决Linux索引节点(inode)用满导致故障的方法
楼主百度了一把

于是乎执行rm -rf ./* 竟然报错

彻底解决Linux索引节点(inode)用满导致故障的方法

只能来大招了。

10S后,成功收到报警解除的邮件
胜利处理完困扰我好几天的问题

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: