在 CentOS(7/8/Stream) 上调试 Overlay / OverlayFS(常见于 Docker、Kubernetes、构建系统),可以按下面思路分层排查。我按最常见场景 → 深入调试来写,你可以对照使用。
uname -r
lsmod | grep overlay
如果没有加载:
modprobe overlay
确认支持:
cat /proc/filesystems | grep overlay
✅ 正常应看到:
overlay
mkdir -p /tmp/overlay/{lower,upper,work,merged}
lower:只读层upper:可写层work:临时工作目录(必须为空)merged:最终挂载点mount -t overlay overlay \
-o lowerdir=/tmp/overlay/lower,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work \
/tmp/overlay/merged
✅ 成功即可进入 /tmp/overlay/merged 测试
❌ 失败会直接报错(重点看 dmesg)
错误示例:
overlayfs: workdir and upperdir must reside under the same mount
✅ 解决:
upper 和 work 必须在 同一个挂载点/tmp + /var 混用rm -rf /tmp/overlay/work/*
Overlay 要求 workdir 必须为空
setenforce 0
再试挂载。
✅ 如果成功,说明是 SELinux 问题
cat /var/log/audit/audit.log | audit2allow -M overlayfix
semodule -i overlayfix.pp
或给目录打标签:
semanage fcontext -a -t container_file_t "/tmp/overlay(/.*)?"
restorecon -Rv /tmp/overlay
Overlay 不能用在:
检查 d_type:
xfs_info / | grep ftype
✅ 应为:
ftype=1
如果是 ftype=0,Docker / Overlay 都会失败。
docker info | grep -i storage
常见:
overlay2(推荐)devicemapper(老,问题多)查看日志:
journalctl -u docker -xe
常见错误:
overlay2: the backing xfs filesystem is formatted without d_typefailed to mount overlaysystemctl start docker
ls /var/lib/docker/overlay2
调试挂载:
mount | grep overlay
Overlay 报错 90% 都在 dmesg 里
dmesg | tail -50
常见关键字:
overlayfsupperdirworkdirpermission deniedinvalid argument✅ 推荐调试顺序:
dmesg 看内核报错你可以直接贴:
cat /etc/centos-release)dmesg / docker logs)我可以一步一步帮你定位到具体原因 ✅