linux

Overlay文件系统如何工作

小樊
70
2025-08-08 22:28:30
栏目: 编程语言

Overlay文件系统通过联合挂载将多个目录层(lowerdir、upperdir等)合并为统一视图,核心工作流程如下:

  1. 组成结构

    • lowerdir:只读层,存储基础文件(如容器镜像层)。
    • upperdir:可写层,保存用户修改的数据。
    • merged:最终呈现的合并视图,用户直接访问。
    • workdir:临时工作目录,确保操作原子性(如删除时创建whiteout文件)。
  2. 关键操作逻辑

    • 文件读取
      1. 先在upperdir查找,存在则直接读取。
      2. 不存在则到lowerdir查找,支持多层lowerdir叠加。
    • 文件修改
      • 若修改upperdir已有文件,直接写入upperdir。
      • 若修改lowerdir文件,触发写时复制(CoW):将文件从lowerdir复制到upperdir,再在上层修改。
    • 文件删除
      • 删除lowerdir文件时,在upperdir创建whiteout文件(隐藏lower层文件)。
      • 删除upperdir文件时,标记为opaque(直接删除)。
  3. 特性与优势

    • 节省空间:仅存储差异数据,避免重复拷贝基础层。
    • 性能优化:多数操作在upperdir完成,减少磁盘IO。
    • 原子性操作:通过workdir确保修改的完整性。

典型应用:Docker容器存储、Live CD/USB、软件测试环境等。
挂载命令示例:

mount -t overlay overlay -o lowerdir=/lower1:/lower2,upperdir=/upper,workdir=/work /merged  

0
看了该问题的人还看了