创建快照以定期备份可用区永久性磁盘或区域永久性磁盘中的数据。
即使磁盘已挂接到了正在运行的实例上,您也可以为这些磁盘创建快照。快照是全局资源,因此您可以使用快照将数据恢复到同一项目内的新磁盘或实例。您还可以在多个项目之间共享快照。
准备工作
- 如果您要使用本指南中的命令行示例,请执行以下操作:
- 安装或更新到 gcloud 命令行工具的最新版本。
- 设置默认区域和可用区。
- 如果您要使用本指南中的 API 示例,请设置 API 访问权限。
创建快照
如需准备创建永久性磁盘快照,请执行以下操作:
查看永久性磁盘快照的最佳做法以准备磁盘来创建快照。
阅读创建永久性磁盘快照时间表,了解如何创建快照时间表并将其附加到磁盘。 使用计划快照定期备份磁盘可以降低数据意外丢失的风险。
创建地区永久性磁盘的快照
控制台
- 转到 Google Cloud Console 中的创建快照页面。
转到“创建快照”页面 - 在名称部分中,输入快照名称。
- (可选)输入快照的说明。
- 从下拉菜单中选择源磁盘。
决定快照的存储位置。您可以使用默认存储位置或自定义存储位置。
- 在位置下,选择是要将快照存储在多区域位置还是区域位置。
- 选择要使用的特定区域或多区域。要使用距离来源磁盘最近的区域或多区域,请选择基于磁盘的位置(默认)。
点击创建以创建快照。
gcloud
在默认存储位置或选定的存储位置创建快照。(可选)您可以使用 --snapshot-names
标志指定快照名称。默认快照名称是一个以字母开头的 12 个字符组成的随机字母数字字符串。
如需在默认存储位置创建地区级永久性磁盘的快照,请使用
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
工具将等待操作返回 READY
或 FAILED
状态,或者等待操作达到超时时间上限并返回快照最新的已知详细信息。
API
在默认存储位置或选定的存储位置创建快照。(可选)您可以使用 name
字段指定快照名称。默认快照名称是一个以字母开头的 12 个字符组成的随机字母数字字符串。
如需在默认存储位置中创建快照,请向
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 区域。请注意,您只能指定一个存储位置。
创建区域永久性磁盘的快照
准备好磁盘之后,便可以创建快照。创建区域永久性磁盘的快照时,必须指出磁盘所在的区域。
控制台
- 转到 Google Cloud Console 中的创建快照页面。
转到“创建快照”页面 - 在名称部分中,输入快照名称。
- (可选)输入快照的说明。
- 在来源磁盘下方,选择要从中创建快照的现有磁盘。
或者,您可以选择指定自定义存储位置:
- 在位置下,选择是要将快照存储在多区域位置还是区域位置。
- 选择要使用的特定区域或多区域。要使用距离源磁盘最近的区域或多区域,请选择基于磁盘的位置。
点击创建以创建快照。
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
命令行工具将等待操作返回READY
或FAILED
状态,或者等待操作达到超时时间上限并返回快照最新的已知详细信息。
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/VAR/disks/DISK_NAME/createSnapshot { "storageLocations": STORAGE_LOCATION }
其中:
- PROJECT_ID 是您的项目 ID。
- REGION 是区域永久性磁盘所在的区域。
- DISK_NAME 是您要从中创建快照的地区永久性磁盘的名称。
- STORAGE_LOCATION 是您要存储快照的 Cloud Storage 多区域或 Cloud Storage 区域。请注意,您只能指定一个存储位置。
跨项目共享快照
如需跨项目移动磁盘数据,请与其他项目中的用户共享磁盘的快照。例如,如需将数据从 project-a
中的 disk-1
磁盘移动到 project-b
中的新磁盘 disk-2
,请按照以下步骤操作。在此示例中,disk-1
位于区域 us-west2-a
,instance-1
位于区域 us-west2-b
。
gcloud
创建
disk-1
的快照:gcloud compute disks snapshot disk-1 --project project-a --snapshot-names snapshot-1
在
project-b
中创建基于该快照的新磁盘:gcloud compute disks create disk-2 --project project-b --source-snapshot projects/project-a/global/snapshots/snapshot-1
将新磁盘挂接到
project-b
中的实例instance-1
。gcloud compute instances attach-disk instance-1 --project project-b --disk disk-2
装载该磁盘。请参阅格式化和装载永久性磁盘中的步骤 5-7。
API
向
disks.createSnapshot
方法发出POST
请求,以创建disk-1
的快照。POST https://compute.googleapis.com/compute/v1/projects/project-a/zones/us-west2-a/disks/disk-1/createSnapshot { "name": "snapshot-1" }
在
project-b
中创建基于该快照的新磁盘disk-2
。使用disks.insert
方法构建POST
请求以创建区域永久性磁盘。POST https://compute.googleapis.com/compute/v1/projects/project-b/zones/us-west2-b/disks { "name": "disk-2", "type": "zones/us-west2-b/diskTypes/DISK_TYPE" "sourceSnapshot": "projects/project-a/global/snapshots/snapshot-1" }
请替换以下内容:
- DISK_TYPE:永久性磁盘的类型,即
pd-standard
、pd-ssd
或pd-balanced
。
- DISK_TYPE:永久性磁盘的类型,即
将新磁盘挂接到
project-b
中的实例instance-1
。该磁盘必须与该实例位于同一地区中:构建一个向instances.attachDisk
方法发出的POST
请求,并在其中添加您刚创建的地区永久性磁盘的网址。POST https://compute.googleapis.com/compute/v1/projects/project-b/zones/us-west2-b/instances/instance-1/attachDisk { "source": "/compute/v1/projects/project-b/zones/us-west2-b/disks/disk-2" }
装载该磁盘。请参阅格式化和装载永久性磁盘中的步骤 5-7。
如需获取可用的快照列表,请参阅列出快照。
恢复快照
如需将快照的内容恢复到新磁盘,您可以执行以下操作:
通过快照创建新的永久性磁盘:创建一个新的磁盘,并选择快照作为来源。
通过快照创建新实例:创建新实例时,您可以使用快照为该实例创建启动磁盘和数据磁盘。如果发生中断,您可以将一个或多个快照恢复到新实例上的新永久性磁盘,从而快速恢复数据。如需了解详情,请参阅通过快照创建实例。
通过快照创建新的永久性磁盘
新永久性磁盘的大小至少应与快照最初的来源磁盘的大小相同。如果您创建的永久性磁盘容量大于快照最初的来源磁盘,则必须调整该永久性磁盘上的文件系统大小才能添加额外的磁盘空间。
您可以通过给定快照创建新的地区永久性磁盘(每十分钟最多创建一次)。如果您想要发出大量截取磁盘快照的请求,可以在 60 分钟内发出最多 6 个请求。通过快照创建区域永久性磁盘时,此限制不适用。如需了解详情,请参阅快照频率限制。
您可能需要使用其他文件系统大小调整工具,具体取决于您的操作系统和文件系统类型。如需了解详情,请参阅操作系统文档。
控制台
gcloud
使用
gcloud compute snapshots list
命令找到要恢复的快照的名称:gcloud compute snapshots list
使用
gcloud compute snapshots describe
命令找到要恢复的快照的大小:gcloud compute snapshots describe SNAPSHOT_NAME
将 SNAPSHOT_NAME 替换为要恢复的快照的名称。
使用
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
构建对
snapshots.list
的GET
请求,以在您的项目中显示快照列表。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots
将 PROJECT_ID 替换为您的项目 ID。
使用
disks.insert
方法构建POST
请求以创建地区永久性磁盘。为它包含name
、sizeGb
和type
属性。如需使用快照恢复磁盘,您必须添加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:要恢复的磁盘的来源快照。
(可选)您随后可以将新磁盘挂接到现有实例。
控制台
- 转到虚拟机实例页面。
- 点击要在其中恢复非启动磁盘的实例的名称。
- 在实例详情页面顶部,点击修改。
- 在额外磁盘下,点击挂接现有磁盘。
- 选择基于快照创建的新磁盘的名称。
- 点击完成以挂接磁盘。
- 在实例详情页面的底部,点击保存以将更改应用于实例。
gcloud
使用
gcloud compute instances attach-disk
命令将永久性磁盘挂接到实例上:gcloud compute instances attach-disk INSTANCE_NAME \ --disk DISK_NAME
其中:
- INSTANCE_NAME 是实例的名称。
- DISK_NAME 是通过快照创建的磁盘的名称。
API
构建一个对
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 使用增量快照,以使每个快照仅包含自上一个快照创建以来发生了更改的数据。由于后续快照可能需要之前的快照中存储的信息,因此请注意,删除快照未必会删除该快照上的所有数据。如需详细了解快照删除,请参阅快照删除。
要删除快照,请执行以下操作:
控制台
- 在 Google Cloud Console 中,转到快照页面。
- 选择要删除的一个或多个快照。
- 点击快照页面顶部的删除。
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 是要删除的快照的名称。
列出快照
gcloud
如需查看特定项目中可供您使用的快照的列表,请使用 gcloud compute snapshots list
命令。
gcloud compute snapshots list --project PROJECT_ID
其中,PROJECT_ID 是项目的 ID。
API
如需查看特定项目中可供您使用的快照的列表,请向 snapshots.list
方法发出 GET
请求:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots
其中,PROJECT_ID 是项目的 ID。
查看有关快照的信息
如需列出特定快照的相关信息(例如创建时间、大小和来源磁盘),请使用 gcloud compute snapshots describe
命令:
gcloud compute snapshots describe SNAPSHOT_NAME
其中,SNAPSHOT_NAME 是快照的名称。
后续步骤
- 了解如何为永久性磁盘创建快照时间表。
- 了解如何从快照创建磁盘映像。