承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

Linux怎么处理文件已删除但空间不释放的问题

管理员 2023-08-21 08:03:49 软件开发 0 ℃ 0 评论 3637字 收藏

Linux怎么处理文件已删除但空间不释放的问题

问题产生背景

一个业务系统的服务器监控系统发来预警通知,磁盘空间使用率已到达90%了,然后就登陆服务器搜索了下比较大的日志文件,全部都删除(坑在此处埋上了),磁盘空间释放了一些,当时也是忽视,没有确认查出并删除的文件大小的空间会不会已全部释放。没过几天,服务器又被预警了,比较疑惑,日志怎样增长的这么快,排查以后发现,原来是上次操作删除文件后,有个较大的文件空间没有释放致使的。

问题还原及解决办法

找到占用空间较大的数据文件

#查看磁盘空间使用情况
$ df -h
#先查询/tmp目录下占用空间较大的文件
$ du -sh /tmp/*|sort -nr|head ⑶
#在查询/home目录下占用空间较大的文件
$ du -sh /home/*|sort -nr|head ⑶
# 找到文件后,进行删除便可,删除后,使用 df -h进行查看会不会已释放

说明下为啥在找文件的时候,先找了/tmp/*目录下的文件

Linux系统删除策略:Linux没有回收站功能,所以服务去会将要删除的文件都会先移动到系统/tmp目录下,然后定期清除/tmp目录下的数据。

有好多服务器在安装系统的时候没有给/tmp进行单独分区,所以有多是/tmp目录下的数据占用了很大一部份空间,可以先清除掉/tmp目录下的文件来释放空间。

本次出现删除文件不释放空间,是在删除/home目录空间下的一个dubbo服务日志文件时产生的。

删除文件不释放空间缘由

一般情况下不会出现删除文件后空间不释放的情况,但在这个文件被进程锁住或是有进程一直往这个文件写数据等情况下,或者会出现的。了解Linux下文件的存储机制和存储结构的原理就会理解这个问题了。

文件存在Linux系统中分为两部份:指针部份和数据部份。

  • 指针部份:存在文件系统的meta-data中,我们履行rm命令将数据删除后,这个指针就从meta-data中被清除掉了。
  • 数据部份:数据就是直接存储在磁盘上了,当指针被从meta-data中清除后,数据部份占用的空间就能够被覆盖并写入新的内容。

之所以出现删除dubbo日志文件后,空间还不释放,就是由于dubbo进程还在一直往这个文件里面写数据,在删除文件的时候,指针并没有被从meta-data中清除掉,所以日志文件或者占用着空间。

如何找到此类文件

可以通过lsof命令获得已删除但是还被程序占用的文件列表:

lsof | grep delete

如何释放此类空间

解决这一类问题释放空间的方法有很多种:重启占用的进程、重启操作系统、通过命令。非生产环境采取前两种方式最方便了,但是对生产环境,或者尽可能采取命令的方式,其实命令也很简单:

echo " " >/home/dubbo/log/xxx.log

通过这类方式,会里面释放掉占用的磁盘空间,也不影响进程继续履行。

到此这篇关于Linux怎么处理文件已删除但空间不释放的问题的文章就介绍到这了,更多相关Linux 文件删除空间不释放内容请搜索之前的文章或继续浏览下面的相关文章希望大家以后多多支持!

文章来源:丸子建站

文章标题:Linux怎么处理文件已删除但空间不释放的问题

https://www.wanzijz.com/view/72983.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信