返回首页
层栈(LayerStack)架构

一份持久的文件系统真值,多个彼此隔离的工作区。

层栈通过最新优先的 manifest 对不可变 B、L、S 层排序。每个会话租借这条层链,借助 OverlayFS 和私有 upperdir 投影出工作区,并且只能通过带冲突检测的原子发布来改变持久真值。

层栈是持久的,执行视图是租借的,更改是私有的,发布是原子的。

持久核心

manifest.json

最新优先
L000024已发布增量
S000018已压缩区段
B000001共享基础层

可见顺序

由 manifest 决定

保留策略

由租约固定

层栈闭环

工作区是临时投影;发布把它的更改送回层栈。

存储与命名空间进程底座是两个独立根节点。它们在租借的 overlay 视图中相遇;只有捕获与发布完成闭环,私有更改才会持久化。

持久真值

层栈存储

manifest 定义可见文件系统。不可变层保存基础字节、已发布更改和压缩历史;租约决定哪些内容可以回收。

manifest有序视图
B* · L* · S*不可变字节
leases稳定固定
租借投影

Overlay 工作区视图

固定的 lowerdirs 与全新的 upperdir 在 holder 的挂载命名空间中组合成一个工作区。

私有更改

执行与编辑

命令和实时文件操作读取联合视图;每次写入、copy-up 和删除都只留在会话 upperdir 中。

返回路径

捕获、解决冲突,并前置一个 L* 层

upperdir 更改
逐路径 OCC
原子发布

发布会把解决冲突后的更改集前置到层栈 manifest,从而闭合整个循环。

压缩是维护侧循环。 它会压缩符合条件的 L/S 区段,并在不改变可见字节的前提下重新挂载安全的在线会话;它不是每次请求的终点。

持久
一个最新优先的 manifest 对不可变 B、L、S 层排序。
稳定
租约固定在线会话实际使用的 lower 层链。
私有
命令和文件操作只修改会话自己的 upperdir。
原子
解决冲突后的更改集要么成为一个新 L 层,要么发布被拒绝。