df 显示 100%的问题

时间:2024-02-18 09:37:57

问题

        使用 df 命令查看,某个分区使用率已经达到100%,但是用du 命令统计该分区,发现该分区空间剩余10G可用。
        实例:
            
 
分析
        如果有文件在打开状态的时候被删除了,系统还是会以为这些文件还存在。所以df 仍然会当这些文件还存在并且列入统计中。
 
解决:   
   # lsof | grep  "deleted" 
        查看那些已被删除但仍被系统打开的文件,找到相对应的服务,重启。或者找到相对应的pid,kill 掉。
 
        实例:
            
            这里发现nginx日志文件处于这种状态,nginx日志被删除,但没有重启nginx服务,空间没有被释放。
            重启nginx服务,等待4、5分钟,df 的结果恢复正常。
 
 
du命令 和 df命令 的区别:
du:只计算文件占有空间大小,不计算文件系统各自meta数据,如inode、inode map、disk map等。
df:会计算各自meta数据,另外当该目录的文件被删除了,却仍有进程hold住这个文件句柄,此时这个文件的block并未被释放,df仍会统计到该文件的block,但du不会。