温馨提示×

怎么排查debian overlay故障

小樊
60
2026-10-04 14:18:50
栏目: 智能运维

在 Debian 系统里,“overlay 故障”通常出现在 OverlayFS(overlay / overlay2) 场景,比如:

  • Docker / Kubernetes 存储驱动
  • Live CD / 持久化系统
  • 自定义 overlay 挂载(lowerdir/upperdir/workdir)

下面按常见故障类型 + 排查步骤给你一个实用清单。


一、先确认是不是 Overlay 的问题

1. 看挂载情况

mount | grep overlay
cat /proc/mounts | grep overlay

典型 overlay 挂载:

overlay on /merged type overlay (lowerdir=/low,upperdir=/up,workdir=/work)

2. 看内核是否支持

lsmod | grep overlay
modprobe overlay

Debian 一般默认支持,但 老内核或定制内核 可能缺失。


二、常见故障 & 对应排查方法

1️⃣ upperdir / workdir 权限或类型错误

现象

  • mount 失败
  • 报 cannot mount overlay
  • Docker 启动失败

检查

ls -ld /upper /work
df -T /upper

要求

  • upperdir 和 workdir 必须:
    • 同一文件系统
    • 不能是 overlay 本身
    • 不能是只读
  • workdir 必须是空目录

修复

rm -rf /work/*
chmod 700 /upper /work

2️⃣ lowerdir 不存在或被删

现象

overlayfs: failed to resolve lowerdir

检查

ls -ld /lower

注意

  • lowerdir 可以是多个(冒号分隔)
  • 任意一个不存在都会失败

3️⃣ 文件系统不支持 overlay

不支持的文件系统

  • NFS
  • tmpfs(部分情况)
  • 某些 FUSE

检查

df -T /upper

建议

  • upperdir / workdir 放在:
    • ext4
    • xfs

4️⃣ Docker overlay2 故障(最常见)

查看 Docker 存储驱动

docker info | grep -i storage

常见报错

failed to start daemon: error initializing graphdriver

排查步骤

ls -l /var/lib/docker
cat /etc/docker/daemon.json

清理(⚠️会丢容器数据)

systemctl stop docker
rm -rf /var/lib/docker
systemctl start docker

5️⃣ inode 耗尽(非常隐蔽)

现象

  • 能 mount
  • 写文件报 No space left on device
  • df -h 正常

检查

df -i /upper

解决

  • 清理小文件
  • 或换文件系统

6️⃣ SELinux / AppArmor 干扰(较少但存在)

检查

dmesg | grep -i deny
journalctl -xe | grep apparmor

临时验证

systemctl stop apparmor

三、调试技巧(非常有用)

1. 手动 mount overlay 测试

mount -t overlay overlay \
  -o lowerdir=/low,upperdir=/up,workdir=/work \
  /merged

2. 打开内核日志

dmesg -T | tail -50

Overlay 报错基本都会在这里。


四、Live CD / 持久化 overlay 特例

如果是 Debian Live + persistence:

cat /proc/cmdline | grep persistence

常见问题:

  • persistence-label 不对
  • U 盘分区类型错
  • overlay 分区没标 persistence

五、快速自检清单 ✅

  • [ ] upper/work 同文件系统
  • [ ] workdir 为空
  • [ ] lowerdir 存在
  • [ ] 文件系统支持 overlay
  • [ ] inode 没满
  • [ ] dmesg 无 overlay 报错

如果你能贴出:

  • 具体报错信息
  • mount 命令或 Docker 日志
  • Debian 版本 & 内核版本

我可以直接帮你定位到具体原因。

0 踩