插件窝 干货文章 linux overlay文件系统原理是什么

linux overlay文件系统原理是什么

文件 系统 upperdir 上层 774    来源:    2025-05-15

Linux Overlay 文件系统原理详解

Overlay 文件系统是 Linux 内核提供的一种联合挂载文件系统(Union Filesystem),它允许将多个文件系统层(通常是两层)透明地叠加在一起,形成一个统一的视图。

核心原理

OverlayFS 主要由以下几部分组成:

  1. lowerdir:底层文件系统(只读层)
  2. upperdir:上层文件系统(可写层)
  3. merged:合并后的视图
  4. workdir:工作目录(必须与 upperdir 位于同一文件系统)

工作流程

当用户访问合并后的文件系统时,OverlayFS 按以下规则处理:

  1. 文件查找

    • 首先在 upperdir 中查找
    • 如果不存在,则在 lowerdir 中查找
  2. 文件修改

    • 修改文件时,如果文件来自 lowerdir,会先被复制到 upperdir(写时复制,Copy-on-Write)
    • 然后在上层进行修改
  3. 文件删除

    • 删除 lowerdir 中的文件时,会在 upperdir 中创建一个"whiteout"文件(字符设备文件)
    • 删除 upperdir 中的文件时,会创建一个"opaque"目录条目

关键技术特点

  1. 写时复制(CoW):只有修改时才复制文件到上层,节省空间
  2. 层叠视图:提供统一的文件系统视图,隐藏底层实现
  3. 性能优化:大部分操作只涉及上层文件系统,性能接近原生文件系统
  4. 原子性操作:通过 workdir 确保操作的原子性

典型应用场景

  1. 容器技术:Docker 等容器技术使用 OverlayFS 作为存储驱动
  2. Live CD/USB:在只读介质上提供可写层
  3. 软件测试:在不影响原系统的情况下进行测试
  4. 增量备份:只备份上层变更部分

挂载示例

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

优缺点

优点: - 节省存储空间 - 快速部署 - 保持基础镜像不变 - 支持快速回滚

缺点: - 某些操作(如删除大文件)可能消耗较多资源 - 跨文件系统性能可能受影响 - 某些高级文件系统特性可能不支持

OverlayFS 自 Linux 3.18 起被合并到主线内核,已成为现代 Linux 系统中重要的文件系统技术之一。