创建永久性磁盘快照

创建快照以定期备份地区永久性磁盘区域永久性磁盘中的数据。为了降低数据意外丢失的风险,请考虑执行设置快照时间表的最佳做法,以确保按照时间表定期备份数据。

如果要删除快照,或者要通过快照将数据恢复到永久性磁盘,请参阅恢复和删除永久性磁盘快照

准备工作

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

快照是增量式并且自动压缩的,因此比起定期创建磁盘的完整映像,您在创建永久性磁盘的定期快照时可以速度更快且费用低得多。增量快照的工作方式如下:

  • 永久性磁盘的第一个成功快照是一个完整的快照,其中包含了该永久性磁盘上的所有数据。
  • 第二个快照仅包含自从创建第一个快照以来的任何新增或修改的数据。自创建快照 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)。

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

如果您的组织政策包含资源位置限制条件,则您指定的任何快照存储位置都必须在该限制条件所定义的一组位置的范围内。如需了解详情,请参阅 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 内创建了一个新的区域永久性磁盘,则会产生网络费用。

创建快照

在准备创建永久性磁盘快照时,请执行以下操作:

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

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

控制台

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

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

gcloud

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

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

    gcloud compute disks snapshot [DISK_NAME]
    

    其中:

    • [DISK_NAME] 是您要从中创建快照的地区永久性磁盘的名称。
  • 或者,如需在自定义存储位置创建快照,请使用 --storage-location 标志指示存储快照的位置:

    gcloud compute disks snapshot [DISK_NAME] \
        --storage-location [STORAGE_LOCATION]
    

    其中:

    • [DISK_NAME] 是您要从中创建快照的地区永久性磁盘的名称。
    • [STORAGE_LOCATION] 是您要存储快照的 Cloud Storage 多区域Cloud Storage 区域。请注意,您只能指定一个存储位置。

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

API

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

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

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

    其中:

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

    POST https://compute.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 区域。请注意,您只能指定一个存储位置。

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

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

控制台

  1. 在 Google Cloud Console 中,转到快照页面。
    转到“快照”页面
  2. 输入快照名称
  3. (可选)输入快照的说明
  4. 来源磁盘下方,选择要从中创建快照的现有磁盘。
  5. 或者,您可以选择指定自定义存储位置

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

gcloud

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

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

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

    其中:

    • [DISK_NAME] 是您要从中创建快照的区域永久性磁盘的名称。
    • [REGION] 是区域永久性磁盘所在的区域。
  • 或者,您可以选择指定自定义存储位置

    gcloud 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://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/createSnapshot
    

    其中:

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

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

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [REGION] 是区域永久性磁盘所在的区域。
    • [DISK_NAME] 是您要从中创建快照的区域永久性磁盘的名称。
    • [STORAGE_LOCATION] 是您要存储快照的 Cloud Storage 多区域Cloud Storage 区域。请注意,您只能指定一个存储位置。

后续步骤