爱收集资源网

服务器磁盘空间监控系统:避免常见错误现象

网络整理 2023-09-27 05:03

1、错误现象

的监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实没有空间了,如图1所示。

图1查看服务器c盘空间

这儿首先说明一下的一些删掉策略,因为没有回收站功能,所以线上上所有要删掉的文件就会先联通到系统/tmp目录下,之后定期清理/tmp目录下的数据。这个策略本身没有问题,并且通过检测发觉这台的系统分区中并没有单独界定/tmp分区,这样/tmp下的数据似乎占用了根分区的空间。既然找到了问题,这么删掉/tmp目录下一些占空间较大的数据文件即可,检测/tmp下最大的三个数据文件,如图2所示。

图2查看/tmp下最大的前三个数据文件

通过命令输出发觉在/tmp目录下有个66GB大小的文件access_log,这个文件应当是Apache形成的访问日志文件,从日志大小来看,应当是许久没有清除Apache日志文件了,基本判断是这个文件造成的根空间爆满,在确认此文件可以删掉后,执行如下删掉操作:

删除文件后空间没释放_释放删除空间文件没后缀怎么办_删除了文件但是磁盘空间未释放

[root@localhost~]#rm/tmp/access_log

接着查看系统根分区空间是否释放,如图3所示。

图3查看c盘空间是否释放

从输出可以看见,根分区空间一直没有释放,这是如何回事?

通常来说不会出现删掉文件后空间不释放的情况,并且也存在例外,例如文件被锁定,或则有仍然在向这个文件写数据等,要理解这个问题,就须要晓得下文件的储存机制和储存结构。

一个文件在文件系统中的储存分为两个部份:数据部份和表针部份,表针坐落文件系统的meta-data中,在将数据删掉后,这个表针就从meta-data中清不仅,而数据部份储存在c盘中。在将数据对应的表针从meta-data中去除后,文件数据部份占用的空间就可以被覆盖并写入新的内容,之所以在出现删掉access_log文件后,空间还没释放,就是由于httpd还在仍然向这个文件写入内容,引起似乎删掉了access_log文件,而且因为锁定,文件对应的表针部份并未从meta-data中去除,而因为表针并未删掉,系统内核就觉得文件并未删掉,因而通过df命令查询空间并未释放也就不足为奇了。

3、问题排查

删除文件后空间没释放_删除了文件但是磁盘空间未释放_释放删除空间文件没后缀怎么办

既然有了解决问题的思路,这么接出来瞧瞧是否有仍然在向access_log文件中写数据,这儿须要用到下的lsof命令,通过这个命令可以获取一个一直被应用程序占用的已删掉文件列表,命令执行如图4所示。

图4查看被应用程序锁定的已删掉文件列表

从输出结果可以看见,/tmp/access_log文件被httpd锁定,而httpd还仍然向这个文件写入日志数据。从第7列可知,这个日志文件大小约70GB,而系统根分区总大小才100GB,由此可知,这个文件就是造成系统根分区空间用尽的罪魁帮凶。最后一列的“deleted”状态说明这个日志文件早已被删掉,但因为还在仍然向此文件写入数据,因而空间并未释放。

4、解决问题

到这儿问题就基本排查清楚了,解决这一类问题的方式有好多种,最简单的方式是关掉或重启httpd删除文件后空间没释放,其实也可以重启,不过这种并不是最好的方式。对待这些不停对文件写日志的操作删除文件后空间没释放,要释放文件占用的c盘空间,最好的方式是在线清空这个文件,具体可以通过如下命令完成:

[root@localhost~]#echo"">/tmp/acess.log

通过这些方式,c盘空间不但可以马上释放,也可保障继续向文件写入日志,这些方式常常用于在线清除Apache、Tomcat、Nginx等服务形成的日志文件。

删除文件后空间没释放
上一篇:动态图片制作神器,让你玩转创意无限 下一篇:没有了