inode问题定位与解决

2019-01-16  本文已影响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=""

上一篇 下一篇

猜你喜欢

热点阅读