Overlay文件系统通过联合挂载将多个目录层(lowerdir、upperdir等)合并为统一视图,核心工作流程如下:
-
组成结构
- lowerdir:只读层,存储基础文件(如容器镜像层)。
- upperdir:可写层,保存用户修改的数据。
- merged:最终呈现的合并视图,用户直接访问。
- workdir:临时工作目录,确保操作原子性(如删除时创建whiteout文件)。
-
关键操作逻辑
- 文件读取:
- 先在upperdir查找,存在则直接读取。
- 不存在则到lowerdir查找,支持多层lowerdir叠加。
- 文件修改:
- 若修改upperdir已有文件,直接写入upperdir。
- 若修改lowerdir文件,触发写时复制(CoW):将文件从lowerdir复制到upperdir,再在上层修改。
- 文件删除:
- 删除lowerdir文件时,在upperdir创建whiteout文件(隐藏lower层文件)。
- 删除upperdir文件时,标记为opaque(直接删除)。
-
特性与优势
- 节省空间:仅存储差异数据,避免重复拷贝基础层。
- 性能优化:多数操作在upperdir完成,减少磁盘IO。
- 原子性操作:通过workdir确保修改的完整性。
典型应用:Docker容器存储、Live CD/USB、软件测试环境等。
挂载命令示例:
mount -t overlay overlay -o lowerdir=/lower1:/lower2,upperdir=/upper,workdir=/work /merged