Linux解决rm 删除大文件后 磁盘空间无法释放的问题


在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。


遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,但是对应的文件句柄没有被某些程序关闭,造成内核无法收回这些文件占用的空间。


查找出那些已经删除但是继续占用内存空间的文件:

lsof -n | grep deleted


或者直接查找删除的大文件

lsof -n | grep deleted |grep debug

rsyslogd    5154 root    7w      REG                8,3 94263283712    6030228 /var/log/debug.log (deleted)



关掉或者重启占用这些文件的应用程序就可以释放磁盘空间了

/etc/init.d/rsyslogd restart