场景:
centos 6.5 查看df -ah /data和 du -sh /data 发现计算出的空间不一致的情况
分析过程:
1、当时认为是缓存或者是清理文件存储延时导致,
使用 echo 3>/proc/sys/vm/drop_cashe 处理;
同时 使用free -m 检查 内存发现可用内存正常;
2、使用 lsof |grep deleted 检查 文件处理情况
发现 在使用 du -sh * 分析中是使用 rm -rf ** 文件的处理还在进程中,说明 rm -rf 操作并没有执行完成;
3、 使用 ps -ef | grep 文件 跟踪,发现 跟文件存在运行的服务进程导致 rm 操作无法进行,停止 该服务进程(kill -9 pid), 再次检查 lsof |grep deleted
发现 该文件进程将不再存在
4、 此时 df -ah /data和 du -sh /data 计算慢慢保持一致了
tips:
1、当出现du和df差距很大的情况时,考虑是否是有删除文件未完成造成的,方法是lsof命令,
然后停止相关进程即可。
2、除了rm外,有些命令会间接的删除文件,如gzip命令完成后会删除原来的文件,
为了避免删除问题,压缩前先确认没有进程打开该文件