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

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

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

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

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

gcloud compute snapshots list

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

gcloud compute snapshots describe [SNAPSHOT_NAME]

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

准备工作

根据快照创建新的虚拟机实例启动磁盘

如果发生中断,您可以将一个或多个永久性磁盘快照恢复到新实例上的新永久性磁盘,从而快速恢复数据。 创建该实例时,您可以将启动磁盘快照恢复到启动磁盘,或是将非启动快照恢复到新的其他磁盘,或者同时执行这两类操作。

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

使用非启动快照创建新的永久性磁盘

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

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

如需将非启动永久性磁盘的快照恢复到现有实例上的新磁盘,请执行以下操作:

控制台

  1. 转到 Google Cloud Platform Console 中的快照页面。

    转到“快照”页面

  2. 找到要恢复的快照的名称。
  3. 转到虚拟机实例页面。

    转到“虚拟机实例”页面

  4. 点击要在其中恢复非启动磁盘的实例的名称。
  5. 在实例详情页面顶部,点击修改
  6. 额外磁盘下,点击添加新磁盘。
  7. 指定以下配置参数:
    • 磁盘的名称。
    • 磁盘的类型。所选类型应与用于快照的类型匹配。
  8. 来源类型下方,点击快照。
  9. 选择要恢复的快照的名称。
  10. (可选)选择磁盘大小(以 GB 为单位)。此数字必须等于或大于快照最初的来源磁盘大小。如果未指定此值,新磁盘的大小将与快照最初的来源磁盘大小相同。
  11. 点击完成以创建磁盘。
  12. 在实例详情页面底部,点击保存以将更改应用到实例并挂接新磁盘。

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-standardpd-ssd
  4. 使用 gcloud compute instances attach-disk 命令将永久性磁盘附加到实例:

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

    其中:

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

API

使用快照恢复永久性非启动磁盘。

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

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

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

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

    POST https://www.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-standardpd-ssd
    • [SNAPSHOT_NAME] 是要恢复的磁盘的源快照。
  3. 构建一个向 instances.attachDisk 方法发出的 POST 请求,并在其中添加您刚创建的地区永久性磁盘的网址。

    POST https://www.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 Platform Console 中的快照页面。

    转到“快照”页面

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

gcloud

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

gcloud compute snapshots delete [SNAPSHOT_NAME]

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

API

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

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

其中:

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

后续步骤

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

发送以下问题的反馈:

此网页
Compute Engine 文档