AWS - EBS 快照 - 增量备份或实际完全备份

piz*_*zza 2 backup amazon-ec2 amazon-web-services aws-ebs

我知道在 AWS 中,EBS“快照是增量备份,这意味着只有设备上在您最近的快照之后发生更改的块才会被保存。

但是,当使用 EBS 快照恢复数据时,如何恢复该 EBS 快照中的所有数据以及之前快照中的数据?

例如,假设我有一个空卷。因此,我向其中添加 10 GB 数据并拍摄快照(快照 1)。然后,我再添加 5 GB 的数据并拍摄第二个快照(快照 2)。

如果快照是纯粹的增量备份,那么当我使用快照 2 恢复数据时,我应该只有 5 GB 的数据。但是当我测试它时,我得到了 15 GB 的数据。

我知道增量快照可以最大限度地减少创建快照所需的时间并通过不复制数据来节省存储成本,但是如何通过增量备份来恢复整个数据?

Joh*_*ein 8

情况很复杂!

快照有两个元素:

  • 数据(存储为块)
  • 数据的索引

假设您有一个完全空的 Amazon EBS 卷。知道没有使用任何块是足够聪明的。

现在,让我们添加 10GB 的数据,然后创建快照。这将导致 10GB 的数据被复制到 Amazon S3。您在 S3 中看不到它,但 Amazon EBS 将 S3 用于“幕后”快照。已修改的每个都将作为单独的对象复制到 S3。此外,将存储一个“索引”,上面写着“快照 #1 包含以下块”。因此,快照是索引和存储的数据组合

接下来,让我们删除一些文件,修改一些文件并添加另外 5GB 的文件。拍摄另一个快照 (#2) 现在会将与快照 #1 不同的任何块复制到 S3,这意味着任何已修改或添加的块。将创建一个指向这些新块的索引,但如果创建快照 #2 时这些块仍然存在于磁盘上,则也会指向在快照 #1 中创建的一些块。这突出了快照的“增量”性质——未更改的块将不会被再次复制。

至于被删除的块,这些块保留在 S3 中,因为它们是快照 #1 的一部分,即使它们不存在于快照 #2 中。这意味着可以从快照 #1 或快照 #2 创建新卷。

但是,如果快照 #1 被删除,则仅存在于快照 #1 中的任何块也将被删除。但是,作为两个快照一部分的任何块将被保留,因为恢复快照 #2 需要它们。

简单的规则是:任何属于现有快照的数据块都将被保留,以便可以恢复快照。

为了让您的思绪更进一步,请注意AMI 是带有一些额外元数据的快照。因此,如果您从 AMI 启动 EC2 实例,那么 AMI 实际上是快照 #1。当您在该 Amazon EBS 卷上添加/修改一些数据并拍摄快照时,它将复制您更改的块的副本,但快照将指向大部分磁盘内容(例如操作系统)的 AMI 快照。