温馨提示×

怎样理解debian overlay

小樊
37
2026-09-25 20:07:04
栏目: 智能运维

在 Debian(以及其他 Linux 发行版)语境里,overlay 通常指 OverlayFS(overlay filesystem),它是一种联合文件系统(union filesystem),可以把多个目录“叠加”在一起,形成一个统一的视图。

下面从概念 → 原理 → 在 Debian 中的常见用法 → 实际例子逐步说明。


一、Overlay 是什么(核心概念)

OverlayFS 允许你把:

  • 一个 底层目录(lowerdir)
  • 一个或多个 上层目录(upperdir)
  • 合并后呈现为一个 统一挂载点(merged)

用户看到的是合并后的结果,但写入只会发生在上层。

简单比喻:

像透明幻灯片叠在一起

  • 下面那张是“只读底图”
  • 上面那张是“可写修改层”
  • 你看到的是叠在一起的效果

二、OverlayFS 的关键目录

名称 作用
lowerdir 只读层(可以是多个)
upperdir 可写层(只能一个)
workdir 内部工作目录(必须和 upperdir 同文件系统)
merged 最终挂载后看到的目录

三、为什么 Debian 里经常提到 overlay?

在 Debian 中,overlay 常用于:

1. Live CD / Live USB

  • 系统文件在只读介质上(ISO)
  • 用户修改写在内存或持久分区(overlay)
  • 重启后可丢弃或持久化

2. Docker / 容器

  • 镜像层 = lowerdir
  • 容器层 = upperdir
  • Debian 容器默认就使用 overlayfs

3. 系统只读 + 可写覆盖

  • 嵌入式系统
  • 路由器、工控设备
  • 保护根文件系统不被破坏

四、一个最小可运行的 Debian 示例

mkdir -p /tmp/lower /tmp/upper /tmp/work /tmp/merged

echo "from lower" > /tmp/lower/file.txt

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

查看:

cat /tmp/merged/file.txt
# from lower

写入:

echo "modify" >> /tmp/merged/file.txt
cat /tmp/upper/file.txt
# from lower
# modify
  • /tmp/lower/file.txt 没变(只读)
  • 修改只进了 /tmp/upper

五、理解“覆盖”行为

场景 行为
读文件 从 upper → lower 找
写文件 写在 upper
删文件 在 upper 建立 whiteout(隐藏 lower)
改 lower 文件 实际是 copy-up 到 upper

这就是 写时复制(Copy-on-Write)


六、Debian 中相关命令/工具

# 查看是否支持
cat /proc/filesystems | grep overlay

# 查看挂载
mount | grep overlay

# 卸载
umount /tmp/merged

七、一句话总结

Debian 中的 overlay,是用 OverlayFS 把“只读系统 + 可写层”叠在一起,让你既能看到完整系统,又不会破坏原始文件。

如果你是想了解:

  • Debian live 的 overlay 机制
  • Docker 在 Debian 上的 overlay
  • 如何做“只读根文件系统 + overlay”

可以告诉我你的具体场景,我可以更进一步展开。

0 踩