知识卡片

AUFS到OverlayFS的写放大改进

专业/工作 · 557.b

内容

AUFS作为联合文件系统,第一次写一个文件时要执行copy_up操作,把整个文件从镜像层复制到容器层,哪怕只改一个字符也要复制整个文件;而且镜像层数越多,为了找到目标文件需要逐层搜索,延迟随层数叠加。OverlayFS把结构简化成固定的两层——lowerdir(镜像层)和upperdir(容器层)合并成一个merged视图,容器层文件存在则优先显示容器层内容,否则直接映射镜像层文件,搜索路径更短;同时OverlayFS的页缓存可以被多个共享同一文件的容器共同复用,进一步减少了内存和I/O开销。发散:这组对比说明”分层”这个思路本身没有问题,问题出在层数越多、每层查找和复制的代价就越线性甚至更差地累加,OverlayFS的改进本质是把”任意深度的层级搜索”压缩成”固定两层的合并”,用结构上的简化换取了性能上的可预测性。

参考来源

《Linux开源存储全栈详解从Ceph到容器存储》第9章《容器存储》