LINUX 环境下文件删除了但是磁盘空间没有释放问题

马谦马谦马谦 运维评论689字数 434阅读 1 分 26 秒阅读模式

一、问题现象

磁盘下有个大文件占满了空间,删除后发现文件不见了,但是磁盘空间并没有释放。

问题原因

文件还被其他进程占用,调用 rm 后实际上还并没有真正删除,只有当文件解除占用后 (引用计数变为 0) 才会释放掉这部分空间。

解决方案

使用 lsof 命令查看文件还在被哪个进程占用的,关闭进程接触解除占用:

过滤 delete 表示显示出文件已经被删除了,但是实际还被进程占有着没释放的文件。

二、场景模拟

通过以下代码模拟出进程占用文件场景,代码的作用是打开文件,然后睡眠 100 秒,最后结束退出

编译,并在当前目录生成一个 1G 左右的文件用作测试:

然后执行程序,程序会卡住并睡眠 100S 。删除测试文件,查看磁盘空间发现没有被归还:

LINUX环境下文件删除了但是磁盘空间没有释放问题-图片1

使用 lsof 命令查看文件还在被占用,kill 掉之后文件解除占用,空间被归还:

LINUX环境下文件删除了但是磁盘空间没有释放问题-图片2

 
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2019 年 9 月 10 日 00:07:58
  • 转载请务必保留本文链接:https://www.dyxmq.cn/linux/linux-maintenance/file-is-deleted-but-the-disk-space-is-not-released-problem.html
tcpdump速成指南 运维

tcpdump 速成指南

其他参考:tcpdump 的基本用法 1. 抓取指定网卡上的数据 tcpdump 默认抓系统第一块网卡,-i 参数可以指定网卡,any 表示抓所有网卡: tcpdump -i eth0 # 抓取 eth0 上的数...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证