红帽培训班
企业分站 | 网站地图 | RSS | XML

新闻分类

热门关键词

联系我们

无锡优级先科信息技术有限公司

联系人:汤老师

手机:189-6173-0665

电话:0510-82717300

传真:0510-82717300

邮编:214000

邮箱:service@prithink.com

网址:www.prithink.com

地址:江苏省无锡市南长区人民西路25号百脑汇科技大厦15楼1514


linux系统删除文件后,但空间未释放怎么办?

您的当前位置: 首 页 >> 新闻中心 >> 行业资讯

linux系统删除文件后,但空间未释放怎么办?

发布日期:2021-04-22 作者:无锡优级先科信息技术有限公司 点击:

       一般来说不会出现删除文件后空间不释放的情况,但是也存在例外,比如文件被进程锁定,或者有进程一直在向这个文件写数据等,要理解这个问题,就需要知道Linux下文件的存储机制和存储结构。

       一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中。在将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以在出现删除文件后,空间还没释放,就是因为有进程还在一直向这个文件写入内容,导致虽然删除了文件,但是由于进程锁定,文件对应的指针部分并未从meta-data中清除,而由于指针并未删除,系统内核就认为文件并未删除,因此通过df 命令查询空间并未释放也就不足为奇了。

       既然有了解决问题的思路,那么接下来看看是否有进程一直在向被删除的文件中写数据,这里需要用到Linux下的lsof命令,通过这个命令可以获取一个仍然被应用程序占用的已删除文件列表,命令执行如下:

       [root@localhost ~]# lsof | grep delete

      从输出结果中可以查看到被删除的文件被哪一项进程锁定,而进程还很可能一直向这个文件写入数据。从结果的第7列可查看到文件的大小,后一列的“deleted”状态说明这个日志文件已经被删除,但由于进程还在一直向此文件写入数据,因此空间并未释放。

       到这里问题就能排查清楚了,解决这一类问题的方法有很多种,简单的方法是kill掉或重启那项进程,当然也可以重启操作系统,不过这些并不是的方法,因为有些进程很可能在使用中,不能进行重启操作。对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件,具体可以通过如下命令完成:

       [root@localhost ~]# echo " " >文件名  这算是一个取巧的操作,直接把文件内容置空,服务也能正常使用,文件大小也可以控制下来了,并释放多余的磁盘空间。

本文网址:http://www.prithink.com/news/529.html

关键词:linux培训班,linux培训班哪家好,无锡linux培训班

最近浏览: