主机知识库
分享服务器知识

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

本站和你分享了Linux是如何处理被删除的文件的,但是空间没有被释放。相信大部分人都不太了解,分享这篇文章,供大家参考。希望你看完这篇文章后收获很大。我们一起来看看。

问题产生背景

某业务系统的服务器监控系统发出了磁盘空间利用率达到90%的预警通知。然后,它降落在服务器,搜索相对较大的日志文件,全部被删除(坑埋在这里),释放了一些磁盘空间。当时也是疏忽,没有确认找到并删除的文件大小的空间是否已经全部释放。几天后,服务器再次受到警告。我想知道木头怎么长得这么快。经过调查,发现上一次操作删除文件后,有很大的文件空间没有释放。

问题还原及解决办法

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

#检查磁盘空间使用情况

$df-h

#首先查询/tmp目录中空间大的文件

$du-sh/tmp/*|sort-nr|head-3

#在查询/主目录中占据很大空间的文件

$du-sh/home/*|sort-nr|head-3

#找到文件后,删除。删除后,用df-h检查是否已经发布。解释为什么在查找文件时,首先在/tmp/*目录中找到文件

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

有许多服务器在安装系统时没有单独分区/tmp,因此/tmp目录中的数据可能会占用很大一部分空间,因此可以首先清除/tmp目录中的文件来释放空间。

这一次,删除文件并不释放空间,而是在/home目录空间中删除dubbo服务日志文件时发生。

删除文件不释放空间原因

通常情况下,删除文件后不会释放空间,但当文件被进程锁定或进程不断向文件写入数据时,仍会出现这种情况。了解Linux下文件存储机制和结构的原理,有助于我们理解这个问题。

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

指针部分:存在于文件系统的元数据中。在我们执行rm命令删除数据后,这个指针从元数据中清除。

数据部分:数据直接存储在磁盘上。当指针从元数据中清除时,数据部分所占据的空间可以被覆盖,并且可以写入新的内容。

之所以删除dubbo日志文件后不释放空间,是因为dubbo进程一直在往这个文件里写数据,删除文件时没有从元数据里去掉指针,所以日志文件还是占用空间。

如何找到此类文件

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

如何释放此类空间

解决这类问题,释放空间的方法有很多:重启被占用的进程,重启操作系统,传递命令。前两种方法对于非生产环境是最方便的,但是对于生产环境,尽量使用命令方法,其实命令也很简单:

Echo”/home/dubbo/log/xxx.log这样会释放占用的磁盘空间,不会影响进程继续执行。

“Linux如何处理删除的文件而不释放空间”这篇文章的内容就这么多了。感谢阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。如果你想学习更多的知识,请关注本站!

(Python内容来源于IDC同行,若侵权,请联系我们删除)

赞(0)
文章名称:《Linux怎么处理文件已删除但空间不释放》
文章链接:https://www.cmy.cn/host/9377.html
版权声明:茶猫云所有发布的内容,部分为原创文章,转载请注明来源!网络转载文章如有侵权请联系我们解决!
最新优惠:茶猫云VPS服务器