前言:

某台服务器inode满了,很久没有处理过类似问题了,有点忘记,记录在此

一、理解inode

要理解inode,要从文件存储说起,Linux系统文件在物理上都是存储在硬盘上面的,硬盘存储里面,最小存储单位是"扇区(Sector)",每个扇区存储512字节

操作系统在读取硬盘的时候不会一个一个读取扇区,这样效率很低,而是一次性连续读取多个扇区,多个扇区就组成了一个块(block),而这种由多个扇区组成的块,就是文件存储的最小单位,块的大小一般为4KB,也就是说8个扇区组成了一个block

文件信息存储在block中,如何找到这些block,以及怎么知道这些block存储了哪些内容,如文件的创建人、时间、大小等信息,这些信息又叫元数据,而这种存储元数据的区域就叫做inode,inode就是索引节点

也就是说每个文件都需要记录这些元信息,也必然会占用inode,因此inode占用过多,多数是小文件太多导致

二、查找哪里占用inode

知道了inode占用多是文件多导致之后,那么只需要找到哪些目录下小文件过多,然后删除即可

1.查看哪个盘占用inode

df -ih

bVbkAz1?w=561&h=68

2.进入该挂载目录,然后通过wc -l统计哪些占用多

bVbkAp1?w=530&h=43

bVbkAqe?w=454&h=35

bVbkAqE?w=262&h=37

3.可以看到是/var/spool/postfix/maildrop下很多小文件

bVbkAq8?w=833&h=412

三、解决

最简单的办法,是进入该目录,删除这些没用的小文件

cd /var/spool/postfix/maildrop && find -type f |xargs rm -f

然后查看,发现inode节点占用已经很低了

bVbkAAl?w=579&h=66

查到了/var/spool/postfix/maildrop目录下有大量小文件,原来是crond在执行脚本时会将保持信息以邮件的形式发送给crond用户,而环境的postfix没有正常运行,导致邮件发送失败,都会堆积在/var/spool/postfix/maildrop/目录中,要解决该问题,一是可以启动postfix,让邮件服务正常运行.另外还可以在/etc/crontab中修改配置MAILTO=""发送为空,这样就不会堆积了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐