创建和管理即时快照


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

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

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

如果要将即时快照复制到其他位置,请根据即时快照创建标准快照

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

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

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

限制

为确保即时快照适合您的应用场景,请查看与即时快照相关的限制

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

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

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

控制台

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

    转到虚拟机实例

  2. 选择要使用的项目。

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

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

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

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

gcloud

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

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

    可用区级磁盘

    gcloud beta 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 beta 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/beta/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/beta/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. 可选:使用过滤条件字段缩小结果的范围。在过滤条件字段中输入属性名称或值,或从可用属性中选择。

gcloud

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

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

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

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

      gcloud beta compute instant-snapshots list --project=PROJECT_ID
      

      PROJECT_ID 替换为相应项目的 ID。

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

      gcloud beta compute instant-snapshots list --zones=ZONE
      

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

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

      gcloud beta compute instant-snapshots list --regions=REGION
      

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

REST

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

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

    instantSnapshots.aggregatedList 方法发出 GET 请求:

        GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/aggregated/instantSnapshots
     
    PROJECT_ID 替换为项目的 ID。

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

    instantSnapshots.list 方法发出 GET 请求。

    • 列出某个可用区中的即时快照:
        GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/SOURCE_ZONE//instantSnapshots
    
    替换以下变量: - `PROJECT_ID`:项目的 ID。 - `SOURCE_ZONE`:目标可用区,例如 `us-west1-a`。 + 列出某个区域中的区域级即时快照:
        GET https://compute.googleapis.com/compute/beta/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. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

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

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

      gcloud beta 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 beta 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/beta/projects/<var>PROJECT_ID</var>/zones/<var>SOURCE_ZONE/</var>/instantSnapshots?filter=sourceDisk:'https://www.googleapis.com/compute/beta/projects/<var>PROJECT_ID</var>/zones/<var>SOURCE_ZONE</var>/disks/<var>DISK_NAME</var>'
    

    替换以下内容:

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

    GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/SOURCE_REGION//instantSnapshots?filter=sourceDisk:'https://www.googleapis.com/compute/beta/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. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

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

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

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

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

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

      gcloud beta 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/beta/projects/PROJECT_ID/zones/ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME

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

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

区域级即时快照

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

GET https://compute.googleapis.com/compute/beta/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 beta compute instant-snapshots delete 命令删除即时快照,并指定来源可用区或来源区域。

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

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

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

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

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

    替换以下内容:

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

REST

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

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

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

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

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

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

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

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

更改即时快照的存储位置

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

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

问题排查

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