温馨提示×

如何更新linux overlay

小樊
42
2026-09-24 20:09:31
栏目: 智能运维

在 Linux 中,“更新 overlay”通常指在 OverlayFS(叠加文件系统) 场景下进行操作,常见于:

  • Docker 容器存储
  • 嵌入式系统 / Live CD
  • 自定义 rootfs 更新

下面按常见场景说明如何“更新 overlay”。


一、理解 OverlayFS 结构(先确认)

OverlayFS 一般包含:

lowerdir  → 只读层(基础系统)
upperdir  → 可读写层(改动)
workdir   → 临时工作目录
merged    → 挂载后的统一视图

示例:

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

二、更新 lowerdir(基础层)

最常见需求:更新底层系统,但保留 upper 中的修改

✅ 正确做法(推荐)

  1. 卸载 overlay
umount /merged
  1. 替换或更新 lowerdir
rm -rf /lower
cp -a /new-rootfs /lower
  1. 重新挂载
mount -t overlay overlay \
  -o lowerdir=/lower,upperdir=/upper,workdir=/work \
  /merged

⚠️ 注意:

  • 不要直接修改已挂载的 lowerdir
  • upperdir 中已有文件会“覆盖”lowerdir

三、清理 / 重置 upperdir(丢弃改动)

如果你想“更新系统并清除旧改动”:

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

四、Docker 中的 overlay 更新

Docker 使用 overlay2 存储驱动:

更新镜像(推荐方式)

docker pull image:tag
docker stop container
docker rm container
docker run image:tag

不要手动改:

/var/lib/docker/overlay2/

否则会导致容器损坏。


五、Live CD / 嵌入式系统更新

常见于:

lower = squashfs
upper = tmpfs / persistent

更新方式:

  • 替换 squashfs 文件
  • 重启系统
  • 保留 persistent 分区

六、常见问题排查

1. 修改不生效

  • 没 umount
  • 修改了 lower 但 overlay 已缓存

2. 文件删不掉

  • 在 upper 中是 whiteout 文件
  • 用 ls -la 看 .wh.*

3. 空间不足

  • upperdir 写满
  • 清理或迁移 upper

七、总结一句话

更新 overlay = 先卸载 → 更新 lower/upper → 再挂载

如果你能说明:

  • 是 Docker / 嵌入式 / 自建 overlay
  • 想“更新系统”还是“清理改动”

我可以给你精确命令。

0 踩