创建永久性磁盘快照

创建快照以定期备份地区永久性磁盘区域永久性磁盘中的数据。如果要删除快照,或者要通过快照将数据恢复到永久性磁盘,请参阅恢复和删除永久性磁盘快照

准备工作

执行此任务所需的权限

要执行此任务,您必须拥有以下权限

  • 对实例执行 compute.disks.createSnapshot 的权限
  • 对实例执行 compute.snapshots.delete 的权限

即使磁盘已挂接到了正在运行的实例上,您也可以为这些磁盘创建快照。快照是全局资源,因此同一项目内任何资源都可以访问任何快照。您还可以跨项目共享快照。请注意,快照与公开映像自定义映像不同,后者主要用于创建实例的启动磁盘或配置实例模板的启动磁盘。

快照是增量式的,并且会自动压缩,因此与定期创建磁盘的完整映像相比,通过永久性磁盘创建定期快照的快速更快,而且费用低得多。增量快照的工作方式如下:

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

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

描述如何创建快照的图表

Compute Engine 在多个位置存储每个快照的多个副本,并利用自动校验和来确保数据完整性。可使用 IAM 角色在多个项目之间共享快照。

要查看可供项目使用的快照的列表,请使用 gcloud compute snapshots list 命令:

gcloud compute snapshots list

要列出特定快照的相关信息(例如创建时间、大小和源磁盘),请使用 gcloud compute snapshots describe 命令:

gcloud compute snapshots describe [SNAPSHOT_NAME]

其中 [SNAPSHOT_NAME] 是您要查看其快照信息的快照名称。

选择快照的存储位置

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

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

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

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

默认位置

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

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

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

以下是选择默认位置来存储快照的一些示例用例:

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

自定义位置

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

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

  • 自定义多区域位置符合公司或政府的数据放置政策。
  • 您的应用部署在一个不属于任何 Cloud Storage 多区域位置的区域中,并且您希望优先考虑快照恢复性能而不是快照可用性。
  • 从位于默认快照存储位置之外的磁盘多次恢复快照。

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

如果您的应用未部署在属于多区域的位置中,并且您希望优先考虑低网络成本而不是高快照可用性,请将快照存储在源磁盘所在的区域中。这将最大程度地降低从该源磁盘恢复和创建快照的网络成本。

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

网络成本

在以下情况下,创建源磁盘的快照以及通过快照创建新磁盘可能会产生网络成本

  • 在不同于源磁盘所在区域的区域中创建快照时。例如,通过位于 us-west1 的磁盘在 asia-south1 中创建快照会产生网络成本,因为数据从一个区域移到另一个区域。

  • 在不包括源磁盘所在区域的多区域位置中创建快照时。例如,通过位于 us-west1 的磁盘在 asia 多区域位置中创建快照将会产生网络成本。

  • 将快照恢复到不属于快照存储位置的区域中的磁盘时。例如,如果您通过存储在 asia 这个多区域位置的快照在 australia-southeast1 中创建新的区域永久性磁盘,则会产生网络成本。

创建快照

查看永久性磁盘快照的最佳做法以准备磁盘来创建快照。

如需有关如何为已使用您自己的加密密钥进行加密的磁盘创建快照的说明,请参阅为经过加密的磁盘创建快照

如需有关如何创建 Windows 永久性磁盘快照的说明,请参阅创建 Windows 永久性磁盘快照

创建地区永久性磁盘的快照

准备好磁盘之后,便可以创建快照。按照以下步骤截取地区永久性磁盘的快照。如果要使用的永久性磁盘位于多个区域中,请按照创建区域永久性磁盘快照的说明进行操作。

Console

  1. 转到 Google Cloud Platform Console 中的快照页面。
    转到“快照”页面
  2. 在页面顶部,点击创建快照
  3. 输入快照名称
  4. (可选)输入快照的说明
  5. 从下拉菜单中选择源磁盘
  6. 决定快照的存储位置。您可以使用默认存储位置自定义存储位置

    1. 位置下,选择是要将快照存储在多区域位置还是区域位置。
    2. 选择要使用的特定区域或多区域。要使用距离源磁盘最近的区域或多区域,请选择基于磁盘的位置
  7. 点击创建以创建快照。

gcloud

在默认存储位置或选定的存储位置创建快照。

  • 要在默认存储位置创建地区永久性磁盘的快照,请使用 gcloud compute disks snapshot 命令:

    gcloud compute disks snapshot [DISK_NAME]
    

    其中:

    • [DISK_NAME] 是您要从中创建快照的地区永久性磁盘的名称。
  • 或者,要在自定义存储位置创建快照,请使用 gcloud beta compute disks snapshot 命令和 storage-location 标志来指出存储快照的位置:

    gcloud beta compute disks snapshot [DISK_NAME] --storage-location=[STORAGE_LOCATION]
    

    其中:

gcloud 命令行工具将等待,直到该操作返回一个 READYFAILED 状态,或者达到超时时间上限并返回快照的最后已知详细信息。

API

在默认存储位置或选定的存储位置创建快照。

  • 要在默认存储位置创建快照,请对 disks.createSnapshot 方法发出 POST 请求:

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/[DISK_NAME]/createSnapshot
    

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [ZONE] 是您的实例和磁盘所在的地区。
    • [DISK_NAME] 是您要从中创建快照的地区永久性磁盘的名称。
  • 或者,要在自定义存储位置创建快照,请对 disks.createSnapshot 方法发出 POST 请求并指定存储位置:

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/[DISK_NAME]/createSnapshot
    {
      “storageLocations”: "[STORAGE_LOCATION]"
    }
    

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [ZONE] 是您的实例和磁盘所在的地区。
    • [DISK_NAME] 是您要从中创建快照的地区永久性磁盘的名称。
    • [STORAGE_LOCATION] 是您要存储快照的 Cloud Storage 多区域Cloud Storage 区域

创建区域永久性磁盘的快照

准备好磁盘之后,便可以创建快照。创建区域永久性磁盘的快照时,必须指出磁盘所在的区域。

Console

  1. 转到 Google Cloud Platform Console 中的快照页面。
    转到“快照”页面
  2. 输入快照名称
  3. (可选)输入快照的说明
  4. 来源磁盘下方,选择要从中创建快照的现有磁盘。
  5. 跳过此步骤以使用默认快照存储位置。否则,要使用自定义存储位置

    1. 位置下,选择是要将快照存储在多区域位置还是区域位置。
    2. 选择要使用的特定区域或多区域。要使用距离源磁盘最近的区域或多区域,请选择基于磁盘的位置
  6. 点击创建以创建快照。

gcloud

在默认存储位置或选定的存储位置创建快照。

  • 要在默认存储位置创建地区永久性磁盘的快照,请使用 gcloud beta compute disks snapshot 命令:

    gcloud beta compute disks snapshot [DISK_NAME] --region [REGION]
    

    其中:

    • [DISK_NAME] 是您要从中创建快照的地区永久性磁盘的名称。
    • [REGION] 是区域永久性磁盘所在的区域。
  • 或者,要在自定义存储位置创建快照,请使用 gcloud beta compute disks snapshot 命令和 storage-location 标志来指出存储快照的位置:

    gcloud beta compute disks snapshot [DISK_NAME] --region [REGION] --storage-location=[STORAGE_LOCATION]
    

    其中:

    • [DISK_NAME] 是您要从中创建快照的地区永久性磁盘的名称。
    • [REGION] 是区域永久性磁盘所在的区域。
    • [STORAGE_LOCATION] 是您要存储快照的 Cloud Storage 多区域Cloud Storage 区域

    gcloud 命令行工具将等待,直到该操作返回一个 READYFAILED 状态,或者达到超时时间上限并返回快照的最后已知详细信息。

API

  • 要在默认存储位置创建快照,请对 regionDisk.createSnapshot 方法发出 POST 要求:

    POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/createSnapshot
    

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [REGION] 是区域永久性磁盘所在的区域。
    • [DISK_NAME] 是您要对其截取快照的磁盘的名称。
  • 或者,要在自定义存储位置创建快照,请对 regionDisk.createSnapshot 方法发出 POST 要求并指定储存位置:

    POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/createSnapshot
    {
     “storageLocations”: "[STORAGE_LOCATION]"
    }
    

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [REGION] 是区域永久性磁盘所在的区域。
    • [DISK_NAME] 是您要从中创建快照的地区永久性磁盘的名称。
    • [STORAGE_LOCATION] 是您要存储快照的 Cloud Storage 多区域Cloud Storage 区域

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档