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

有时候linux磁盘空间已满,手动删除了大文件之后,df查看一下发现空间占用还是100%,这是啥问题呢?

快速解决方案

lsof | grep deleted

使用以上命令可以查看已经删除的文件进程,kill掉之后,空间就能得到释放。

问题现象

服务用不了,mysql插入数据超时堵塞,登录上服务器查看果然又是磁盘满了,之前遇到过几次这个问题,所以熟练地删除了几个大文件,但并没有出现预期中的空间释放,磁盘占用还是100%。

删除原理

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

一个文件在文件系统中由两个部分构成:数据和指针。指针位于文件系统的meta-data中,数据被删除后,指针被清除,而数据部分还是存储在磁盘中,只不过数据对应的指针被清除后,文件数据部分占用的空间就可以被覆盖了。之所以出现删除大文件后,空间还没释放,就是因为有进程一直在使用这个文件的指针,日志文件,服务还在跑嘛,导致虽然删除了日志大文件,但文件对应的指针部分由于进程锁定,并未从meta-data中清除,而由于指针并未被删除,那么系统就认为文件并未被删除,所以df查看还是100%。

问题解决

1.使用开头介绍的方案,直接杀进程,但是容易出现其他不可预知的问题,例如服务异常啊等等。
2.echo "" > xxx.log,这算是一个取巧的操作,直接把文件置空,服务也可以用,文件大小也可以控制下来了。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值