美文网首页
inode问题定位与解决

inode问题定位与解决

作者: 荷叶的莲藕 | 来源:发表于2019-01-16 14:33 被阅读0次

    inode问题定位与解决

    问题描述

    ​ 最近在登陆云服务器的时候发现服务器登陆不上,看了下监控已经OOM了,只能重启服务器,重启了以后可以登陆上去,但是发现一些命令总是报错,显示的是磁盘空间已满,但是使用df -Th的时候发现磁盘并没有满,所以怀疑是inode节点的问题,使用命令发现真的是inode节点的问题:

    df -i
    

    分析原因

    ​ 虽然发现了问题,因为使用这个机器项目是外包出去的,外包那边也不清楚怎么回事,最初怀疑是日志的问题,但是发现日志并没有打太多,这就很纠结了,那应该怎么统计出来是哪里的文件太多了哪?原本打算使用tree命令,但是第一,inode已经满了,软件也装不上。第二,tree不可能统计出来也相当的麻烦。一个一个的找也不太显示,于是自己编写了一行命令:

    for i in /*; do echo i; find i | wc -l; done
    

    发现了文件大多都积压在maildrop目录下面

    解决办法

    ​ 解决办法就是删除这些文件,但是删的时候问题又来了,这些文件(大约100多万)如果直接以rm -rf删除是非常慢的,于是网上搜了一个命令,还没有来得及细看

    find 目录 -type f -name '*' -print0 | xargs -0 rm 
    

    ​ 这下问题解决了,还要分析一下为什么会堆积这么多的文件,网上一搜到处都是,就直接把原因粘贴过来了.

    产生原因

    ​ linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送Cron所有者, 而由于客户环境中的sendmail和postfix没有正常运行,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面,而且没有自动清理转换的机制,所以长达一年的时间,此目录已堆积了大量的文件。

    解决方法:

    在cron的开头加上如下字段

    MAILTO=""

    相关文章

      网友评论

          本文标题:inode问题定位与解决

          本文链接:https://www.haomeiwen.com/subject/enrmdqtx.html