blockdiff,实现了秒级快照(相较原来提升约 200 倍)
这个对 Manus 这种需要虚拟机的云端 Agent 很有帮助啊
下面是详细介绍👇#ai创造营#
blockdiff 的作用
blockdiff 是一个开源工具(github.com/CognitionAI/blockdiff),用于 VM 磁盘的块级差异比较和快照。其核心思想是只存储与基准镜像不同的磁盘块,极大减少了存储和传输的数据量。
为什么需要增量快照
开发环境复用:用户的开发环境只需保存变更部分,避免冗余存储整个操作系统镜像。
休眠与唤醒:只需保存会话状态,传输小体积快照,提升唤醒速度。
磁盘回滚:支持多层增量快照,便于会话中随时回滚。
设计目标
紧凑:快照文件大小与变更量成正比。
瞬时:快照操作几乎不涉及磁盘 I/O,仅操作元数据。
零开销:不影响 VM 的读写性能。
简单:实现尽量简洁,减少出错和调试成本。
技术实现
主要依赖 Linux XFS 文件系统的 Copy-on-Write(CoW)特性。
通过 FIEMAP 系统调用获取文件块映射(extent map),只需比较元数据即可找出差异块。
blockdiff 文件格式包含头部(magic string、文件大小、块范围等)和连续存储的差异块数据,写入快照时只需操作元数据,极快完成。
为什么不用现有方案
二进制 diff:全盘扫描太慢。
OverlayFS:不支持无重挂载的增量快照,且与 Docker 冲突。
ZFS:只能回滚 home 目录,且快照逻辑需在 VM 内部实现,性能不理想。
qcow2:不支持纯元数据操作,转换大文件时速度慢。
Linux 文件系统基础
稀疏文件:只为非零数据分配空间,逻辑大小远大于实际占用。
CoW:只有在写入时才分配新块,节省空间和时间。
磁盘镜像即文件:VM 磁盘就是宿主机文件系统上的文件,便于管理和快照。