温馨提示×

linux overlay和unionfs区别

小樊
39
2026-09-06 15:19:56
栏目: 智能运维

Linux 中的 OverlayFS 和 UnionFS 都属于**联合文件系统(Union File System)**思想,但二者在定位、实现、稳定性和使用场景上有明显区别。下面从多个维度对比说明。


一、基本概念

1. UnionFS(联合文件系统)

  • 是一类文件系统技术的统称
  • 核心思想:把多个目录(分支)合并成一个统一的目录视图
  • 典型实现:
    • UnionFS(早期实现)
    • aufs(Another UnionFS)
    • UnionMount

2. OverlayFS

  • 是 Linux 内核原生支持的联合文件系统
  • 自 Linux 3.18 起合入主线内核
  • 现在 Docker、Kubernetes、容器运行时大量使用

二、核心区别对比

对比项 UnionFS / aufs OverlayFS
是否内核原生 否(第三方补丁) ✅ 是(内核主线)
稳定性 一般 ✅ 高
维护状态 aufs 已基本停止发展 ✅ 活跃维护
层数支持 多层 通常两层(lower + upper)
性能 较低 ✅ 更高
使用复杂度 高 ✅ 简单
典型用途 早期 Live CD 容器、镜像层

三、OverlayFS 的工作模型

OverlayFS 主要使用 两层结构:

lowerdir(只读层)
upperdir(可写层)
merged(合并视图)
  • 读:优先 upper,没有则读 lower
  • 写:写入 upper
  • 删除:在 upper 中创建 whiteout 文件

示例:

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

四、UnionFS / aufs 的特点

早期 UnionFS 解决的问题:

  • Live CD(只读光盘 + 内存可写)
  • 多发行版合并

缺点:

  • 需要打内核补丁
  • 代码复杂、bug 多
  • 不支持现代容器需求

五、为什么容器选 OverlayFS 而不是 UnionFS

  • ✅ 内核原生,无需额外补丁
  • ✅ 层叠结构清晰(镜像层 = lower)
  • ✅ 写时复制(Copy-on-Write)
  • ✅ 性能和稳定性更好

Docker 存储驱动演变:

aufs → overlay → overlay2

六、一句话总结

UnionFS 是“思想”,OverlayFS 是“现代 Linux 官方实现”。

如果你愿意,我也可以:

  • 讲 overlay2 和 overlay 的区别
  • 演示容器如何使用 overlay
  • 对比 overlay 与 btrfs / zfs

0 踩