温馨提示×

怎么学习centos overlay

小樊
35
2026-10-09 02:45:07
栏目: 智能运维

学习 CentOS 中的 Overlay(OverlayFS),可以从“概念 → 使用 → 实战 → 排错”四个阶段来系统学习。下面给你一个比较清晰的学习路线。


一、先搞清楚:Overlay 是什么?

Overlay(OverlayFS) 是一种 联合文件系统(Union Filesystem),特点是:

  • 把多个目录“叠加”成一个目录
  • 有 upper(可写层) 和 lower(只读层)
  • 修改文件时,只影响 upper 层,lower 层不变
  • 常用于:
    • Docker 容器存储
    • 系统只读保护
    • 系统升级 / 回滚
    • Live CD / 救援系统

核心概念:

merged = lower + upper

二、CentOS 环境准备

1. 系统版本建议

  • CentOS 7(kernel ≥ 3.10,支持 overlay)
  • CentOS 8 / Stream(更好)
  • 查看内核:
uname -r

2. 确认 overlay 模块可用

lsmod | grep overlay
# 或
modprobe overlay

三、手动使用 Overlay(最重要的一步)

1. 准备目录结构

mkdir -p /mnt/overlay/{lower,upper,work,merged}
  • lower:只读层
  • upper:可写层
  • work:Overlay 内部使用(必须和 upper 同文件系统)
  • merged:挂载后看到的目录

2. 写入测试文件

echo "lower file" > /mnt/overlay/lower/a.txt

3. 挂载 Overlay

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

4. 验证

cat /mnt/overlay/merged/a.txt
echo "new file" > /mnt/overlay/merged/b.txt

查看变化:

ls /mnt/overlay/upper

四、理解关键行为(面试/实战常问)

1. 文件修改

  • 修改 lower 文件 → 复制到 upper(写时复制)

2. 删除文件

rm /mnt/overlay/merged/a.txt
  • lower 不变
  • upper 生成 whiteout 文件(c---------)

3. 多层 lower

-o lowerdir=/l1:/l2:/l3
  • 左边优先级最高

五、和 Docker 的关系(重点)

Docker 默认存储驱动:

docker info | grep Storage

常见:

  • overlay2(推荐)
  • devicemapper(旧)

Docker 镜像层 = overlay lower
容器层 = overlay upper

学习建议:

docker run -it centos bash
# 在容器里改文件
# 宿主机查看 /var/lib/docker/overlay2

六、系统级实战案例

案例 1:保护系统目录

mount -t overlay overlay \
-o lowerdir=/etc,upperdir=/var/overlay/etc_upper,workdir=/var/overlay/etc_work \
/etc

案例 2:系统升级回滚

  • 升级前快照 lower
  • 升级写入 upper
  • 回滚 = 删 upper

七、常见问题排查

1. workdir 错误

workdir and upperdir must be on same filesystem

2. 看不到修改

  • 是否挂载成功
  • 是否操作 merged 目录

3. 启动自动挂载

/etc/fstab:

overlay /mnt/merged overlay defaults,lowerdir=/l,upperdir=/u,workdir=/w 0 0

八、推荐学习资料

官方

  • man overlay
  • man mount

实践

  • Docker 源码 / 存储驱动
  • livecd-tools
  • ostree(CentOS Immutable)

九、学习顺序建议

  1. 手动 mount overlay ✅
  2. 理解 lower/upper/work ✅
  3. 用 Docker 观察 overlay2 ✅
  4. 做系统保护/回滚实验 ✅
  5. 研究 ostree / CoreOS ✅

如果你愿意,我可以:

  • 给你 一步步实验脚本
  • 结合 Docker 源码讲 overlay
  • 讲 CentOS 系统如何做只读保护

你现在是偏 运维 / 容器 / 系统底层 哪个方向?

0 踩