在 Linux 中,Overlay(overlayfs)常用于容器(Docker、Kubernetes)、Live CD、只读根文件系统等场景。排查 overlay 故障可以从内核、挂载、存储驱动、权限、磁盘、容器层几个方面入手。
下面给你一套系统化的排查思路 + 常用命令。
mount | grep overlay
或
cat /proc/mounts | grep overlay
示例:
overlay on /var/lib/docker/overlay2/xxx/merged type overlay (rw,relatime,...)
docker info | grep -i storage
常见:
overlay2(推荐)overlay(老版本)常见原因:
dmesg | tail
或
journalctl -k | tail
典型错误:
overlayfs: missing 'lowerdir'
overlayfs: workdir and upperdir must be on same fs
overlayfs: filesystem not supported
ls -ld /lower /upper /work /merged
overlay 要求:
upperdir 和 workdir 在同一文件系统workdir 不能是 upperdir 的子目录常见原因:
df -h
mount | grep overlay
看到 ro 说明只读。
ls -ld /upper /work
需要:
overlay 特性:
ls -la /upper
白文件示例:
c--------- 1 root root 0, 0 whiteout
stat /merged/file
docker inspect <container> | grep -i merged
ls /var/lib/docker/overlay2/
df -h /var/lib/docker
cat /proc/filesystems | grep overlay
或
lsmod | grep overlay
modprobe overlay
mkdir -p /tmp/lower /tmp/upper /tmp/work /tmp/merged
echo "lower" > /tmp/lower/a.txt
mount -t overlay overlay \
-o lowerdir=/tmp/lower,upperdir=/tmp/upper,workdir=/tmp/work \
/tmp/merged
失败立刻看:
dmesg | tail
| 现象 | 可能原因 |
|---|---|
| mount overlay 失败 | 目录不存在 / workdir 错 |
| 容器启动失败 | storage-driver 不支持 |
| 写文件报错 | 磁盘满 / 只读 |
| 删除文件还在 | whiteout 没生效 |
| 性能差 | 多层 overlay / 机械盘 |
overlay2(不是 overlay)/var/lib/docker如果你愿意,可以告诉我:
我可以给你针对你环境的精准排查步骤。