知识卡片

秒级快照的本质是把整卷拷贝开销分摊到后续写操作

专业/工作 · 236.e.9

内容

Ceph 快照能做到秒级完成,根本原因是”创建快照”这个动作本身只写入了一条记录(新的 snap_seq 和名字),不触碰任何实际数据;真正的数据拷贝被推迟到后续每一次命中该对象的写操作里,由 [[快照写操作用seq比较驱动的COW规则|COW 规则]]按需触发,且每个对象只在快照后第一次被写时拷贝一次。这本质是把一次本该是 O(整卷大小) 的操作,摊薄成无数次 O(单个对象) 的小操作,分散到不确定的未来某个时间点才真正发生——只要接下来没人去写某个对象,那份拷贝开销就永远不会发生。这是”当前操作看起来很快”背后常见的真相:不是真的免费,而是把代价转移并摊薄到了后续别的操作里。

参考来源

《Ceph源码分析》第9章《Ceph快照和克隆》