我认为你不会找到有关快照实现的详细文档;我没有遇到过这样的东西。他们确实有关于
“成本预测”的文档。然而,如果你知道它是如何工作的,你就可以直觉地理解账单,并感觉更加轻松。
请注意,这些快照并不是我们在DOS操作系统中理解的“增量”方式。在DOS中,当文件被修改时,“存档”位被设置,而“增量”备份仅复制具有“存档”位设置的文件。备份过程将清除存档属性,因此将来对文件的编辑将再次导致它被“增量”备份。
使用快照,每个卷的每个块都会被标记为已修改。这不是基于文件的。在第一个快照之后,只有被标记为已修改的块才会被备份,就像DOS中的“增量”备份一样。但是相似性就到这里了,因为对于每个块,
它不必复制,它不仅跳过它,还会写入指向最后(未更改)数据副本的指针。
你对卷进行的第一个快照会将数据分成块。来自Amazon的描述:“
在传输到Amazon S3之前,卷数据被分成块。虽然块的大小可能会因未来的优化而改变,但可以通过将自上次快照以来更改的数据大小除以4MB来估算数量[...]。”
下一个快照仅包含已更改的块的数据和指向未更改块的指针。这些指针指向先前快照中的数据块。
下一个快照(n)记录了自上一个快照(n-1)以来每个更改的块的数据,以及指向自上一个快照(n-1)以来未更改的块的指针。这些指针指向先前快照中的相应块,该块可能包含数据或指向其先前快照的另一个指针。最终,每个指针都指向未更改的实际数据块。
现在假设您决定删除快照(x)。快照(x)之前(x-1)和之后(x+1)都有快照。亚马逊用快照(x)(被删除的快照)中的指针和数据替换快照(x+1)中的指针。因此,除非它具有自己的更改块的更多最新数据的副本,否则快照(x)中的任何实际数据都将复制到快照(x+1)中。
这就是快照的工作原理,数据存储位置以及为什么快照的大小可控。从中可以理解,删除快照只会破坏您恢复卷到创建该快照时的状态的能力,而不会破坏使用其他快照的能力。与不使用指针的简单传统“增量”备份不同,不被删除的快照会根据需要进行更新,以维护其依赖快照被删除时的有用性。这就是为什么亚马逊对智能快照存储收费更高于EBS卷的简单副本的原因。最后,很难预测快照存储的成本,因为它非常动态。