Ubuntu 中 Overlay 的常见配置方法与要点
一 方法总览
- 内核 OverlayFS 手动挂载:使用内核模块 overlay,通过 mount -t overlay 指定 lowerdir/upperdir/workdir,适合临时或固定目录的联合挂载。
- /etc/fstab 开机自动挂载:把 overlay 挂载写入 /etc/fstab,实现重启后自动生效。
- overlayroot 只读根文件系统 + 可写覆盖层:用于保护系统盘,所有写入落到 upperdir,常用于运维与恢复场景。
- 容器场景的 OverlayFS:Docker/Podman 默认使用 OverlayFS,通常通过镜像与容器层管理,也可在构建/运行阶段自定义 lower 层。
- fuse-overlayfs(用户态):在不支持内核 OverlayFS 的环境下,用 fuse-overlayfs 提供 Overlay 能力,适合容器构建等用户态场景。
二 方法对比
| 方法 |
适用场景 |
关键要点 |
持久化与重启 |
| 内核 OverlayFS 手动挂载 |
目录合并、临时实验 |
需内核支持,指定 lowerdir/upperdir/workdir |
手动或写入 fstab |
| /etc/fstab 自动挂载 |
固定路径的联合视图 |
fstab 条目需正确,路径必须存在 |
开机自动挂载 |
| overlayroot |
保护系统盘、Live 修复 |
写入重定向到 upperdir,系统根只读 |
重启后依然有效 |
| 容器 OverlayFS |
容器镜像/容器层 |
由容器运行时管理,用户一般无需手动挂载 |
随容器生命周期 |
| fuse-overlayfs |
无内核模块或用户态需求 |
用户态实现,性能略低于内核 |
取决于挂载方式与存储后端 |
三 操作步骤示例
-
内核 OverlayFS 手动挂载
- 准备目录:
mkdir -p /lower /upper /work /mnt/overlay
- 挂载:
sudo mount -t overlay overlay -o lowerdir=/lower,upperdir=/upper,workdir=/work /mnt/overlay
- 验证:
mount | grep overlay
ls /mnt/overlay
说明:lowerdir 可为只读基础层,upperdir 保存变更,workdir 为内核工作目录(必须为空且与 upperdir 同文件系统)。
-
/etc/fstab 开机自动挂载
- 编辑 /etc/fstab,新增:
overlay /mnt/overlay overlay defaults,lowerdir=/lower,upperdir=/upper,workdir=/work 0 0
- 应用:
sudo mount -a
- 验证:
findmnt /mnt/overlay
说明:确保 lower/upper/work 路径存在且权限正确;如需开机生效,请确认挂载点在启动早期可用。
-
overlayroot 只读根 + 可写覆盖层
- 安装:
sudo apt-get update && sudo apt-get install -y overlayroot
- 配置 /etc/overlayroot.conf(示例):
overlayroot=“tmpfs:swap=1,upperdir=/persist/upper,workdir=/persist/work”
- 重启后生效;所有写入将进入 upperdir(如 /persist/upper),根文件系统保持只读。
- 如需临时以可写根启动,可在引导菜单编辑内核命令行,添加 overlayroot=disabled 后启动。
说明:overlayroot 适合系统保护、救援与镜像部署;修改配置前请备份重要数据。
-
容器场景的 OverlayFS
- Docker 默认使用 OverlayFS;如需自定义 lower 层,可在构建阶段通过多阶段构建或联合挂载实现;运行阶段通常无需手动挂载 OverlayFS。
- 如需在用户态提供 Overlay(例如在不支持内核 Overlay 的环境),可使用 fuse-overlayfs 作为后端(容器构建工具常用)。
四 注意事项与排错要点
- 目录与权限:lowerdir/upperdir/workdir 必须存在;workdir 必须为空且与 upperdir 位于同一文件系统;挂载点需可写。
- 多 lower 层:可将多个目录以 “:” 分隔放入 lowerdir(如 lowerdir=/ro1:/ro2:/ro3),顺序为从下到上叠加。
- fstab 与 systemd:若挂载点在网络存储或加密卷上,需确保依赖单元已启动;必要时使用 systemd mount 单元替代 fstab。
- 性能与空间:upperdir 承载所有写入,注意磁盘空间;频繁元数据操作对性能有影响。
- 故障排查:
- 查看挂载:mount | grep overlay、findmnt、cat /proc/mounts
- 检查目录是否为空(workdir 必须为空)
- 查看内核日志:dmesg | tail
- 无法卸载时,确认没有进程占用挂载点(lsof | grep /mnt/overlay)
- 数据安全:修改 fstab 或 overlayroot 配置前先备份;误操作可能导致系统无法启动或数据不可达。