Linux下df命令提示磁盘已满,但是du -sh显示还有空间

Linux下df命令提示磁盘已满,但是用du -sh计算出来/下的容量小于磁盘容量。

1
2
3
4
5
6
7
root@ax:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
...
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 36G 36G 0G 100% /

root@ax:~# du -sh /
22G /

这种情况很大可能是因为/mnt下面挂载的外部存储影响了du命令的统计结果。
可以尝试下面的解决方法

1
2
3
4
5
6
7
8
9
10
11
# 使用bind参数把根目录重新挂载到某个目录下重新统计大小,减少业务影响。
root@ax:~# mkdir /mnt/tmp
root@ax:~# mount -o bind / /mnt/tmp
root@ax:~# du -sh /mnt/tmp
36G /mnt/tmp
# 经过查看,/mnt目录下原有的文件太大,导致磁盘满了。
# 由于环境中的mount挂载,让原有文件无法查看,进而影响了正常容量统计。删除后问题解决。
root@ax:~# du -sh /mnt/tmp/*
...
10G /mnt/tmp/mnt
root@ax:~# umount /mnt/tmp