web站点磁盘空间爆满无法删除故障处理

今天下午看到zabbix上报警,提示有一台测试服务器硬盘快要满了,用量已经超过了百分之八十,我是这么做的:

第一步:首先通过df -h查看一下哪个路径下的空间用量比较大,结果发现是/下占用的空间比较多

[root@kk var]# df -h
 Filesystem               Size  Used Avail Use% Mounted on
 /dev/mapper/centos-root   45G  4.8G   41G  81% /
 devtmpfs                 979M     0  979M   0% /dev
 tmpfs                    991M     0  991M   0% /dev/shm
 tmpfs                    991M  9.5M  981M   1% /run
 tmpfs                    991M     0  991M   0% /sys/fs/cgroup
 /dev/sda1               1014M  133M  882M  14% /boot
 tmpfs                    199M     0  199M   0% /run/user/0

第二步:切加到根目录下,执行su -sh ./* 查看比较大的目录

[root@kk]# du -sh /*
 0   /bin
 100M    /boot
 0   /dev
 32M /etc
 0   /home
 0   /lib
 0   /lib64
 0   /media
 0   /mnt
 0   /proc
 72K /root
 9.5M    /run
 0   /sbin
 0   /srv
 0   /sys
 4.0K    /tmp
 2.2G    /usr
 38G /var          #发现罪魁祸首在这里面

第三步:找出大文件

[root@kk var]# find ./ -size +500M
 ./nginx_access.log 
 [root@kk var]# du -sh ./nginx_access.log 
 37G ./nginx_access.log 

我打开这个文件之后,发现都是nginx的日志,而且都是同一个源地址192.168.66.6/24,192.168.66.0/24是我划给开发部分使用的网段,而且我用tail -f 看了一下这个文件还在一直增大,我没有贸然删除文件,去问了一下开发,开发那帮人说也不知道怎么回事?幸好日志文件里面有源ip地址,于是我在他们的办公区询问了一下谁的IP地址是192.168.66.6,我让他们赶紧查看一下,结果有一半开发都手忙脚乱的去百度如何查看电脑的IP地址!!

image-20200317213631896

当时我想到一个好办法,我登录上路由器,直接把192.168.66.6这个IP地址和对应的MAC地址都给禁用了!禁用了之后使用这个IP地址的电脑就不能上网了!这个人肯定会浮出水面,因为公司的网是我管着,他们搞不定只能来找我!

image-20200317213646293

果真,没一会儿,新来的测试妹子一脸委屈的说她的电脑不能上网了!

image-20200317213701524

我问她这两天有没有测试什么东西?她说前两天用软件测试了一个什么,但是就测试了一会儿就把软件关了,再次问他们确定了那个文件是没有什么用的,于是我就是把那人大日志文件给删除了,本以为完事了,结果通过df -h一查看,var目录还是那么大,通过find查看时大文件查不到了,应该是被删除 了呀!但是为什么磁盘占用量还是那么大呢?

image-20200317213719308

思来想去,不知道昨回事!这里逼我出绝招了,网管三大法宝:重装、重启、格式化,于是我重启了服务器(测试环境,重启一下没啥大影响),这一招真的屡试不爽,重启完成之后再去通过df -h查看,发现真的好了!占用量一下子降到了百分之三十,怎么会这样?重启一下服务器就好了,想不通。

 

后来经过半天的谷歌,百度之后发现大多数服务(包括脚本)在运行时,是不能删除当前正在写入的日志文件的, 清空了运行服务的日志,这里是清理了当天或正在写入的日志文件,之前的没有清理掉,从而导致了上面问题。 原来是这样,当nginx服务运行运行的时候会“绑定”上日志文件,虽然我表现上清理了,但实现上nginx进程并没有释放日志文件,清理的只是文件名,nginx写日志的时候并不是根据文件名写入日志,而是根据文件的inode号,而inode号还没有释放,当我重启服务器之后,就相当重启了nginx服务,就把这个文件的inode号释放了,所以删除操作就变正常了!

image-20200317213736878

我赶紧跑到测试妹子的电脑看了一下,果然,果然,那个测试软件一直在后台运行着……

image-20200317213750971

于是我写了一个定时任务每天执行一次,把3天前的日志自动删除,如下所示:

 00 02 * * * * 
 find /var/log/ -type f -mtime +3 | xargs rm -f 

好了,折腾了一天,事情终于解决了!松口气。

原文地址:https://www.cnblogs.com/yizhangheka/p/11745787.html