永久性磁盘快照

快照会以增量方式备份永久性磁盘中的数据。创建快照以捕获磁盘的当前状态后,您可以使用快照将数据恢复到新磁盘。Compute Engine 在多个位置存储每个快照的多个副本,并利用自动校验和来确保数据完整性。

即使磁盘已挂接到了正在运行的虚拟机实例上,您也可以为这些磁盘创建快照。为挂接到正在运行的虚拟机实例的磁盘创建的快照的生命周期与该虚拟机实例的生命周期无关。

请注意,快照与自定义映像机器映像不同,后者用于创建实例启动磁盘。如需了解详情,请参阅比较映像、快照和实例模板使用情况的表

使用快照

  • 如需了解如何使用快照备份磁盘,请参阅创建快照。您可以先为磁盘创建快照,然后再尝试执行可能造成危险的操作,这样就可以还原更改以防发生意外结果。

  • 如需了解如何将快照内容恢复到新磁盘,请参阅恢复快照

  • 如果您不再需要某个特定快照,可以删除该快照以减少存储费用。

  • 如需降低数据意外丢失的风险,请考虑执行设置快照时间表这一最佳做法,以确保定期备份数据。

访问快照

限制

  • 您无法更改现有快照的存储位置。请参阅选择快照的存储位置

  • 您最多可以每 10 分钟截取一次磁盘快照。如果您想要发出大量截取磁盘快照的请求,您可以在 60 分钟内发出最多 6 个请求。如需了解详情,请参阅快照频率限制

增量快照的工作原理

快照是增量式并且自动压缩的,因此比起定期创建磁盘的完整映像,您在创建永久性磁盘的定期快照时速度更快且费用更低

增量快照的工作原理如下:

  • 永久性磁盘的第一个成功快照是一个完整的快照,其中包含了该永久性磁盘上的所有数据。
  • 第二个快照仅包含自从创建第一个快照以来的任何新增或修改的数据。自创建快照 1 以来未更改的数据不包括在内。 对于任何未更改的数据,快照 2 中包含了对快照 1 的引用。
  • 快照 3 中包含了自从创建快照 2 以来的任何新增或更改的数据,但不包含快照 1 或 2 中任何未更改的数据。对于任何未更改的数据,快照 3 包含了对快照 1 和快照 2 中的磁盘块的引用。

永久性磁盘的所有后续快照都将重复此过程。系统始终是在上次成功获取的快照的基础上创建快照。

如何创建快照

快照删除

Compute Engine 使用增量快照,以使每个快照仅包含自上一个快照创建以来发生了更改的数据。对于未更改的数据,快照会引用以前快照中的数据。 系统仅会根据快照的总大小收取永久性磁盘快照的存储费用

当您删除快照后,Compute Engine 会立即在系统中将该快照标记为 DELETED。如果该快照没有任何依赖于它的快照,则系统会将其彻底删除。但是,如果该快照有其他依赖于它的快照,则会发生以下情况:

  1. 恢复其他快照所需的任何数据都会被移到下一个快照中,从而增加了下一个快照的大小。
  2. 恢复其他快照时不需要用到的任何数据都会被删除。这会减少所有快照的总大小。
  3. 下一个快照将不再引用已标记为删除的快照,而是引用它的上一个快照。

由于后续快照可能需要之前的快照中存储的信息,因此请注意,删除快照未必会删除该快照上的所有数据。如需彻底删除快照中的数据,您应当删除所有快照。

如果您的磁盘具有快照时间表,您必须先从磁盘中分离快照时间表,然后才能删除该时间表。从磁盘中移除快照时间表可以避免进一步的快照活动。 您无法删除已挂接到磁盘的时间表, 但您可以随时手动删除快照。

下图展示了此过程:

删除快照的流程。

快照大小和已删除的块

快照会捕获已写入和未舍弃的磁盘部分。根据磁盘文件系统配置,系统有时不会舍弃已删除的文件。如果发生这种情况,您可能会发现快照的大小大于文件系统报告的磁盘已用空间。为避免这种情况,最佳做法是在磁盘上启用 discard 选项或运行 fstrim

快照链

使用 gcloud 工具Compute Engine API,您可以通过指定快照 chainName,在不同的快照链创建快照。如果您使用链名称创建永久性磁盘的多个快照,则每个快照都会根据使用该链名称创建的最后一个成功快照递增。此功能为 Beta 版。只有在高级服务所有者需要创建单独的快照链(例如,进行退款跟踪)时,才应使用此字段。

快照存储位置

创建快照时,可以指定存储位置。快照的位置会影响其可用性,并且在创建快照或将其恢复到新磁盘时会产生网络费用

快照可存储在一个 Cloud Storage 多区域位置(例如 asia)或一个 Cloud Storage 区域位置(例如 asia-south1)。

多区域存储位置可提供更高的可用性,并有可能在创建或恢复快照时降低网络成本。例如,只要新的永久性磁盘是在多区域组的某个区域中创建的,通过存储在多区域位置的快照创建磁盘就不会产生网络成本。 区域存储位置可让您更好地控制数据实际所处的位置,因为您指定了单个区域。

无论快照的存储位置如何,快照都可用于在任何区域和地区中创建新磁盘。

如果您的组织政策包含资源位置限制条件,则您指定的任何快照存储位置都必须在该限制条件所定义的一组位置的范围内。如需了解详情,请参阅 Compute Engine 资源位置

如果未指定快照的存储位置,Google Cloud 将使用默认位置,在该位置中,快照将会存储在最靠近源磁盘区域的 Cloud Storage 多区域位置。如果需要选择区域存储,或者需要指定其他多区域位置,请将快照存储在自定义位置

默认位置

如果未指定存储位置,则快照将存储在地理位置最靠近永久性磁盘位置的多区域中。

例如,如果您的永久性磁盘存储在 us-central1 中,则默认情况下,您的快照存储在 us 多区域中。

但是,像 australia-southeast1 这样的默认位置不在多区域范围之内。最接近的多区域是 asia。创建或恢复快照将产生网络成本

选择默认位置来存储快照的一些示例用例包括下列各项:

  • 默认的多区域位置符合公司或政府的数据放置政策。
  • 您的永久性磁盘存储在默认多区域位置内的一个区域。例如,您的永久性磁盘位于 us-central1 区域,因此默认多区域是 us。在这种情况下,较高的快照可用性优先于快照恢复性能较慢的风险。
  • 您不希望快照频繁恢复到位于默认快照存储位置之外的磁盘。

自定义位置

如果需要将快照存储在某个区域位置,或者需要指定其他多区域位置,请选择自定义位置。

以下是选择自定义存储位置来存储快照的一些示例用例:

  • 自定义多区域位置符合公司或政府的数据放置政策。
  • 您的应用部署在一个区域内,而这个区域并未包含在某个 Cloud Storage 多区域位置中,您希望优先保证快照恢复性能而非快照可用性。
  • 从位于默认快照存储位置之外的磁盘多次恢复快照。

如果您需要遵守公司或政府的数据放置政策,请将快照存储在符合这些政策的最近区域位置。

如果您的应用未部署在多区域中,并且您希望优先保证较为低廉的网络费用而非快照高可用性,请将快照存储在来源磁盘所在的区域中。将快照存储在来源磁盘所在区域可以最大限度减少从来源磁盘恢复和创建快照时所需的网络成本。

但是,与多区域存储位置不同,区域存储位置不会跨多个数据中心以冗余的方式存储您的数据,因此一旦发生大规模中断,您的数据就可能无法访问。为确保数据的可用性,您可能还希望在第二个位置存储冗余快照。

网络费用

选择快照存储位置对于最大限度地减少网络费用至关重要。 如果将快照存储在与来源磁盘相同的区域中,则在从同一区域访问快照时不会收取网络费用。如果您从其他区域访问快照,则会产生网络费用。

如果来源磁盘的存储地理位置与其多区域相同,则不会产生网络费用。

例如,如果来源磁盘位于 asia-east1-a,您可以将快照存储在 asia-east1 区域或 asia 多区域。此时若您访问快照,则不会产生网络费用。

如果跨区域访问快照,则会产生网络费用。例如,如果您的来源磁盘位于 asia-east1 并且将快照存储在 asia-east2,那么当您在这两个区域之间访问快照时,将产生网络费用。

australia-southeast1southamerica-east1 这两个区域都有一个默认的多区域快照存储位置,除非您在创建快照时替换该默认位置,否则会产生网络费用:

  • 如果来源磁盘位于 australia-southeast1,则默认快照存储位置位于 asia 多区域。为了降低费用,请替换此默认位置,并将您的快照存储在 australia-southeast1 区域。
  • 如果来源磁盘位于 southamerica-east1,则默认快照存储位置位于 us 多区域。为了降低费用,请替换此默认位置,并将您的快照存储在 southamerica-east1 区域。

如果将快照恢复到其存储位置未涵盖的某个区域中的磁盘,则会产生网络费用。例如,如果您使用存储在 asia 多区域位置的一个快照,在 australia-southeast1 内创建了一个新的区域永久性磁盘,则会产生网络费用。

后续步骤