Linux系统inodes资源耗尽问题


问题

今天服务器突然崩了,使用的amh面板,执行/etc/init.d/amh-start后所有服务均出现相同的一个错误提示No space left on device

解决

排查

查看磁盘空间使用情况,使用df -h命令,磁盘显然没有占满,那是什么问题呢?一番搜寻后发现居然有个叫inode的东西。引起了我的注意。

查看inodess使用情况,使用df -i命令


由于我没有截图,所以借用一张网图。

inodes耗尽解决

  • (1)查看文件最多的目录
for i in /*; do echo $i; find $i | wc -l; done

如果确定目录范围,把/*写的具体点

最终发现是/var/spool/postfix/maildrop目录下小文件过多,原因如下:

由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送给cron所有者。由于客户环境中的sendmail和postfix没有正常运行,邮件发送不成功,导致全部小文件都堆积在maildrop目录下,另由于缺乏自动清理的机制,故此目录下堆积了大量的文件。

  • (2)删除大量文件
ls | xargs -n 1000 rm -rf

需要使用xargs命令,不然会删除失败。

inodes介绍

Linux系统下文件数据储存在”块”中,文件的元信息,例如文件的创建者、文件的创建日期、文件的大小等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。

inode也占用硬盘空间,硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。


文章作者: 周master
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 周master !
  目录