温馨提示×

如何配置Debian Overlay

小樊
35
2026-07-29 09:23:21
栏目: 智能运维

在 Debian 系统中配置 Overlay(通常指 OverlayFS)常用于 Live 系统、容器、或需要“只读根文件系统 + 可写层”的场景。下面按常见用途给你一个清晰、可操作的说明。


一、什么是 Overlay / OverlayFS

OverlayFS 是一种 联合文件系统,可以把多个目录合并成一个,看起来像一个文件系统:

  • lowerdir:只读层(一个或多个)
  • upperdir:可写层
  • workdir:工作目录(必须为空)
  • merged:最终挂载点(用户看到的目录)

二、检查内核是否支持 OverlayFS

lsmod | grep overlay

如果没有输出,尝试加载模块:

modprobe overlay

Debian 官方内核(特别是 amd64 / arm64)默认已支持。


三、手动挂载 OverlayFS(最常用方式)

1️⃣ 准备目录

mkdir -p /mnt/overlay/{lower,upper,work,merged}

目录说明:

目录 作用
lower 只读层
upper 可写层
work OverlayFS 工作目录
merged 最终挂载点

2️⃣ 挂载 OverlayFS

mount -t overlay overlay \
  -o lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work \
  /mnt/overlay/merged

验证:

mount | grep overlay

3️⃣ 使用示例

echo "read-only" > /mnt/overlay/lower/file.txt
echo "write" > /mnt/overlay/merged/file.txt
cat /mnt/overlay/upper/file.txt
  • lower/file.txt 不会被修改
  • 修改会体现在 upper/

四、开机自动挂载(fstab)

编辑 /etc/fstab

overlay /mnt/overlay/merged overlay defaults,lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work 0 0

然后执行:

mount -a

五、Debian Live / 根文件系统 Overlay(进阶)

如果你是想 把 Debian 的根文件系统做成 Overlay(Live CD / 嵌入式),常见结构是:

/ (rootfs)
├── lower (squashfs)
├── upper (tmpfs / disk)
├── work
└── merged (new root)

典型 Initramfs 思路

  1. 挂载真正的根到 /root
  2. 创建 overlay
  3. switch_root 到 merged

示例(initramfs 脚本片段):

mkdir -p /overlay/lower /overlay/upper /overlay/work /overlay/merged
mount -o loop /root/filesystem.squashfs /overlay/lower
mount -t tmpfs tmpfs /overlay/upper

mount -t overlay overlay \
  -o lowerdir=/overlay/lower,upperdir=/overlay/upper,workdir=/overlay/work \
  /overlay/merged

exec switch_root /overlay/merged /sbin/init

六、Docker / Podman 中的 Overlay

Debian 上 Docker 默认使用 overlay2

docker info | grep Storage

无需手动配置,除非你要调优:

cat /etc/docker/daemon.json

七、常见问题

❓ OverlayFS 不是真正的写时复制?

是的,它只是 文件级联合挂载,不是块级快照。

❓ 支持多个 lowerdir 吗?

支持:

lowerdir=/a:/b:/c

优先级从左到右。

❓ workdir 为什么不能为空?

OverlayFS 内部需要它做临时操作。


八、总结

最简单用法

mount -t overlay overlay -o lowerdir=...,upperdir=...,workdir=... merged

适合场景

  • Live 系统
  • 只读根 + 可写
  • 容器存储
  • 调试 / 回滚

如果你能说明 具体用途(例如:Live Debian、Docker、嵌入式、根目录 Overlay、chroot),我可以给你更精确的配置方案

0