Why?
废话不多说直接来图,可以看出磁盘已经快要满了
未清之前
What?
可以看出mnt文件夹占用的最大,然后进入mnt目录里通过命令,根据文件大小对该路径下文件排序
du -h --max-depth=1
我们服务器出现磁盘快满了的原因是因为,服务器部署了多个tomcat,然后tomcat系统日志忘记屏蔽了,时间一久,导致catalina.out记录的系统日志过多,然后文件就很大,最大的一个居然占了28G,找到了原因就解决吧
How?
当然是删除文件了,但是删除之后通过命令查看当前路径各文件大小
删除后du -sh *
发现已经小了很多了,但是奇怪的是,通过df命令查看,空间并未清理出来
奇怪通过查资料发现一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,数据被删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中,数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除access_log文件后,空间还没释放,就是因为httpd进程还在一直向这个文件写入内容,导致虽然删除了access_log文件,但文件对应的指针部分由于进程锁定,并未从meta-data中清除,而由于指针并未被删除,那么系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放也就不足为奇了。
最简单粗暴的解决办法就是重启,当然如果你知道那个进程占用着呢也可以重启指定进程,我们是tomcat占用,然后重启tomcat,问题就解决啦
重启后
网友评论