删除文件后磁盘空间未释放,只能重启进程?(仅供参考)
  1u76f0z0tdRm 2023年11月01日 79 0

很多运维同学都遇到过“磁盘告警”,遇到这种情况就需要去清理磁盘。

这时候,很多同学通过各种途径、手段、命令找到了占用磁盘比较大的文件,然后大手一挥, 

sudo rm -rvf xxxxx.log

以为这样任务就完成了,谁知道,一查询磁盘使用量还是居高不下,完全没有释放。

这是因为在Linux中,如果你删除一个正在被使用的文件,磁盘空间不会立即释放。Linux使用了一种称为"删除挂起"的机制。当你删除一个文件时,文件系统会将该文件标记为已删除,但实际上并不会立即从磁盘上删除它。只有当所有正在使用该文件的进程关闭时,磁盘空间才会被释放。

这时候,不知道怎么处理了,网上的解决办法基本上是让你重启相应的进程。当然我们可以不重启进程。直接重启主机呗(皮一下就很开心)。

下面我说一种不需要重启进程或者主机的办法,不一定能完全解决大家的问题,方法仅供参考

1、如何查询哪些文件被删除了,但是空间没有释放

下面以/data目录为例
sudo lsof /data | grep deleted |sort -k7rn | less

2、查询出来结果如下图,我们需要关注第2和第4列内容,后面需要用到

3、这时候我们执行

sudo ls -l /proc/3198801/fd/1

命令中:
3198801: 就是进程号
1: 是第四列w前面的数字 ,如 1w,则id为1,如 47w,则id为47

4、这里我们可以查询到这个命令是存在的,于是我们执行下列命令

sudo cp /dev/null /proc/3198801/fs/1

5、执行完成后,再次使用命令查询磁盘空间是否释放掉。

6、这个命令我在自己运维的环境中跑过,是能解决此类问题的。不过这个方法为什么能够解决问题,或者是否仅仅适用某些特定的场景,个中缘由还请各位大佬自行探索吧。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  kZLEadpmxZsY   2024年05月17日   31   0   0 Linux
  kZLEadpmxZsY   2024年05月17日   44   0   0 Linux
  4hf9DKAg5W6h   2024年05月17日   43   0   0 Linux
  2xk0JyO908yA   2024年05月17日   63   0   0 Linux
  tAaiqedz71Vf   2024年05月17日   62   0   0 Linux
  2sqDzWaoi9Ck   2024年05月17日   52   0   0 Linux
LVM
  XWcNkifzer3j   2024年05月20日   53   0   0 Linux
1u76f0z0tdRm