Linux目录已空但磁盘空间仍被占用的原因与解决方法

最近在使用 /mnt/pmem3 做测试时,发现一个奇怪现象:

$ ls /mnt/pmem3
lost+found

$ df -h /mnt/pmem3
Filesystem Size Used Avail Use% Mounted on
/dev/pmem3 733G 482G 215G 70% /mnt/pmem3

目录里几乎没文件,但磁盘使用率却高达 70%。


原因分析

这是因为有文件虽然已经被删除,但仍然被进程占用。在 Linux 中,文件被删除后,只要仍有进程打开它,系统就不会真正释放空间。

这类问题在数据库、日志系统、持久内存(如 DAX)场景中很常见。


解决方法:使用 fuser 找出占用进程

使用以下命令查看哪些进程还在使用 /mnt/pmem3

sudo fuser -vm /mnt/pmem3

如果确认这些进程可以终止,直接杀掉它们即可:

sudo fuser -km /mnt/pmem3

也可以用kill -9 <pid>强制终止进程。

然后再次查看磁盘占用,空间就释放了:

df -h /mnt/pmem3

小结

当遇到“目录已空但空间仍被占用”的问题时,记得:

  • 使用 fuser 检查是否有进程仍在使用该目录
  • 杀掉相关进程后空间会自动释放