温馨提示×

怎样学习ubuntu overlay

小樊
42
2026-10-09 17:29:33
栏目: 智能运维

学习 Ubuntu 下的 Overlay(OverlayFS),建议从“概念 → 基本用法 → 实战 → 排错 → 进阶”这条路线走。下面我按这个顺序给你一个系统性的学习指南。


一、先搞清楚:什么是 Overlay / OverlayFS

OverlayFS 是一种 联合文件系统(Union Filesystem),可以把多个目录“叠”在一起:

  • lowerdir(只读层)
  • upperdir(可写层)
  • workdir(内部工作目录)
  • merged(最终挂载后的视图)

在 Ubuntu 中常用于:

  • Docker 容器层
  • Live CD / 系统恢复
  • 系统只读保护
  • 软件环境隔离

二、确认 Ubuntu 是否支持 OverlayFS

uname -r
lsmod | grep overlay

如果没有:

sudo modprobe overlay

Ubuntu 16.04+ 默认支持。


三、最基础的手工挂载示例(必练)

1️⃣ 创建目录结构

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

2️⃣ 在 lower 放只读内容

echo "I am lower" | sudo tee /tmp/overlay/lower/file.txt

3️⃣ 挂载 overlay

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

4️⃣ 查看效果

cat /tmp/overlay/merged/file.txt

修改文件:

echo "modified" | sudo tee /tmp/overlay/merged/file.txt

你会发现:

  • lower/file.txt 不变
  • upper/file.txt 被创建

四、理解核心行为(重点)

✅ 写时复制(Copy-on-Write)

  • 修改 lower 文件 → 实际写入 upper
  • lower 永远不变

✅ 删除文件

rm /tmp/overlay/merged/file.txt

会在 upper 创建:

upper/file.txt (whiteout)

✅ 多 lower 层

lowerdir=/a:/b:/c

后写的层优先级更高。


五、在 Ubuntu 中的典型应用场景

1️⃣ Docker(最常见)

Docker 默认使用 overlay2:

docker info | grep Storage

路径一般在:

/var/lib/docker/overlay2

2️⃣ 系统只读保护(高级)

例如:

  • 把根文件系统设为 lower
  • 用 overlay 做临时修改

⚠️ 这个需要 initramfs 修改,不建议新手直接做

3️⃣ 软件测试隔离

overlay 挂载 → 测试软件 → 卸载 → 系统无痕

六、使用 systemd 挂载(推荐)

/etc/systemd/system/overlay.mount

[Unit]
Description=Overlay Test

[Mount]
What=overlay
Where=/mnt/merged
Type=overlay
Options=lowerdir=/lower,upperdir=/upper,workdir=/work

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start overlay.mount

七、常见错误 & 排查

❌ workdir 和 upperdir 不能相同

workdir must be on same fs as upperdir

❌ 权限问题

  • upper/work 必须可写
  • 挂载点要存在

❌ 卸载失败

sudo umount /tmp/overlay/merged

若 busy:

lsof +D /tmp/overlay/merged

八、进阶学习方向

  • overlay2(Docker)
  • initramfs + overlay(只读系统)
  • squashfs + overlay(Live OS)
  • composefs(新一代)

九、推荐学习资料

官方

man overlay

文档

  • https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt
  • Docker storage driver 文档

实操建议

不要只看,一定自己 mount 一次


如果你愿意,我可以:

  • 给你一个 Docker overlay2 拆解实验
  • 或教你 用 overlay 做 Ubuntu 只读系统
  • 或针对 某个具体用途 讲

你现在是想“理解原理”还是“直接用到某个项目里”?

0 踩