linux overlay文件系统原理是什么
Linux Overlay 文件系统原理详解
Overlay 文件系统是 Linux 内核提供的一种联合挂载文件系统(Union Filesystem),它允许将多个文件系统层(通常是两层)透明地叠加在一起,形成一个统一的视图。
核心原理
OverlayFS 主要由以下几部分组成:
- lowerdir:底层文件系统(只读层)
- upperdir:上层文件系统(可写层)
- merged:合并后的视图
- workdir:工作目录(必须与 upperdir 位于同一文件系统)
工作流程
当用户访问合并后的文件系统时,OverlayFS 按以下规则处理:
文件查找:
- 首先在 upperdir 中查找
- 如果不存在,则在 lowerdir 中查找
文件修改:
- 修改文件时,如果文件来自 lowerdir,会先被复制到 upperdir(写时复制,Copy-on-Write)
- 然后在上层进行修改
文件删除:
- 删除 lowerdir 中的文件时,会在 upperdir 中创建一个"whiteout"文件(字符设备文件)
- 删除 upperdir 中的文件时,会创建一个"opaque"目录条目
关键技术特点
- 写时复制(CoW):只有修改时才复制文件到上层,节省空间
- 层叠视图:提供统一的文件系统视图,隐藏底层实现
- 性能优化:大部分操作只涉及上层文件系统,性能接近原生文件系统
- 原子性操作:通过 workdir 确保操作的原子性
典型应用场景
- 容器技术:Docker 等容器技术使用 OverlayFS 作为存储驱动
- Live CD/USB:在只读介质上提供可写层
- 软件测试:在不影响原系统的情况下进行测试
- 增量备份:只备份上层变更部分
挂载示例
mount -t overlay overlay -o lowerdir=/lower,upperdir=/upper,workdir=/work /merged
优缺点
优点:
- 节省存储空间
- 快速部署
- 保持基础镜像不变
- 支持快速回滚
缺点:
- 某些操作(如删除大文件)可能消耗较多资源
- 跨文件系统性能可能受影响
- 某些高级文件系统特性可能不支持
OverlayFS 自 Linux 3.18 起被合并到主线内核,已成为现代 Linux 系统中重要的文件系统技术之一。