现象说明
df与du的结果不一致,现象说明
df -h 显示磁盘占用满
![](https://img.haomeiwen.com/i4653663/c806e25f5b4c6548.png)
du -sh * / 显示磁盘只用了12G
![](https://img.haomeiwen.com/i4653663/fe01de6b7721cdbf.png)
这明显不符
问题排查
原因1、隐藏文件未参与统计
1.du -sh * 不统计隐藏文件夹,可以用du -ah替代
原因2、被删除文件,有进程还在使用这个文件的句柄
1.df -> disk free是通过文件系统之间获取的空间大小信息
2.du -> dist usage是通过计算所选文件夹中所有文件的大小的和得到结果的
导致两者结果出现偏差最常见的一个原因就是有些被『删除』了的幽灵文件。 当我们删除一个文件的时候,
其实这个可能并不会立即被从文件系统中释放掉,因为可能会有进程还在使用这个文件的句柄,
只有当所有文件句柄都被释放了之后,相应的文件才会被真正从文件系统中释放掉。
确定办法: lsof | grep delete
![](https://img.haomeiwen.com/i4653663/9fbba580c6d4e882.png)
解决办法
1.重启肯定可以解决这一问题
2.lsof | grep delete 查看被删除的文件,查看是否存在大文件占用,查看到进程pid 重启进程
3.避免方法在删除大文件时请不要用rm ,请用echo "">filename
原因3、新挂盘挂载点中有数据,磁盘挂载后导致数据看不到
现象说明
未挂载磁盘前有 /home目录下有多个文件如下图
![](https://img.haomeiwen.com/i4653663/638771e3002794e7.png)
挂载磁盘后 /home 目录下没有该文件了,而是磁盘中以前的数据
![](https://img.haomeiwen.com/i4653663/24e58b2b99983f56.png)
这个就是磁盘挂载导致数据被掩藏的现象
产生的问题
导致新磁盘挂载后,du -sh * 统计不到因挂载导致被隐藏的文件,df -h 直接统计磁盘使用导致两者统计不一致
解决办法
这里的解决思路不包含排查被占用的空间位置
解决思路,卸载磁盘,删除被掩藏的数据,然后重新挂载磁盘
#查看全部数据盘
fdisk -l
umount -v /home
rm /home/* -f
#临时挂载
mount /dev/mapper/centos_centos7--6-home /home
#永久挂载
1.fdisk -l 查看所有磁盘 ,通过对比df -h 找到为挂载磁盘
2.mount /dev/mapper/centos_centos7--6-home /home #即时生效
3. blkid ${磁盘名称} 查看类型
echo "${磁盘名称} ${磁盘挂载点} ${type} defaults 0 0" >> /etc/fstab
网友评论