创建和管理即时快照


本文档介绍如何创建和管理即时快照。 即时快照可捕获磁盘的内容,并可用于在几分钟内创建新磁盘。

即时快照与其来源磁盘存储在同一可用区或区域中,并且不可用于替代标准快照,后者提供用于灾难恢复的异地备份。了解 Compute Engine 中提供的其他数据保护选项

如需访问即时快照中的数据,请使用即时快照创建新磁盘

如果要将即时快照复制到其他位置,或者在删除源磁盘后保留快照数据,请根据即时快照创建标准快照

准备工作

  • 查看即时快照限制,确保即时快照适合您的用例。
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色和权限

如需获得创建即时快照所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含创建即时快照所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建即时快照需要以下权限:

  • 如需创建即时快照,请执行以下操作: compute.instantSnapshots.create
  • 如需查看即时快照,请执行以下操作: compute.instantSnapshots.list
  • 如需查看即时快照详情,请执行以下操作: compute.instantSnapshots.get
  • 如需删除即时快照,请执行以下操作: compute.instantSnapshots.delete

您也可以使用自定义角色或其他预定义角色来获取这些权限。

创建永久性磁盘卷的即时快照

可用区级磁盘的即时快照存储在与来源磁盘相同的可用区中。同样,区域级磁盘的即时快照存储在与磁盘相同的区域中。

您可以使用 gcloud CLI、Google Cloud 控制台或 REST 创建可用区级或区域级 Persistent Disk 卷的即时快照。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 选择要使用的项目。

  3. 名称列中,点击要备份的磁盘挂接到的虚拟机的名称。

  4. 存储部分,通过以下方式之一选择磁盘:

    • 如需备份虚拟机的启动磁盘,请在启动磁盘部分中点击启动磁盘的名称
    • 如需备份挂接的永久性磁盘卷,请在额外磁盘部分中点击挂接永久性磁盘卷的名称
  5. 如需完成即时快照的创建,请在创建快照页面上执行以下操作:

    1. 名称字段中,输入用于标识即时快照的唯一名称。
    2. 可选:在说明字段中添加有关快照的更多详细信息。
    3. 类型字段中,选择即时快照位置字段会自动设置为与磁盘相同的可用区或区域。
    4. 快照来源类型字段中,确认已选中磁盘
    5. 可选:如需整理项目,请添加一个或多个标签
    6. 点击创建

gcloud

如需创建即时快照,请使用 gcloud compute instant-snapshots create 命令:

可用区级磁盘

创建可用区级磁盘的即时快照:

 gcloud compute instant-snapshots create INSTANT_SNAPSHOT_NAME \
   --source-disk=SOURCE_DISK_NAME \
   --zone=SOURCE_DISK_ZONE
 

替换以下内容:

  • INSTANT_SNAPSHOT_NAME:即时快照的唯一名称。
  • SOURCE_DISK_NAME:来源磁盘的名称。
  • SOURCE_DISK_ZONE:来源磁盘的可用区。即时快照将在同一可用区中创建。

区域级磁盘

创建区域级磁盘的即时快照:

 gcloud compute instant-snapshots create INSTANT_SNAPSHOT_NAME \
   --source-disk=SOURCE_DISK_NAME \
   --region=SOURCE_DISK_REGION
 

替换以下内容:

  • INSTANT_SNAPSHOT_NAME:即时快照的唯一名称。
  • SOURCE_DISK_NAME:来源磁盘的名称。
  • SOURCE_DISK_REGION:来源磁盘的区域。即时快照将在同一区域中创建。

REST

如需创建即时快照,请向 instantSnapshots.insert 方法发出 POST 请求。

  • 创建可用区级磁盘的即时快照:

    POST 请求的网址中指定可用区。在请求正文中,指定新快照的名称和来源磁盘的网址。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/DISK_ZONE/instantSnapshots
    {
     "name": "INSTANT_SNAPSHOT_NAME",
     "sourceDisk": "projects/PROJECT_ID/zones/DISK_ZONE/disks/SOURCE_DISK_NAME"
    }
    

    将以下变量替换为相应值:

    • PROJECT_ID:包含磁盘的项目的名称。
    • DISK_ZONE:磁盘所在的可用区。即时快照将在此可用区中创建。
    • INSTANT_SNAPSHOT_NAME:即时快照的唯一名称。
    • SOURCE_DISK_NAME:来源磁盘的名称。
  • 创建区域级磁盘的即时快照:

    POST 请求的网址中指定区域。在请求正文中包含新快照的名称和来源磁盘。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/DISK_REGION/instantSnapshots
    {
      "name": "INSTANT_SNAPSHOT_NAME",
      "sourceDisk": "projects/PROJECT_ID/regions/DISK_REGION/disks/SOURCE_DISK_NAME"
    }
    

    将请求正文中的以下变量替换为相应的值:

    • PROJECT_ID:包含磁盘的项目的名称。
    • DISK_REGION:来源磁盘所在的区域。快照将在同一区域中创建。
    • INSTANT_SNAPSHOT_NAME:快照的唯一名称。
    • SOURCE_DISK_NAME:来源磁盘的名称。

请求响应

如果 POST 请求成功,则响应正文将是一个对象,您可以轮询该对象以获取即时快照的创建状态。如需了解详情,请参阅处理 API 响应

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

如需恢复使用即时快照备份的数据,请根据即时快照创建新磁盘

查看某个项目或位置中的即时快照

您可以使用 gcloud CLI、Google Cloud 控制台或 REST 查看项目或位置中的所有即时快照的列表。

控制台

  1. 在 Google Cloud 控制台中,转到快照页面。

    转到“快照”页面

  2. 点击即时快照标签页。此时会显示即时快照的列表。

  3. 可选:使用 filter_list 过滤条件字段缩小结果范围。在 filter_list 过滤条件字段中输入属性名称或值,或从可用属性中选择。

gcloud

您可以使用 gcloud compute instant-snapshots list 命令列出特定项目或位置中的即时快照。

列出某个项目中的所有快照,或某个可用区或区域中的快照:

  • 列出特定项目中的所有即时快照:

    gcloud compute instant-snapshots list --project=PROJECT_ID
    

    PROJECT_ID 替换为相应项目的 ID。

  • 使用 --zones 参数列出某个可用区中的即时快照:

    gcloud compute instant-snapshots list --zones=ZONE
    

    ZONE 替换为目标可用区的名称。

  • 使用 --regions 参数列出某个区域中的区域级即时快照:

    gcloud compute instant-snapshots list --regions=REGION
    

    REGION 替换为目标区域的名称。

REST

您可以检索特定项目或位置中的即时快照列表。

  • 列出某个项目中的快照:

    instantSnapshots.aggregatedList 方法发出 GET 请求。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instantSnapshots
    

    PROJECT_ID 替换为相应项目的 ID。

  • 列出某个可用区或区域中的即时快照:

    instantSnapshots.list 方法发出 GET 请求。

    • 列出某个可用区中的即时快照:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/SOURCE_ZONE//instantSnapshots
      

      替换以下内容:

      • PROJECT_ID:项目的 ID。
      • SOURCE_ZONE:目标可用区,例如 us-west1-a
    • 列出某个区域中的区域级即时快照:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SOURCE_REGION/instantSnapshots
      

      替换以下内容:

      • PROJECT_ID:项目的 ID。
      • SOURCE_REGION:目标区域,例如 us-west1

查看磁盘的即时快照

您可以使用 gcloud CLI、Google Cloud 控制台或 REST 查看磁盘的即时快照列表。

控制台

  1. 在 Google Cloud 控制台中,转到快照页面。

    转到“快照”页面

  2. 点击即时快照标签页。此时将显示项目中所有即时快照的列表。

  3. 按来源磁盘缩小结果范围:

    1. filter_list 过滤条件字段中输入 Source disk:输入来源磁盘过滤条件

      此时会显示具有即时快照的磁盘列表。

    2. 列表中选择磁盘名称。即时快照列表会显示该磁盘的所有即时快照。

      如果您在 filter_list 过滤条件字段中没有看到磁盘的名称,请输入磁盘名称的前几个字母以更改您看到的过滤选项列表。

gcloud

  1. 使用 gcloud compute instant-snapshots list 命令和 --filter 参数列出磁盘的即时快照:

    • 列出某个可用区级磁盘的即时快照:

      gcloud compute instant-snapshots list \
      --filter="sourceDisk:projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
      

      替换以下内容:

      • PROJECT_ID:项目的 ID。
      • ZONE:磁盘的可用区名称,例如 us-west1-a
      • DISK_NAME:来源磁盘的名称,例如 disk-1
    • 列出某个区域级磁盘的即时快照:

      gcloud compute instant-snapshots list \
      --filter=sourceDisk:projects/PROJECT_ID/regions/SOURCE_REGION/disks/DISK_NAME
      

      替换以下内容:

      • PROJECT_ID:项目的 ID。
      • SOURCE_REGION:磁盘的区域名称,例如 us-west1
      • DISK_NAME:磁盘的名称,例如 disk-1

REST

instantSnapshots.list 方法发出 GET 请求,以列出某个可用区级磁盘或区域级磁盘的即时快照。

使用 filter=sourceDisk 查询参数指定磁盘的名称。

  • 列出可用区级永久性磁盘卷的即时快照:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/SOURCE_ZONE/instantSnapshots?filter=sourceDisk:'https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME'
    

    替换以下内容:

    • PROJECT_ID:项目的 ID。
    • SOURCE_ZONE:目标可用区,例如 us-west1-a
    • DISK_NAME:来源磁盘的名称,例如 disk-1
  • 列出区域级永久性磁盘卷的即时快照:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SOURCE_REGION/instantSnapshots?filter=sourceDisk:'https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SOURCE_REGION/disks/DISK_NAME'
    

    替换以下内容:

    • PROJECT_ID:项目的 ID。
    • SOURCE_REGION:目标区域,例如 us-west1
    • DISK_NAME:来源磁盘的名称,例如 disk-1

查看即时快照的相关信息

使用 gcloud CLI、Google Cloud 控制台或 REST 检索即时快照的详细信息,例如位置、来源磁盘和大小。

控制台

  1. 在 Google Cloud 控制台中,转到快照页面。

    转到“快照”页面

  2. 点击即时快照标签页。此时会显示即时快照的列表。

  3. 名称列中,点击即时快照的名称。此时会显示所选快照的即时快照详情页面,其中显示即时快照的属性。

gcloud

  1. 如需查看即时快照的相关信息,请使用 gcloud compute instant-snapshots describe 命令。

    • 如果是可用区级磁盘的快照,请使用 --zone 标志指定可用区:

      gcloud compute instant-snapshots describe INSTANT_SNAPSHOT_NAME  \
         --zone=ZONE
      

      将以下变量替换为相应值:

      • INSTANT_SNAPSHOT_NAME:即时快照的名称。
      • ZONE:创建即时快照的可用区,例如 us-west1-a
    • 如果是区域级磁盘的快照,请使用 --region 标志指定区域:

      gcloud compute instant-snapshots describe INSTANT_SNAPSHOT_NAME \
      --region=REGION
      

      将以下变量替换为相应值:

      • INSTANT_SNAPSHOT_NAME:即时快照的名称。
      • REGION:创建快照的区域,例如 us-central1

REST

您使用的 API 方法请求取决于您使用的是区域级还是可用区级即时快照。

可用区级即时快照

通过在请求中指定可用区,向 instantSnapshots.get 方法发出 GET 请求:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME

将以下变量替换为相应值:

  • PROJECT_ID:包含即时快照的项目的名称。
  • ZONE:创建即时快照的可用区。
  • INSTANT_SNAPSHOT_NAME:即时快照的名称。

区域级即时快照

通过在请求中指定区域,向 instantSnapshots.get 方法发出 GET 请求:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instantSnapshots/INSTANT_SNAPSHOT_NAME

将以下变量替换为相应值:

  • PROJECT_ID:包含即时快照的项目的名称。
  • REGION:创建即时快照的区域。
  • INSTANT_SNAPSHOT_NAME:即时快照的名称。

删除即时快照

您可以使用 gcloud CLI、Google Cloud 控制台或 REST 删除即时快照。

控制台

  1. 在 Google Cloud 控制台中,转到快照页面。

    转到“快照”页面

  2. 点击即时快照标签页。

  3. 选择一个或多个要删除的快照。

  4. 点击快照页面顶部的删除

gcloud

使用 gcloud compute instant-snapshots delete 命令删除即时快照,并指定来源可用区或来源区域。

  • 删除可用区级磁盘的即时快照:

    gcloud compute instant-snapshots delete INSTANT_SNAPSHOT_NAME \
        --zone=ZONE
     

    将以下变量替换为相应值:

    • ZONE:区域的名称。
    • INSTANT_SNAPSHOT_NAME:即时快照的名称。
  • 删除区域级磁盘的即时快照:

    gcloud compute instant-snapshots delete INSTANT_SNAPSHOT_NAME \
       --region=REGION
    

    替换以下内容:

    • REGION:区域的名称。
    • INSTANT_SNAPSHOT_NAME:即时快照的名称。

REST

instantSnapshots.delete 方法发出的 DELETE 请求,以删除即时快照:

  • 删除可用区级磁盘的即时快照:

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME
    

    将以下变量替换为相应值:

    • PROJECT_ID:项目的 ID。
    • ZONE:区域的名称。
    • INSTANT_SNAPSHOT_NAME:即时快照的名称。
  • 删除区域级磁盘的即时快照:

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instantSnapshots/INSTANT_SNAPSHOT_NAME

    将以下变量替换为相应值:

    • PROJECT_ID:项目的 ID。
    • REGION:区域的名称。
    • INSTANT_SNAPSHOT_NAME:即时快照的名称。

更改即时快照的存储位置

即时快照始终存储在与来源磁盘相同的位置。您无法从其他可用区或区域访问即时快照。但是,您可以根据即时快照创建标准快照,并使用标准快照。

了解如何根据即时快照创建标准快照

问题排查

如需解决使用即时快照时遇到的问题,请参阅排查即时快照问题