今天看到一台上传服务器空间只剩9%了,为了避免状况,于是清理了一些没用的上传文件,删除之后,df -h 发现磁盘剩余空间并没有增加,而用du -h 查看刚才的目录,发现实际文件使用的空间才46%,100多G的空间,不明去向。
问了一下运维,df -h 和 du -h 两个命令所看到的空间大小怎么会差别这么大。
他让我用lsof命令查看下,lsof |grep delete(已经被删除但是仍然被应用程序占用的文件列表)。 刚刚删除的文件竟然都在列表里出来了, 原来是刚删除的文件,虽然被删除了,但空间并未释放。
google了下原因:
在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
重启了下那个进程,然后df -h 发现100多G的空间终于回来了。