overlay挂载影响host主机根目录(排查)

在生产环境中遇到一个非常奇怪的案例,监控系统报告主机有目录100%满了,然而,登陆到服务器上检查 df -h 却看到所有目录都没有超过 90% :

df -h 显示所有目录都没有超过90%,但是告警显示有目录100%
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         63G     0   63G   0% /dev
tmpfs            63G   66M   63G   1% /dev/shm
tmpfs            63G  5.1M   63G   1% /run
tmpfs            63G     0   63G   0% /sys/fs/cgroup
/dev/sda3        20G   53M   20G   1% /
/dev/sda2       976M  150M  759M  17% /boot
/dev/sda5       682G  576G   72G  89% /home

但是,仔细观察就发现异样: / 根目录怎么可能只有 53M 空间

只统计当前目录挂载磁盘的使用空间(不跨物理磁盘)
du -Shx | sort -rh | head -10

可以看到 /var/log 实际上已经占用了 20G :

检查磁盘目录占用可以看到占用最多的目录
20G      ./var/log
7.4G     ./tmp
...
  • 检查磁盘挂载的 /dev/sda3 实际大小,也就是通过 parted分区工具 输出:

通过 parted分区工具 查看分区容量
parted /dev/sda print

输出显示可以看到 /dev/sda3 分区有 55G :

通过 parted分区工具 查看分区容量输出
Model: ATA INTEL SSDSC2BB80 (scsi)
Disk /dev/sda: 800GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  4194kB  3146kB                        bios_grub
 2      4194kB  1078MB  1074MB  ext4                  boot
 3      1078MB  54.8GB  53.7GB  ext4
 4      54.8GB  56.9GB  2147MB  linux-swap(v1)
 5      56.9GB  800GB   743GB   ext4
  • 通常对于磁盘目录大小显示异常的,应该是多个磁盘被重复挂载到相同目录下导致,所以通过 mount 命令检查:

通过 mount 检查 /dev/sda3 挂载
mount | grep sda3

输出如下,显示 Docker OverlayFS存储引擎 挂载异常:

通过 mount 检查 /dev/sda3 挂载输出
/dev/sda3 on / type ext4 (rw,relatime,prjquota,data=ordered)
/dev/sda3 on /home/t4/docker/overlay/2312e9718d905ac6630d9252c84308a5fb14de503166bcf37a2ae6193265ca22/merged/usr/share/zoneinfo/Asia/Shanghai type ext4 (ro,relatime,prjquota,data=ordered)
/dev/sda3 on /home/t4/docker/overlay/9595fee13549814ce88fbc91b19d6f76185e179695bea7ff4c73d6749402d2bb/merged/usr/share/zoneinfo/Asia/Shanghai type ext4 (ro,relatime,prjquota,data=ordered)
/dev/sda3 on /home/t4/docker/overlay/5236144a35c37c27aedc261bde7c3527cc1553ddf89ed73448aced49db961e79/merged/usr/share/zoneinfo/Asia/Shanghai type ext4 (ro,relatime,prjquota,data=ordered)