恢复和删除永久性磁盘快照

使用快照可以通过增量方式备份永久性磁盘中的数据。如需了解如何创建快照,请参阅创建永久性磁盘快照。 创建快照后,您可以使用快照将永久性启动磁盘或永久性非启动磁盘恢复到某个时间点快照截取的先前状态。

使用快照时间表备份数据是管理工作负载以及尽量降低数据丢失所造成的影响的有效最佳做法。

您可以通过快照和映像创建新磁盘。映像最适合创建托管实例组 (MIG) 以及为新实例创建多个同质启动磁盘。快照最适合备份和恢复永久性磁盘。

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

准备工作

列出快照

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

gcloud compute snapshots list

如需列出特定快照的相关信息,请使用 gcloud compute snapshots describe 命令:

gcloud compute snapshots describe [SNAPSHOT_NAME]

其中,[SNAPSHOT_NAME] 是您要描述的快照的名称。

通过快照创建新的永久性磁盘

您可以将快照的内容恢复到永久性磁盘。

新永久性磁盘的大小至少应与快照最初的来源磁盘的大小相同。如果您创建的永久性磁盘容量大于快照最初的来源磁盘,则必须在实例中额外运行一些命令,以便分区可以使用额外的空间。

您可以通过给定快照创建新的地区永久性磁盘(每十分钟最多创建一次)。如果您想要发出大量截取磁盘快照的请求,可以在 60 分钟内发出最多 6 个请求。通过快照创建区域永久性磁盘时,此限制不适用。如需了解详情,请参阅快照频率限制

您可能需要使用其他文件系统大小调整工具,具体取决于您的操作系统和文件系统类型。如需了解详情,请参阅操作系统文档。

将永久性磁盘的快照恢复到新磁盘

控制台

  1. 在 Google Cloud Console 中,转到快照页面。

    转到“快照”页面

  2. 找到要恢复的快照的名称。
  3. 转到 Google Cloud Console 中的磁盘页面。

    转到“磁盘”页面

  4. 点击创建新磁盘
  5. 指定以下配置参数:
    • 磁盘的名称。
    • 磁盘的类型。
    • (可选)您可以覆盖所选的默认区域和地区。 您可以选择任何区域和地区,无论来源快照存储在什么位置。
  6. 来源类型下方,点击快照
  7. 选择要恢复的快照的名称。
  8. (可选)选择磁盘大小(以 GB 为单位)。此数字必须等于或大于快照最初的来源磁盘大小。如果未指定此值,新磁盘的大小将与快照最初的来源磁盘大小相同。
  9. 点击创建以创建磁盘。

gcloud

  1. 使用 gcloud compute snapshots list 命令查找要恢复的快照的名称:

    gcloud compute snapshots list
    
  2. 使用 gcloud compute snapshots describe 命令查找要恢复的快照的大小:

    gcloud compute snapshots describe [SNAPSHOT_NAME]
    

    其中,[SNAPSHOT_NAME] 是要恢复的快照的名称。

  3. 使用 gcloud compute disks create 命令基于您的快照创建新的区域地区永久性磁盘。如果您需要使用 SSD 永久性磁盘来实现更高的吞吐量或 IOPS,请添加 --type 标志并指定 pd-ssd

    gcloud compute disks create [DISK_NAME] \
        --size [DISK_SIZE] \
        --source-snapshot [SNAPSHOT_NAME] \
        --type [DISK_TYPE]
    

    其中:

    • [DISK_NAME] 是新磁盘的名称。
    • [DISK_SIZE] 是以 GB 为单位的新磁盘大小。此数字必须等于或大于快照最初的来源磁盘大小。
    • [SNAPSHOT_NAME] 是要恢复的快照的名称。
    • [DISK_TYPE] 是永久性磁盘的类型。例如 pd-ssd

API

  1. 构建对 snapshots.listGET 请求,以在您的项目中显示快照列表。

    GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/snapshots
    

    其中,[PROJECT_ID] 是您的项目 ID。

  2. 使用 disks.insert 方法构建 POST 请求以创建地区永久性磁盘。为它包含 namesizeGbtype 属性。如需使用快照恢复磁盘,您必须添加 sourceSnapshot 属性。

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks
    
    {
     "name": "[DISK_NAME]",
     "sizeGb": "[DISK_SIZE]",
     "type": "zones/[ZONE]/diskTypes/[DISK_TYPE]"
     "sourceSnapshot": "[SNAPSHOT_NAME]"
    }
    

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [ZONE] 是您的实例和新磁盘所在的地区。
    • [DISK_NAME] 是新磁盘的名称。
    • [DISK_SIZE] 是以 GB 为单位的新磁盘大小。
    • [DISK_TYPE] 是永久性磁盘的类型。例如 pd-ssd
    • [SNAPSHOT_NAME] 是要恢复的磁盘的源快照。

将新磁盘挂接到现有实例 [可选]

控制台

  1. 转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击要在其中恢复非启动磁盘的实例的名称。
  3. 在实例详情页面顶部,点击修改
  4. 额外磁盘下,点击挂接现有磁盘
  5. 选择基于快照创建的新磁盘的名称。
  6. 点击完成以挂接磁盘。
  7. 在实例详情页面的底部,点击保存以将更改应用于实例。

gcloud

  1. 使用 gcloud compute instances attach-disk 命令将永久性磁盘挂接到实例上:

    gcloud compute instances attach-disk [INSTANCE_NAME] \
        --disk [DISK_NAME]
    

    其中:

    • [INSTANCE_NAME] 是实例的名称。
    • [DISK_NAME] 是通过快照创建的磁盘的名称。

API

  1. 构建一个对 instances.attachDisk 方法的 POST 请求,并在其中添加您刚刚基于快照创建的地区永久性磁盘的网址。

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk
    
    {
     "source": "/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/[DISK_NAME]"
    }
    

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [ZONE] 是您的实例和新磁盘所在的地区。
    • [INSTANCE_NAME] 是您要在其中添加新永久性磁盘的实例的名称。
    • [DISK_NAME] 是新磁盘的名称。

创建新磁盘并将其挂接到实例后,您必须装载该磁盘,以便操作系统可以使用可用的存储空间。

如果磁盘大于快照大小,则需要调整该永久性磁盘上的文件系统大小,以包含额外的磁盘空间。

通过快照创建新的虚拟机实例磁盘

创建新实例时,您可以使用快照为该实例创建启动磁盘和数据磁盘。如果发生服务中断,您可以将一个或多个永久性磁盘快照恢复到新实例上的新永久性磁盘,从而快速恢复数据。

如需了解详情,请参阅使用永久性磁盘快照创建实例

删除快照

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

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

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

由于后续快照可能需要之前的快照中存储的信息,因此请注意,删除快照未必会删除该快照上的所有数据。 如果在恢复后续快照时需要用到已标记为删除的快照上的任何数据,则这些数据将会转移到下一个相应的快照中。 如需彻底删除快照中的数据,您应当删除所有快照。

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

下面的图表展示了前文所述的流程:

删除快照的流程。

要删除快照,请执行以下操作:

控制台

  1. 在 Google Cloud Console 中,转到快照页面。

    转到“快照”页面

  2. 选择要删除的一个或多个快照。
  3. 点击快照页面顶部的删除

gcloud

如需删除某个快照,请使用 gcloud compute snapshots delete 命令:

gcloud compute snapshots delete [SNAPSHOT_NAME]

其中,[SNAPSHOT_NAME] 是要删除的快照的名称。

API

compute.snapshots.delete 发出 DELETE 请求以删除快照。

DELETE https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/snapshots/[SNAPSHOT_NAME]

其中:

  • [PROJECT_ID] 是您的项目的名称。
  • [SNAPSHOT_NAME] 是要删除的快照的名称。

后续步骤