温馨提示×

什么是ubuntu overlayfs

小樊
47
2026-09-25 02:33:38
栏目: 智能运维

Ubuntu 中的 OverlayFS 是一种联合文件系统(Union File System),用于将多个目录“叠加”在一起,呈现为一个统一的目录视图。在 Ubuntu 和大多数现代 Linux 发行版中,OverlayFS 通常由内核直接支持(自 Linux 3.18 起正式合入主线)。


一、核心概念

OverlayFS 至少需要以下两个目录:

  1. lower(下层)
    • 只读层
    • 可以是多个目录(lower1:lower2:…)
  2. upper(上层)
    • 可读写层
  3. work(工作目录)
    • 内核内部使用,必须和 upper 在同一文件系统
  4. merged(挂载点)
    • 用户看到的统一视图
lower (ro)  +  upper (rw)  =>  merged (可见)

二、工作原理(简化)

  • 读文件:
    • 优先从 upper 读
    • 没有则从 lower 读
  • 写文件:
    • 若文件在 lower,先复制到 upper 再修改(写时复制,Copy-on-Write)
  • 删除文件:
    • 在 upper 创建 whiteout 文件,隐藏 lower 中的文件

三、在 Ubuntu 中的典型用途

1. Docker 容器

  • Docker 默认使用 overlayfs(overlay2)
  • 镜像 = 多个 lower 层
  • 容器可写层 = upper

2. Live CD / 安装介质

  • 只读系统 + 内存可写层
  • 关机不保存

3. 系统保护 / 只读 rootfs

  • 服务器或嵌入式系统防止误改

4. 测试环境

  • 在原始系统上“假装修改”,不影响原系统

四、基本使用示例(Ubuntu)

mkdir -p /tmp/lower /tmp/upper /tmp/work /tmp/merged
echo "from lower" > /tmp/lower/a.txt

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

cat /tmp/merged/a.txt

修改 /tmp/merged/a.txt 实际写在 /tmp/upper。

卸载:

sudo umount /tmp/merged

五、优点与限制

优点

  • 轻量、内核级、性能好
  • 不需要复制整个文件系统
  • 非常适合容器和临时环境

限制

  • upper / work 必须同文件系统
  • 不支持某些复杂文件操作(如硬链接跨层)
  • 调试不如普通文件系统直观

如果你愿意,我可以进一步讲:

  • Ubuntu 上 overlayroot 的配置
  • Docker 如何使用 overlayfs
  • 如何用 overlayfs 做 系统防写

你想看哪一个?

0 踩