在 Debian 系统中调试 OverlayFS(Overlay) 通常涉及排查挂载失败、文件层不生效、写入异常等问题。下面按常见场景 + 调试方法系统说明。
uname -r
ls /proc/filesystems | grep overlay
或:
modprobe overlay
lsmod | 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
mount | grep overlay
cat /proc/mounts | grep overlay
mount: wrong fs type, bad option, bad superblock✅ 常见原因:
workdir 不存在或不为空upperdir / workdir 在同一文件系统(某些旧内核要求不同)✅ 调试:
dmesg | tail -20
检查:
mount | grep overlay
ls -l /tmp/overlay/upper
✅ OverlayFS 只在 upperdir 中记录变更
原因:
lowerdir 中删除文件,会创建 whiteout 文件检查:
ls -l /tmp/overlay/upper
whiteout 文件示例:
c--------- 1 root root 0, 0 file
docker info | grep -i overlay
查看存储位置:
ls /var/lib/docker/overlay2
调试容器层:
docker inspect <container-id> | grep UpperDir
systemd-nspawn --overlay=+/path/to/upper:/path/to/lower:/merged
调试:
machinectl status
OverlayFS 使用扩展属性记录来源:
getfattr -d -m ".*" /tmp/overlay/merged/somefile
常见属性:
trusted.overlay.opaquetrusted.overlay.originstat /tmp/overlay/merged/file
ls -l /tmp/overlay/upper/file
ls -l /tmp/overlay/lower/file
常见于 Debian Live / Raspberry Pi OS
cat /proc/cmdline
关注:
boot=live union=overlay
mount | grep overlay
cat /proc/mounts
dmesg -T | grep -i overlay
journalctl -k | grep overlay
strace mount -t overlay overlay -o ... /mnt
✅ 检查项:
| 场景 | 调试重点 |
|---|---|
| Docker | overlay2 目录、containerd |
| Live CD | initramfs、cmdline |
| 手动挂载 | workdir、upperdir |
| 文件消失 | whiteout、opaque |
| 写失败 | upperdir 权限、文件系统 |
如果你愿意,可以告诉我:
dmesg 输出cat /etc/debian_version)我可以给你针对性的调试步骤。