Linux文件删除但空间不释放问题篇

通常报磁盘不足的错误,有两个原因:
•磁盘空间满:可以通过df -h命令查看磁盘的使用情况。
•磁盘inode资源占用完:可以通过df -i命令查看,确认inode节点使用率;

如果是inode资源占用完,是因为使用的小文件过多导致的。但如果是磁盘空间满,我们需要删除文件,挤出空间来,但发现磁盘空间根本没减少。这就需要了解rm删除文件原理。

rm删除文件原理
Linux是link的数量来控制文件删除的。只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来讲,每个文件都有两个link计数器:i_count和i_nlink
•i_count的意义是当前文件使用者(或被调用)的数量
当一个文件被某一个进程引用时,对应的这个值就会增加
•i_nlink的意义是介质连接的数量(硬链接的数量)
当创建文件的硬链接的时候,这个值就会增加

rm操作只是将文件的i_nlink减少了,实际就是将文件名到inode的链接删除了,如果没有其它的链接,i_nlink就为0。但是由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以执行rm操作,系统并没有真正的删除这个文件,只有当i_nlink和i_count都为0的时候,这个文件才会被真正的删除。也就是说,必须要解除该进程对该文件的调用,才能真正的删除。

解决方案

lsof | grep deleted

当发现删除文件后,磁盘的空间还是没有变,库使用使用以上命令,获得一个已经被删除但是仍然被应用程序占用的文件列表,然后可以kill 掉相关进程即可强制要求系统回收分配给正在使用的的文件,这样就可以释放次磁盘资源。

注:系统中,只有已释放的文件数据块被重用其中数据被覆盖时,原文件数据才算删除掉。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值