[问题已处理]系统提示磁盘不足,但是df -h显示仍有空余

生产环境部署完成之后 项目跑了一会报错了。提示磁盘空间不足

df –h 查看之后 发现/目录下还有6G,但是执行命令 创建临时文件均提示no space。

 

直接lsof |grep delete

看了一下,是否有/目录下删除的文件没有释放的。看了一下 的确是有的。直接把进程杀掉,或者重启服务。

磁盘释放了一部分。不会提示磁盘空间不足了。

 

过了一会  又报这个错了,这下lsof |grep delete  搜索出来并没有/相关的文件了。这下僵硬了

 

百度了一下

使用df –I 查看inode

看到了/路径下的inode用尽了

[问题已处理]系统提示磁盘不足,但是df -h显示仍有空余_第1张图片

解决:删除一些无用的文件或者文件夹,释放inode

 

一般都是crontab的job有问题,造成/var/spool/clientmqueue中产生许多的零碎文件。
处理方法:
    用rm -rf *会不能删除,并会有相应的提示,大意是参数太多。
    可以用多种方法,这里提及一个我随便写的,在/var/spool/clientmqueue/下执行命令:“lsattr ./|awk -F"/" '{print $3}'|xargs -i rm -rf {}”用lsattr列出./下面的文件名的属性,用awk取出名字,然后rm -rf
    还有一个方法比较普遍的使用:“find /var/spool/clientmqueue/ -type f -exec rm {} \;”或者在/var/spool/clientmqueue/目录下“find ./ -exec rm {} \;”
    将crontab中没有定向输出的行都在最后加上“> /dev/null 2>&1”,在删除的过程中操作。或者先停止crontab,加上重定向。

 

我这边直接删除了/var/spool/*   。定时任务直接没有了,需要重新创建了。

 

看到df –I 的确有空余了,不过随着程序的执行,可用的还是越来越少了。

 

 

 

[问题已处理]系统提示磁盘不足,但是df -h显示仍有空余_第2张图片

 

马上程序又报错了。

这边先用应急的办法 因为生产的临时小文件是产生在/tmp的。我将/tmp 挂到另一块盘上

mount --bind /mnt/tongguan/tmp /tmp

这样生成的文件就会产生在/mnt/tongguan/下了

 

 

lsof 再次查看 发现居然有/下面的文件 没有被删除的。自己坑了自己,多加了一个delete,结果关键字是DEL的进程被过滤了。

[问题已处理]系统提示磁盘不足,但是df -h显示仍有空余_第3张图片

原先的命令结果如下

[问题已处理]系统提示磁盘不足,但是df -h显示仍有空余_第4张图片

杀掉重启进程,空间就释放了。

 

这些只能暂时解决一下问题。还是要扩大根目录。毕竟根目录20G,之前的进程也不敢乱动。系统盘inode是创建的时候设置的,只能打个快照再停机扩容了.

 

 

主要问题是小文件太多了。

扩容之后 问题解决了 

也可以使用下面这个命令,查看/下面那个文件夹占得inode最多,便于排查问题。

 

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

发现是/mnt下占inode最多,查看了一下发现

 

有个job路径下面有很多很多日志文件夹,进入日志文件夹 查看日志每个都只有短短几行。问了开发 说是框架造成的?

 

直接删除log ,并设置定时任务,每晚12点删除2天前的日志文件。让开发下次发布前处理掉。这样打日志 谁顶得住呀

[问题已处理]系统提示磁盘不足,但是df -h显示仍有空余_第5张图片

 

 

删除中 发现inode free的多起来了

[问题已处理]系统提示磁盘不足,但是df -h显示仍有空余_第6张图片

 

 

全部删除完 我的天, 清理了97%

[问题已处理]系统提示磁盘不足,但是df -h显示仍有空余_第7张图片

         

你可能感兴趣的:([问题已处理]系统提示磁盘不足,但是df -h显示仍有空余)