返回路线图概览
02 · 内容定义分块

可复用的持久增量;原生执行仍保持原生。

内容定义分块在 LayerStack 的不可变 B/L/S 层之下,为变化的文件内容赋予稳定身份。在普通原生 OverlayFS 上保留命令热路径的同时,减少重复载荷。

状态
目标设计
范围
持久增量存储
命令路径
零 CAS 查询
执行
原生 OCI/Linux

存储契约

身份跟随内容;执行跟随内核。

密封检查点记录逻辑目录树和不可变增量层。在发生变化的常规文件 extent 内,内容定义分块器推导稳定对象身份。这些身份让复用、验证、保留和后续后端投影变得明确,同时不会用用户态文件系统替换 OverlayFS。

从捕获到执行的路径

只在创建或维护持久状态时进行分块。

捕获读取的是已静止的私有 upperdir,而不是合并后的工作区。产生的增量可被物化为普通不可变原生 lowerdir。随后命令经由 OverlayFS 读取 lowerdir,正常命令路径上没有 pack、manifest 或 index 查询。

只在创建或维护持久状态时进行分块。

捕获平面

私有可写增量

每个 attempt 独有 upperdir

稀疏 extent 扫描

只扫描发生变化的已分配字节

内容定义边界

可复用内容保持稳定

不可变内容对象

类型化身份 · 已验证载体

持久状态平面

文件段映射

偏移、空洞、元数据

不可变 L / S 增量

兼容原生 B/L/S 的层

LayerStack 清单

最新优先 · 租约固定根

原生 lowerdir 投影

内核 OverlayFS 工作区

命令 / PTY

空间优化

接近单份载荷存储,而非再造一套执行文件系统。

OverlayFS 所需的原生不可变层通常就是密集文件内容的物理载体。打包存储只用于元数据、小对象和没有存活原生载体的数据。索引把稳定身份映射为已验证位置,而不是把每个 chunk 都变成永久重复文件。

01

未变化 lower 载荷

热分支新增 0 字节

子节点租用已有不可变根,而不是克隆它。

02

新增载荷

仅变化量

私有 upperdir 随真实写入增长;密封层仅保存新增的唯一内容。

03

元数据

打包且有界

清单、路径、blame、日志和小对象避免每对象一个 inode 的开销。

04

复用

内容身份

当边界保持稳定时,修改后的文件仍可保留可复用内容。

新增 lower 载荷为零

指每次热本地分支,而不是总存储为零。父 lower 根仍存在,并由租约固定。

没有永久的原生 + CAS 双副本

原生 extent 通常就是持久载体;CAS index 记录其位置和完整性凭据。

没有完整目录树克隆

发布捕获私有 upperdir 增量,不会把合并工作区 checkout 持久化为增量。

尚未承诺普适物理空间表现

分配、reflink 行为、稀疏支持和 OverlayFS 语义必须在真实 Docker 支持的 Linux 存储域上测量。

渐近记账

为变化内容付费,而不是为完整工作区付费。

Big-O 描述逻辑/存储工作。内核挂载开销、文件系统延迟、缓存状态、lower 链深度和 Docker 存储能力仍是需要实测的常数或独立门槛;它们不会因符号表示而消失。

符号

L
不可变 lower 层深度
P
变化文件系统条目数
Δ
扫描的变化载荷字节
F
基线整文件载荷字节
U
新增唯一载荷字节
C
新增 chunk / segment 引用数
R
冷根缺失的载荷字节
操作 / 成本当前整文件增量目标 CDC 增量变化点
创建 / 分支逻辑子节点时间 O(1) · 空间 O(1)时间 O(1) · 空间 O(1)渐近复杂度不变。两者都新增 NodeId、root 引用、租约和来源信息,而不是复制 lower 载荷。
激活热本地子节点时间 O(L) · 空间 O(1)时间 O(L) · 空间 O(1)渐近复杂度不变。两者都组装 lowerdir 链与私有运行时状态。
捕获并密封变化文件时间 O(F + P) · 空间 O(F + P)时间 O(Δ + P) · 空间 O(U + C + P)基线保留每个变化整文件的全部字节;CDC 只保留新增内容以及段与文件系统元数据。
冷 hydration时间 O(R) · 空间 O(R)时间 O(R) · 空间 O(R)渐近复杂度不变。缺失的原生根必须先物化一次,工作节点才能转为热状态。
N 次连续修订空间 O(ΣFᵢ)空间 O(ΣUᵢ + ΣCᵢ + ΣPᵢ)稳定边界可以跨版本保留未变化区域。
最坏情况的变化内容空间 O(F)空间 O(F)当每个字节都是新内容或无法复用边界时,CDC 没有渐近空间优势。
Command / PTY I/O原生 OverlayFS 路径原生 OverlayFS 路径两个命令热路径上都不进行 CAS 重建。

与当前基线对比

CDC 改变的是数据敏感型存储,而不是内核执行契约。

当前基线将发生变化的常规文件整体作为不可变原生层载荷进行捕获。它已经让命令执行保持在原生 OverlayFS 上,也不会在热会话中克隆完整合并目录树。CDC 目标改变的是持久载荷表示,使被编辑文件能够保留实际未变化的内容。

当前整文件增量

  1. 1

    文件 v1·完整原生载荷

  2. 2

    文件 v2·再次完整载荷

  3. 3

    文件 v3·再次完整载荷

目标 CDC 增量

  1. 1

    chunk A·复用

  2. 2

    chunk B′·新增

  3. 3

    chunk C·复用

研究 lanes

一种持久形态;四种决定可复用内容边界的方式。

四条 lane 都保持相同的 LayerStack B/L/S 与原生执行契约。L1 隔离 packed-CAS 布局;L2–L4 改变内容定义边界算法。它们最终的空间和时间表现必须通过同一组容器化测量门槛证明。

  1. L1

    Paged Footer-Pack CAS

    以冻结的 selective FastCDC 边界控制原生载体 / 打包元数据的混合存储布局。

  2. L2

    SeqCDC

    测试顺序内容定义边界及其复用/CPU 权衡。

  3. L3

    Gear64 SIMD

    测试具有标量/SIMD 等价性要求的精确 Gear64 边界。

  4. L4

    VectorCDC VAE

    在相同存储契约下测试向量化非对称极值边界。

优化的边界

持久模型感知目录树/文件;分块只是内部载荷编码。

产品级 root 是包含路径、文件对象、目录、链接、元数据和来源的逻辑清单。分块可改善文件内容内部的物理去重,但不会改变 SandboxNode 的含义、授予挂载权限,或让目标镜像负责存储。