在 Debian 中使用 overlay(overlayfs,常用于 Live CD、容器、initramfs、systemd 等场景)时,排错可以从内核支持、挂载参数、上层/下层目录、权限、fstab/systemd 配置几个方面入手。下面按常见场景给你一套排错思路。
cat /proc/filesystems | grep overlay
或
lsmod | grep overlay
如果没有:
CONFIG_OVERLAY_FS=y
mkdir -p /tmp/lower /tmp/upper /tmp/work /tmp/merged
mount -t overlay overlay \
-o lowerdir=/tmp/lower,upperdir=/tmp/upper,workdir=/tmp/work \
/tmp/merged
如果失败,错误信息是最直接的线索。
mount: wrong fs type, bad option, bad superblock可能原因:
workdir 缺失或不在同一文件系统upperdir 和 workdir 必须:
lowerdir 不存在✅ 正确示例:
lowerdir=/a
upperdir=/b/upper
workdir=/b/work
❌ 错误示例:
upperdir=/a/upper
workdir=/c/work # 不同文件系统
workdir and upperdir must be on same filesystemdf -i /upper /work
df /upper /work
确保:
mount | grep upper
lowerdir 必须是只读upperdir如果你看到:
cannot create directory : Read-only file system
说明:
upperdir / workdir 必须是 root 可写chmod 700 /upper /work
chown root:root /upper /work
常见于:
/dev/sda1 → lower
tmpfs → upper
排错:
dmesg | grep overlay
journalctl -b | grep overlay
/etc/fstab 示例overlay /mnt/merged overlay \
lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/work 0 0
⚠ 注意:
nofail 可避免启动失败overlay /mnt/merged overlay nofail 0 0
如果失败:
systemctl status mnt-merged.mount
journalctl -u mnt-merged.mount
dmesg -T | grep overlay
strace -f mount -t overlay overlay -o ... /merged
overlay 不能嵌套 overlay(除非内核支持并配置)
如果是 Docker:
docker info | grep Storage
overlay2 推荐overlay 已弃用如果你能贴出:
我可以帮你精确到某一条命令来修。