linux清除磁盘空间不足,删除大文件后,还是显示占用空间,咋办?我很急!!!来看这里

博主身为测试,但是目前兼职半个运维,最近查看阿里云的服务器在群内报警已有多次,提醒磁盘空间已到达设置阈值

 

 

 

一、处理办法

登录服务器之后,通过命令

1. df -h 查看当前服务器磁盘占用情况,已经到达了设定范围

2.cd 到对应的目录后,开始查找占用比较大的文件

3.命令---du -sh * 查看当前目录下所有文件占用大小,然后通过这种方式一个个的去检查文件夹大小,最后找到日志文件比较大,日志嘛比较早先的可以先给干掉

4.删除日志文件,rm -f xxx

 

二、发现问题并解决问题

 

1.但是这么做之后,继续df  -h发现磁盘空间还是94%,去看下那个删除的文件还在不在,结果发现文件确实是删除了,但是为啥磁盘占用还是这么多,后来还是查询了相关资料

2.问题原因---看下面解释,简单来讲就是删除的文件还是占用进程,不会主动释放

一般说来不会出现删除文件后空间不释放的情况,但是也存在例外,比如文件被进程锁定,或者有进程一直在向这个文件写数据等等,要理解这个问题,就需要知道Linux下文件的存储机制和存储结构。

一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,数据被删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中,数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除access_log文件后,空间还没释放,就是因为httpd进程还在一直向这个文件写入内容,导致虽然删除了access_log文件,但文件对应的指针部分由于进程锁定,并未从meta-data中清除,而由于指针并未被删除,那么系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放也就不足为奇了

 3.解决问题

  最简单的方法是关闭或重启httpd进程,当然也可以重启操作系统,不过这些并不是最好的方法。对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件,具体可以通过如下命令完成

  3.1 博主是通过重启服务的方式来释放资源,重启服务之后,果然磁盘占用就降下来了,但是也有另外一种方法

  3.2 另外一个办法就是在线清空下那个对应的日志文件

   echo "" > xxx.log,这算是一个取巧的操作,直接把文件置空,服务也可以用,文件大小也可以控制下来了

 

希望博主写的内容可以帮到各位~

posted @ 2021-09-29 11:29  超级奶爸丁先生  阅读(2649)  评论(0编辑  收藏  举报