当前位置: 首页 > news >正文

OverlayFS

OverlayFS(叠加文件系统),就是我们刚才提到的AUFS现代正统继承者。在现在的 Linux 和 Docker(overlay2驱动)生态里,AUFS 因为代码太复杂、性能不够极致,已经基本被淘汰了,取而代之的绝对霸主就是 OverlayFS。

如果说 AUFS 是那个能叠好几十层、玩法复杂的 PS 图层魔术师,那么 OverlayFS 就是一个极其干练、只留核心、速度极快的现代视觉大师


1. 为什么有了 AUFS,还要搞 OverlayFS?

AUFS 虽然好用,但它有一个致命弱点:太重、太复杂了。它的核心代码量巨大,导致 Linux 官方(内核社区)一直嫌弃它,拒绝把它合进 Linux 内核的主线里。这意味着早年用 AUFS,你得自己单独给内核打补丁。

而 OverlayFS 痛定思痛,把架构极度简化,在 2014 年被正式合并进了 Linux 内核主线。它最大的特点就是:快,省,结构简单。


2. 核心架构:化繁为简的“四合一”

AUFS 可以叠任意多的层(Layer 1, Layer 2, Layer 3…),而 OverlayFS 觉得没必要搞那么花哨,它把世界简化成了四个核心目录

  1. Lowerdir(底层/只读层):对应 Docker 镜像的那些基础层。它可以是好几个目录的叠加,但在 OverlayFS 眼里,它们统一都算“只能看不能动”的底层。
  2. Upperdir(顶层/可写层):对应容器的读写层。你在容器里干的所有增删改查,第一落脚点全在这里。
  3. Mergedir(挂载点/视图层):楚门的世界。用户和容器内的进程真正看到的、用到的就是这个目录。它是 Lowerdir 和 Upperdir 融合后的结果。
  4. Workdir(工作工作空间):内核自己默默使用的一个空目录,用来在原子操作(比如正准备做 Copy-on-Write 复制文件)时当临时中转站,用户一般感知不到。

3. OverlayFS 是怎么把速度变快的?

比起 AUFS,OverlayFS 在性能上有两个逆天的优化:

① 找文件不再“层层套娃”

  • AUFS:如果你叠了 10 层镜像,找一个文件时,它得从第 10 层、第 9 层、第 8层……一层一层往下探,像套娃一样,非常低效。
  • OverlayFS:只有UpperLower。内核一瞬间就能判断出文件是在可写层还是在只读层,省去了中间大量的遍历时间。

② 完美的内存复用(页缓存共享)

这是 OverlayFS 打败虚拟机和 AUFS 的终极杀招。
在 Linux 中,打开文件会占用内存的Page Cache(页缓存)。

  • 如果用虚拟机,100 个虚拟机打开同一个文件,内存里会有 100 份缓存。
  • 如果用 AUFS,因为实现机制问题,不同的容器打开同一个底层只读文件,内核有时也会卡在虚拟节点上,无法完美共享缓存。
  • 而在 OverlayFS 中:因为它直接贴合 Linux 内核的 VFS(虚拟文件系统),100 个容器如果仅仅是读取底层的同一个文件(比如某个公共运行库),整个物理机内存里真的就只有一份页缓存。这不仅省下了海量的内存,更让文件读取速度直接拉满。

4. 在 OverlayFS 里,Whiteout 和 CoW 是怎么玩的?

它的底层逻辑和我们前面讲的一脉相承,只是动作更干净:

  • 修改文件(CoW):当你试图修改Lowerdir里的文件时,OverlayFS 直接触发copy_up操作,把文件瞬间复制到Upperdir,后续的读写直接在Upperdir爆发,Merged 视图无缝切换。
  • 删除文件(Whiteout):当你在容器里删除了底层文件,OverlayFS 会在Upperdir里创建一个主次设备号为 0:0 的特殊字符设备。当视图层(Mergedir)看到这个无字天碑时,就会自动忽略底层对应的同名文件。

总结

Namespace(空间隔离)→\rightarrowHypervisor(硬件虚拟)→\rightarrowUFS(硬件闪存)→\rightarrowAUFS(初代分层)→\rightarrowOverlayFS(现代分层),这一路看下来,你会发现:

容器技术的精髓,就是不断地剔除掉中间商(比如 Hypervisor、多余的 Guest OS、繁琐的系统层),用最轻量的内核障眼法(Namespace + OverlayFS),让进程跑在最接近物理硬件的速度上。

http://www.jsqmd.com/news/989722/

相关文章:

  • 喜马拉雅FM音频下载器:跨平台开源工具终极指南,3步轻松下载有声读物
  • 论文双检难题破解:告别降重、去AI痕迹二选一困境
  • 解锁AMD Ryzen隐藏实力:用SMUDebugTool实现硬件级精准调校
  • Python工程师在AI工程化方向的具体技术栈和工具链有哪些?
  • Assistant-UI:一站式高效构建AI聊天界面的终极React组件库
  • 2026年 EVA直发器/脱毛仪/锂电钻/平板硬包十大厂家推荐:精密防护与便携收纳的专业之选 - 品牌发掘
  • 射电AGN中H I吸收现象的研究与MeerKAT观测
  • 在Steam Deck上搭建你的怀旧游戏博物馆:EmuDeck配置指南
  • OpCore-Simplify:让黑苹果配置从8小时缩短到30分钟的智能助手
  • AWS ALB + Cognito 实现零代码身份认证(完整实战)
  • 告别手动梳理!用Python脚本自动生成Verilog模块依赖关系图(附源码)
  • AI 重塑攻防格局!解读网络安全全新范式|算泥MVP直播
  • SciDownl终极指南:如何快速批量下载学术文献,提升500%研究效率
  • FPGA数字时钟VHDL工程:6位动态扫描数码管显示+按键调时+整点报时输出
  • 2026年 工程勘察资质代办机构推荐榜:专业实力与高效服务深度解析 - 品牌发掘
  • 数据的加密与解密(03:43)
  • Vue.js从零到精通系列(三):组件化基础——Props、Emits、插槽与生命周期
  • BoilR终极指南:多平台游戏库整合与Steam同步实战手册
  • 嵌入式通信实战:用C语言把浮点数拆成HEX-ASCII码(附完整代码)
  • 树莓派可用的MLX90614红外测温Python驱动包(Py2/Py3双支持)
  • Java实现阶乘的三种写法:for循环、while循环和递归函数源码
  • 高架桥304不锈钢防护护栏厂家选择分析:基于区域服务能力与工程适配性的多维度考察 - 优质品牌商家
  • 如何用VDesk实现Windows虚拟桌面效率翻倍:终极指南
  • 保姆级教程:在CW32L083开发板上手把手移植FreeRTOS V9.0.0(附完整源码)
  • 论文双审难题破解:兼顾重复率与AIGC检测,百考通AI实操指南
  • 3步掌握B站视频AI智能总结:用BiliTools高效提取视频精华
  • 别再硬解方程了!用Python+NumPy实现RBF曲面重建,处理百万点云也不怕
  • 终极指南:如何快速优化腾讯游戏性能的ACE-Guard资源限制器
  • 已认证微信服务号可用的三级分销H5商城PHP源码,带加粉裂变+后台一键部署指南
  • 别再只收藏了!用这197个SOTA模型源码,手把手教你复现经典论文(附保姆级环境配置)