亚马逊EBS,快照作为增量备份

23

我正在为我们的EBS卷制定一种每天备份的自动化机制。

我很清楚创建新快照的步骤。显然,所有这些都很简单,你有一个EBS卷可以进行快照,并且可以随时还原快照。没问题。

但我的担忧是关于快照的大小。我知道这些快照在S3中使用压缩存储,并且我们将根据快照的大小收费。如果我们有大量数据,每次备份都会导致发票上的显着增加。

然而,根据亚马逊的页面显示,这些快照是增量的。这将解决我的问题,因为每天备份只会上传自上次快照以来更改的数据。但这引出了我的下一个问题:如果备份是增量的,而我们仅上传修改后的数据,那么原始数据存储在哪里?(即第一个快照显然不能以增量方式完成...)

不幸的是,我在亚马逊的文档中找不到这些信息。

有人有快照和计费经验吗?

非常感谢任何帮助,谢谢!

1个回答

39
我认为你不会找到有关快照实现的详细文档;我没有遇到过这样的东西。他们确实有关于“成本预测”的文档。然而,如果你知道它是如何工作的,你就可以直觉地理解账单,并感觉更加轻松。
请注意,这些快照并不是我们在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卷的简单副本的原因。最后,很难预测快照存储的成本,因为它非常动态。

我认为你的评论非常有用。我对那个过程非常感兴趣和好奇,但似乎没有公开文档。到目前为止,我的谷歌搜索并不是很幸运,正如你所说,详细的文档并不容易获得。你知道这方面有什么有用的链接吗?主要问题是我们每周快照了相当多的卷,不想在下一个账单中受到太大的惊吓。非常感谢。 - xuuso
2
我仍然认为你不会找到详细的文档,我也没有抱太大希望;我也没有看到过。我的理解是从数据结构的学习中综合出来的,特别是双向链表。不用担心下一个账单。每小时对几个较小的卷进行测试快照。在亚马逊上,点击“账户”(在控制台上方菜单的最右侧找到)并从左侧菜单中选择“使用报告”。对于服务,选择“Amazon Elastic Compute Cloud”。对于使用类型,选择“所有使用类型”。对于操作,选择“SnapShotPutUsage”或“SnapShotUsage”。[房间已满。 :)] - John Langstaff
你说得对,我可以在账单变得太晚之前看到它。不过如果有一些适当的文档就更好了:(,亚马逊让我有点失望。再次感谢你的帮助!! - xuuso
@xuuso,您能否告诉我们最终的结果如何?您的账单金额是多少? - Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接