+
30
-

回答

它们都是联合文件系统(UnionFS)技术,用于将多个目录“叠”成一个可读写视图,常用于容器镜像,但实现方式不同:

1. OverlayFS(主流)

原理:用“上层(upper)+ 下层(lower)+ 合并视图(merged)”三层结构。写操作只改上层,下层只读。

优点

Linux 内核原生支持(4.0+),Docker/Podman 默认使用

简单高效,性能好。

缺点:早期版本不支持多层嵌套(新内核已改进)。

2. AUFS(旧方案)

原理:支持多层叠加(几十层),每层可读写或只读。

缺点

未被主线内核接纳(需打补丁);

维护弱,Docker 早期用它,现已基本被 OverlayFS 取代。

3. Btrfs(不是联合文件系统!)

本质:是一个完整的写时复制(CoW)文件系统(类似 ZFS),支持快照、子卷等。

用途

可通过快照模拟类似联合文件系统的效果;

但 Docker 不直接用它做分层,而是作为存储后端(需配合其他机制)。

特点:功能强大但复杂,资源开销较大。

总结:

OverlayFS:现代容器首选,简单高效;

AUFS:过时,尽量不用;

Btrfs:是底层文件系统,不是联合文件系统,用途不同。

网友回复

我知道答案,我要回答