zoukankan      html  css  js  c++  java
  • 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 

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

  • 相关阅读:
    地图刷新方法一二三。
    AE常用代码(标注要素、AE中画带箭头的线、如何获得投影坐标、参考坐标、投影方式、FeatureCount注意事项)
    转:Windows任务计划实现自动执行ArcGIS相关功能
    解决 Oracle em 无法打开的问题
    设置ORACLE数据库游标大小
    ArcSDE数据迁移方法实践说明
    转:湖南省地理信息关联单位
    转:C# Autocad 关闭所有有色斑的图层
    转:实体ToolTip显示XData
    ArcGIS Server 10 服务器要求
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/11745787.html
Copyright © 2011-2022 走看看