使用永久性磁盘快照

创建快照以定期备份可用区永久性磁盘区域永久性磁盘中的数据。

即使磁盘已挂接到了正在运行的实例上,您也可以为这些磁盘创建快照。快照是全局资源,因此您可以使用快照将数据恢复到同一项目内的新磁盘或实例。您还可以在多个项目之间共享快照

准备工作

创建快照

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

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

控制台

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

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

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 工具将等待操作返回 READYFAILED 状态,或者等待操作达到超时时间上限并返回快照最新的已知详细信息。

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

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

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

控制台

  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/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-ainstance-1 位于区域 us-west2-b

gcloud

  1. 创建 disk-1 的快照:

    gcloud compute disks snapshot disk-1 --project project-a --snapshot-names snapshot-1
    
  2. project-b 中创建基于该快照的新磁盘:

    gcloud compute disks create disk-2  --project project-b --source-snapshot projects/project-a/global/snapshots/snapshot-1
    
  3. 将新磁盘挂接到 project-b 中的实例 instance-1

    gcloud compute instances attach-disk instance-1 --project project-b --disk disk-2
    
  4. 装载该磁盘。请参阅格式化和装载永久性磁盘中的步骤 5-7。

API

  1. 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"
    }
    
  2. 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-standardpd-ssdpd-balanced
  3. 将新磁盘挂接到 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"
    }
    
  4. 装载该磁盘。请参阅格式化和装载永久性磁盘中的步骤 5-7。

如需获取可用的快照列表,请参阅列出快照

恢复快照

如需将快照的内容恢复到新磁盘,您可以执行以下操作:

  • 通过快照创建新的永久性磁盘:创建一个新的磁盘,并选择快照作为来源

  • 通过快照创建新实例:创建新实例时,您可以使用快照为该实例创建启动磁盘和数据磁盘。如果发生中断,您可以将一个或多个快照恢复到新实例上的新永久性磁盘,从而快速恢复数据。如需了解详情,请参阅通过快照创建实例

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

新永久性磁盘的大小至少应与快照最初的来源磁盘的大小相同。如果您创建的永久性磁盘容量大于快照最初的来源磁盘,则必须调整该永久性磁盘上的文件系统大小才能添加额外的磁盘空间。

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

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

控制台

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

    转到“快照”

  2. 找到要恢复的快照的名称。

  3. 转到磁盘页面。

    转到“磁盘”页面

  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 使用增量快照,以使每个快照仅包含自上一个快照创建以来发生了更改的数据。由于后续快照可能需要之前的快照中存储的信息,因此请注意,删除快照未必会删除该快照上的所有数据。如需详细了解快照删除,请参阅快照删除

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

控制台

  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 是要删除的快照的名称。

列出快照

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 是快照的名称。

后续步骤