inode概念
Linux的文件存储系统中,硬盘是按照“扇区”进行存储数据,每个扇区的存储容量为512字节。多个扇区组成一个“块(block)”,即文件存取的最小单位。操作系统读取硬盘中的文件时,一次性读取一个“块”,一个“块”一般为4KB。

所有的文件数据都存储到“块”中,那么还必须有一个位置用来存储文件的元信息,比如文件的创建者、字节数、创建日期等。这种存储文件元信息的区域叫做inode。inode包含文件的元信息,具体来说有以下内容:inode编号;文件的链接数目;属主的ID(UID);属主的组ID(GID);文件的大小;文件所使用的磁盘块的实际数目;最近一次修改的时间;最近一次访问的时间;最近一次更改的时间。每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。也就说明inode数量是有限制的。
故障现象及分析
故障现象:Linux主机根目录分配了50G磁盘空间,平台告警根目录使用率100%。
问题排查:
- 查看/var/log下的日志:发现messages日志和history.log日志占用了23G的空间。先清除这两个日志,让主机恢复正常。
- 清理完日志后,根目录下还占用了27G,因为根目录下没有放置大文件,所以依旧不正常。根据df-i判断节点占用数:发现inode使用率达到了19%。使用du–block-size=g–max-depth=0【目录名】命令一层层递进,最终找到问题目录为/var/spool/postfix/maildrop/。该目录下文件数量预估几百万,占用了大量了inode和磁盘空间。
- 造成原因初步判断为:定期任务执行,没有将输出结果丢掉>/dev/null2>&1。任务执行失败时,会自动发送邮件,而没有配置邮件信息,就会不断的往/var/spool/postfix/maildrop/目录下丢,导致该目录下文件数量不断变多,最后占满。
解决办法
- 临时解决删除该目录下的文件,由于文件数量太大,使用ls命令都会卡死,所以直接使用xargs命令接受ls结果进行删除,不展示文件目录下的文件名:ls|xargs-n90rm-rf慢慢删除后,磁盘恢复正常。
- 长久对策找到对应的定期任务,并添加上>/dev/null2>&1,丢掉输出结果。
本文作者:小本本
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6367.html
