磁盘清理了文件怎么空间还是不变,磁盘清理会将所有文件都清理了吗

首页 > 实用技巧 > 作者:YD1662024-01-07 00:53:35

前两天,同事找我看一个问题,发现一台服务器上的磁盘空间快占满了,却找不到占用磁盘的文件。最后定位发现是服务器上有两个进程A和B,进程A写文件,进程B定时删除文件,但是进程B删除文件后,删除的文件实际上还在占用磁盘空间,这是为什么呢?

下面我在服务器上实际操作演示一下这个问题发生的过程。

1 问题复现

1)先使用df命令查看一下磁盘根目录的空间占用情况,当前占用55G:

磁盘清理了文件怎么空间还是不变,磁盘清理会将所有文件都清理了吗(1)

2)使用dd命令在根目录下创建一个10G的大文件test.bin,并再次查看根目录的空间占用情况,发现根目录空间占用已经从55G变为了65G:

dd if=/dev/zero of=/test.bin bs=1000MB count=10

磁盘清理了文件怎么空间还是不变,磁盘清理会将所有文件都清理了吗(2)

3)使用tail命令模拟进程A正在使用test.bin文件:

tail -f /test.bin

4)删除test.bin文件(模拟进程B删除文件),并查看磁盘空间占用情况,发现根目录的空间占用还是65G,并没有减少:

rm -rf /test.bin

磁盘清理了文件怎么空间还是不变,磁盘清理会将所有文件都清理了吗(3)

2 问题定位及解决

2.1 问题定位

其实上面我们是已经知道了有tail命令在访问文件,所以导致删除的文件还在占用磁盘空间。但是如果是因为别的程序或者其它进程导致这个问题,我们该如何定位呢?

这里我们要借助lsof这个工具来帮助我们定位问题,一般Linux系统没有自带lsof工具,Ubuntu上可以用apt安装一下:

apt install lsof

man lsof看一下lsof命令的介绍,是列出所有打开的文件(list open files的缩写)

磁盘清理了文件怎么空间还是不变,磁盘清理会将所有文件都清理了吗(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.