df 显示 100%的问题
问题:
使用 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不会。