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

 更新时间:2020年03月09日 11:19:47   作者:Hugh的白板  
这篇文章主要介绍了Linux如何处理文件已删除但空间不释放的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题产生背景

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

问题还原及解决办法

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

#查看磁盘空间使用情况
$ df -h
#先查询/tmp目录下占用空间较大的文件
$ du -sh /tmp/*|sort -nr|head -3
#在查询/home目录下占用空间较大的文件
$ du -sh /home/*|sort -nr|head -3
# 找到文件后,进行删除即可,删除后,使用 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 入侵常用命令汇编

    linux 入侵常用命令汇编

    掌握这些命令也有助于配置linux的安全,大家可以看看。
    2009-07-07
  • 25个 Git 进阶技巧(翻译)

    25个 Git 进阶技巧(翻译)

    这篇文章主要介绍了25个 Git 进阶技巧(翻译),需要的朋友可以参考下
    2015-05-05
  • ubuntu开机后ROS程序自启动问题

    ubuntu开机后ROS程序自启动问题

    这篇文章主要介绍了ubuntu开机后ROS程序自启动问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • CentOS7下Firewall防火墙配置用法详解(推荐)

    CentOS7下Firewall防火墙配置用法详解(推荐)

    centos 7中防火墙是一个非常的强大的功能了,这篇文章主要介绍了CentOS7下Firewall防火墙配置用法详解(推荐),小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • linux下获取文件的创建时间与实战教程

    linux下获取文件的创建时间与实战教程

    这篇文章主要给大家介绍了关于linux下获取文件的创建时间与实战的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • sersync实现数据实时同步的方法

    sersync实现数据实时同步的方法

    下面小编就为大家分享一篇sersync实现数据实时同步的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Apache使用.htaccess 屏蔽恶意 User Agent(防蜘蛛)

    Apache使用.htaccess 屏蔽恶意 User Agent(防蜘蛛)

    这篇文章主要介绍了Apache使用.htaccess 屏蔽恶意 User Agent(防蜘蛛),需要的朋友可以参考下
    2016-07-07
  • 浅谈Linux的零拷贝技术

    浅谈Linux的零拷贝技术

    零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,需要的朋友可以参考下
    2023-04-04
  • Apache2.2.16+PHP5.3.3+MySQL5.1.49的配置方法

    Apache2.2.16+PHP5.3.3+MySQL5.1.49的配置方法

    轻松配置PHP5.3.3+Apache2.2.16+MySQL5.1.49,下面是有详细的步骤说明。
    2010-09-09
  • Linux xargs命令的使用

    Linux xargs命令的使用

    这篇文章主要介绍了Linux xargs命令的使用,帮助大家更好的掌握Linux系统的使用,感兴趣的朋友可以了解下
    2020-08-08

最新评论