AWS创建EBS和EC2实例snapshot期间产生的变更会如何处理?
AWS EBS快照创建机制问题解答
问题1:快照创建时间窗口内产生的资源变更是否会被快照捕获?
不会。AWS EBS快照属于时间点副本,仅会保留你点击创建按钮触发请求的瞬间的EBS卷状态,整个5-10分钟的后台创建过程中产生的所有写入、修改操作,都不会被纳入到这张快照里。
问题2:资源持续变化的情况下该机制的实现逻辑是什么?AWS如何获取变更前的资源状态?
AWS EBS底层通过*写时复制(Copy-on-Write, CoW)*机制实现该能力,核心流程如下:
- 触发快照创建请求的瞬间,EBS会首先生成当前卷的时间点元数据视图,记录当前所有数据块的存储位置与状态,这个操作耗时在毫秒级,几乎不会对卷的正常读写造成影响,此时快照会进入
pending状态。 - 你看到的5-10分钟的创建窗口,本质是后台异步将元数据视图标记的所有旧数据块复制到快照底层存储的耗时,这个过程是后台异步运行的,完全不影响你对EBS卷的正常使用。
- 异步复制过程中如果有新的写入请求要修改还未完成复制的旧数据块,EBS不会直接覆盖旧块:会先把新数据写入到卷的空闲存储块中,同时更新卷的活动元数据指向新块,原始旧块会被保留直到后台完成它的复制操作后才会被标记为可复用。
- 如果是同卷的增量快照,后台只会复制上一次快照创建后发生变更的数据块,创建耗时会远短于全量快照。
内容的提问来源于stack exchange,提问作者Turbo
相关产品推荐
相关产品推荐

