Linux 索引节点inode 100%清理教程

2022-04-29 12:30:27 浏览数 (2)

问题场景

1、网站无法上传文件,网站访问报错,缓存文件无法生成。

2、网站SESSION莫名其妙失效。

3、操作数据库查看表结构出现类似的报错

can not create to file /tmp/xxx Errcode:28

都有可能是/tmp缓存文件无法创建。

可能出现的原因

1、磁盘已满。可以用df -TH命令进行查看。

2、索引节点已满。可以用df -i命令进行查看。

代码语言:javascript复制
df -i
2.png2.png

上图所示的结果分析,系统盘的索引节点inode已达到100%,系统运行出现故障。

索引节点已满的排查解决方案

1、 查看根路径下各个文件夹的文件数

代码语言:javascript复制
for i in /*; do echo $i; find $i |wc -l|sort -nr; done   

以上代码中,/*表示在根目录查找,结果会列出每个文件夹占在用的节点数量,可以情况逐步分析。

如发现var文件夹内容过多,可以cd进入var目录再执行,只需将对应路径进行修改即可。

代码语言:javascript复制
cd var

for i in /var/*; do echo $i; find $i |wc -l|sort -nr; done   

举例说明,假如通过反复排查,发现/var/spool/postfix/maildrop/下有180W 文件。解决方法就是进入到对应目录中,删除对应文件夹下的文件,但执行rm -rf ./* 通常会报错,提示参数列表过长。原因是文件太多了。

换种方式进行删除,如下所示,但一定要注意,先cd到需要删除的目录下,然后再执行删除操作

代码语言:javascript复制
# 一定要先进入要删除的目录下
cd /var/spool/postfix/maildrop/ 

# pwd命令可以显示当前路径
pwd

# 一定要先确认当前路径再执行删除操作
find . -name "*" | xargs rm -rf 

再次强调,一定要注意,先cd到需要删除的目录下,然后再执行删除操作

0 人点赞