管理磁盘的快照时间表


本文档介绍如何管理可用区级和区域级永久性磁盘以及 Google Cloud Hyperdisk 的快照时间表。

您可以按如下方式管理快照时间表:

  • 查看快照时间表
  • 更改快照时间表
  • 删除快照时间表

您还可以为预定快照配置提醒

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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

所需的角色和权限

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

如需详细了解如何授予角色,请参阅管理访问权限

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

所需权限

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

  • 如需查看快照时间表:针对项目或组织的 compute.resourcePolicies.list 权限
  • 更新快照时间表需要以下权限:
    • 针对资源政策的 compute.resourcePolicies.update 权限
    • 针对资源政策的 compute.resourcePolicies.get 权限
  • 替换快照时间表需要以下权限:
    • 针对资源政策的 compute.resourcePolicies.use 权限
    • 针对磁盘的 compute.disks.addResourcePolicies 权限
    • 针对磁盘的 compute.disks.removeResourcePolicies 权限
  • 删除快照时间表需要以下权限:
    • 针对资源政策的 compute.resourcePolicies.delete 权限
    • 针对磁盘的 compute.disks.removeResourcePolicies 权限

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

查看快照时间表

如需获取快照时间表的列表,请使用控制台、gcloud 命令或 Compute Engine API 方法。此请求会显示项目中所有快照时间表的名称、说明和区域。

控制台

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

    转到“快照”页面

  2. 选择快照时间表标签页。
  3. 使用 过滤条件字段可缩小快照时间表的列表范围。
  4. 点击相应快照时间表的名称,以查看其详细信息。

gcloud

如需查看快照时间表的列表,请使用 resource-policies list 命令

 gcloud compute resource-policies list

如需查看特定快照时间表的说明,请使用 resource-policies describe 命令

gcloud compute resource-policies describe SCHEDULE_NAME

SCHEDULE_NAME 替换为快照时间表的名称。

REST

resourcePolicies.aggregatedList 方法发出 GET 请求,以返回项目的快照时间表的列表。

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

PROJECT_ID 替换为项目名称。

按区域查看快照时间表

如需查看特定区域中项目的快照时间表,请使用 Google Cloud 控制台、gcloud CLI 或 REST。

控制台

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

    转到“快照”页面

  2. 选择快照时间表标签页。
  3. 使用 过滤条件字段列出特定区域的快照时间表。

gcloud

如需查看特定区域内项目的快照时间表,请使用 resource-policies list 命令

gcloud compute resource-policies list PROJECT_ID --filter REGION

替换以下内容:

  • PROJECT_ID:项目名称
  • REGION:区域,例如 us-west1

REST

resourcePolicies.list 方法发出 GET 请求,以检索在一个区域内创建的快照时间表。

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

替换以下内容:

  • PROJECT_ID:项目名称
  • REGION:区域,例如 us-west1

更改快照时间表

创建快照时间表后,您可以按照更新快照时间表过程动态修改以下字段:

  • 说明
  • 快照时间表
  • 应用于生成的快照的标签
  • 来源磁盘删除政策(用于在来源磁盘删除后处理自动生成的快照)
  • 保留政策(用于定义保留快照时间表所产生快照的时间长短)

如需更新快照时间表的其他值,您必须删除该快照时间表并创建新的快照时间表,如替换快照时间表中所述。

快照时间表更新将在更新后的第一个快照中生效。如果在更新快照时间表时快照正在运行,则更改将在后续快照中生效。

更新快照时间表

您可以使用 Google Cloud CLI 或 Compute Engine API 更改快照时间表的某些属性,如更改快照时间表中所述。

如需更改快照时间表的其他属性,请使用替换快照时间表中所述的方法。

控制台

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

    转到“快照”页面

  2. 选择快照时间表,以查看时间表的列表。
  3. 点击要修改的快照时间表的名称。
  4. 在快照时间表详情页面上,点击 修改时间表按钮。

gcloud

使用 compute resource-policies update 命令更新快照时间表的说明、时间表、保留政策或标签。

gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
   --region=REGION \
   --description="DESCRIPTION" \
   --snapshot-labels="KEY=VALUE" \
   --max-retention-days=DAYS \
   --on-source-disk-delete=DELETE_OPTION \
   --start-time=START_TIME \
   SCHEDULE_FLAG

请替换以下内容:

  • SCHEDULE_NAME:快照时间表的名称。
  • REGION:您的快照时间表所在的区域。
  • DESCRIPTION:快照时间表的说明。请使用引号将您的说明括起来。
  • KEYVALUE:可用于对相关资源或关联资源进行分组的键值对。
  • DAYS:快照在删除之前保留的天数上限。
  • DELETE_OPTION:删除原始磁盘后自动快照的保留行为。该值必须是以下项之一:
    • apply-retention-policy:来源磁盘删除后,系统会继续对快照时间表创建的所有快照应用保留期限。
    • keep-auto-snapshots:(默认)如果来源磁盘删除,则无论保留期限如何,都保留快照时间表创建的所有快照。
  • START_TIME:世界协调时间 (UTC) 开始时间。时间必须从整点开始。例如:
    • 太平洋标准时间下午 2 点为 22:00
    • 如果您将开始时间设置为 22:13,则会收到错误消息。
  • SCHEDULE_FLAG:以下标志之一:

    • --hourly-schedule=HOURLY_INTERVAL:每个快照之间的小时数。HOURLY_INTERVAL 必须是介于 123 之间的整数。例如,将 --hourly-schedule 设置为 12 表示每 12 小时生成一次快照。
    • --daily-schedule:每天在 START_TIME 执行快照
    • --weekly-schedule=WEEKLY_INTERVAL:定义您要在哪一天截取快照。您必须写清楚是周几;值不区分大小写。

    • --weekly-schedule-from-file=FILE_NAME:指定包含每周快照时间表的文件。您可以使用文件来为每周时间表指定一周中的不同日期和不同的时间。例如,您的文件为快照时间表指定了周一和周三:none [{"day": "MONDAY", "startTime": "04:00"}, {"day": "WEDNESDAY", "startTime": "02:00"}],如果您在文件中添加开始时间,则无需设置 --start-time 标志。时间表使用世界协调时间 (UTC) 时区。时间必须从整点开始。例如:

      • 太平洋标准时间下午 2 点为 22:00
      • 如果您将开始时间设置为 22:13,则会收到错误消息。

    hourly-scheduledaily-scheduleweekly-scheduleweekly-schedule-from-file 这三种快照频率标志是互斥的。您只能将一个快照用于快照时间表。

示例

如需将快照时间表更改为每日时间表,请执行以下操作:

gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
    --region=REGION --daily-schedule --start-time=START_TIME

如需将快照更改为每小时时间表,同时还更新说明和快照标签,请执行以下操作:

gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
    --region=REGION --description="DESCRIPTION" \
    --hourly-schedule=HOURLY_INTERVAL --start-time=START_TIME \
    --snapshot-labels="KEY=VALUE"

如需更改快照时间表的快照保留政策和来源磁盘删除政策,请执行以下操作:

gcloud compute resource-policies update snapshot-schedule SCHEDULE_NAME \
    --region=REGION --max-retention-days=DAYS \
    --on-source-disk-delete=DELETE_OPTION

REST

构建一个向 resourcePolicies 方法发出的 PATCH 请求,以更新快照时间表的说明、时间表、保留政策、来源磁盘删除政策或标签。在请求正文中,您只需指定 name 和要更新的字段。

  • 更改说明和标签:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "description": "DESCRIPTION",
        "snapshotProperties": {
            "labels": {"KEY": "VALUE"}
        }
    }
    
  • 将快照时间表更改为每小时:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "snapshotSchedulePolicy": {
            "schedule": {
              "hourlySchedule": {
                  "hoursInCycle": HOURLY_INTERVAL,
                  "startTime": START_TIME
               }
            }
        }
    }
    
  • 将快照时间表更改为每天:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "snapshotSchedulePolicy": {
            "schedule": {
              "dailySchedule": {
                  "daysInCycle": DAILY_INTERVAL,
                  "startTime": START_TIME
               }
            }
        }
    }
    
  • 将快照时间表更改为每周:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "snapshotSchedulePolicy": {
            "schedule": {
               "weeklySchedule": {
                  "dayOfWeeks": [
                     {
                        "day": WEEKLY_INTERVAL,
                        "startTime": START_TIME
                     }
                  ]
               }
            }
        }
    }
    
  • 更改快照保留政策:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
    {
        "name": "SCHEDULE_NAME",
        "snapshotSchedulePolicy": {
            "retentionPolicy": {
                "maxRetentionDays": DAYS,
                "onSourceDiskDelete":"DELETE_OPTION"
            }
       }
    }
    

请替换以下内容:

  • PROJECT_ID:项目名称。
  • REGION:快照时间表所在的区域。
  • SCHEDULE_NAME:快照时间表的名称。
  • DESCRIPTION:快照时间表的说明。请使用引号将您的说明括起来。
  • KEYVALUE:可用于对相关资源或关联资源进行分组的键值对。
  • HOURLY_INTERVAL 用于定义截取快照的时间间隔。请使用介于 123 的整数设置每小时时间表。如需每天在相同时间创建快照,请选择一个能够整除 24 的数字(1、2、3、4、6、8 或 12)。例如,将 --hourly-schedule 设置为 12 表示每 12 小时生成一次快照。
  • DAILY_INTERVAL:定义每个快照之间的天数。 如需每天创建快照,请使用值 1
  • WEEKLY_INTERVAL:定义在一周中的特定几天运行的时间表。指定一天或多天。您可以使用以下选项:MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY。并务必写清楚是周几(不区分大小写)。您最多可以为 dayOfWeeks 定义 7 个时间间隔,每个星期对应一个时间间隔。
  • START_TIME:世界协调时间 (UTC) 开始时间。时间必须从整点开始。例如:
    • 太平洋标准时间下午 2 点为世界协调时间 (UTC) 22:00
    • 如果您将开始时间设置为 22:13,则会收到错误消息。
  • DAYS:快照在删除之前保留的天数上限。
  • DELETE_OPTION:删除原始磁盘后自动快照的保留行为。该值必须是以下项之一:
    • APPLY_RETENTION_POLICY:来源磁盘删除后,系统会继续对快照时间表创建的所有快照应用保留期限。
    • KEEP_AUTO_SNAPSHOTS:(默认)如果来源磁盘删除,则无论保留期限如何,系统都会保留快照时间表创建的所有快照。

替换快照时间表

请按照以下步骤删除快照时间表并创建新的快照时间表。使用此方法可以修改无法通过更新快照时间表过程更改的快照时间表属性。

如果要替换已挂接到某个磁盘的快照时间表,您必须先从该磁盘中分离这个时间表,然后再将其删除。之后,您便可以创建新的时间表,并将其附加到磁盘。

通过已分离的快照时间表生成的快照将不受新政策管理。这些快照将无限期保留,直到您将其删除。

使用 Google Cloud 控制台、gcloud CLI 或 REST 移除和替换快照时间表。

控制台

  1. 在 Google Cloud 控制台中,转到磁盘页面。

    转到“磁盘”页面

  2. 选择包含要分离的时间表的磁盘。
  3. 管理磁盘页面上,点击 修改。 您可能需要先点击 更多操作菜单。
  4. 打开快照时间表下拉菜单。
  5. 点击无时间表,以从磁盘中分离该时间表。
  6. 您可以创建新的时间表,也可以在修改磁盘选项时更换时间表。
  7. 点击保存,以完成该任务。

gcloud

  1. 使用 gcloud disks remove-resource-policies 命令从包含要更改的时间表的磁盘中分离快照时间表。

    gcloud compute disks remove-resource-policies DISK_NAME \
        --resource-policies SCHEDULE_NAME \
        --region REGION \
        --zone ZONE
    

    替换以下内容:

    • DISK_NAME:挂接了快照时间表的磁盘的名称
    • SCHEDULE_NAME:要从此磁盘中分离的快照时间表的名称
    • REGION:您的快照时间表所在的区域
    • ZONE 是您的可用区级磁盘所在的可用区
  2. 使用 gcloud disks add-resource-policies 命令向磁盘添加新的快照时间表。

    gcloud compute disks add-resource-policies DISK_NAME \
         --resource-policies SCHEDULE_NAME \
         --zone ZONE
    

    替换以下内容:

    • DISK_NAME:包含快照时间表资源政策的磁盘的名称
    • SCHEDULE_NAME:要添加到此磁盘的快照时间表的名称
    • ZONE 是磁盘所在的可用区

REST

  1. 通过构建一个对 disks.removeResourcePoliciesPOST 请求,将当前快照时间表与磁盘分离。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/removeResourcePolicies
    
    {
      "resourcePolicies": [
         "regions/REGION/resourcePolicies/SCHEDULE_NAME"
      ]
    }
    

    替换以下内容:

    • PROJECT_ID:项目名称
    • ZONE:磁盘所在的可用区。
    • DISK_NAME:包含关联快照时间表的磁盘的名称
    • REGION:快照时间表的位置
    • SCHEDULE_NAME:要从此磁盘中移除的快照时间表的名称
  2. 通过构建一个对 disks.addResourcePolicies 方法发出的 POST 请求,将新的快照时间表挂接到磁盘。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/addResourcePolicies
    
    {
      "resourcePolicies": [
        "regions/REGION/resourcePolicies/SCHEDULE_NAME"
      ]
    }
    

    替换以下内容:

    • PROJECT_ID:项目名称
    • ZONE:磁盘的位置
    • DISK_NAME:磁盘的名称
    • REGION:快照时间表的位置
    • SCHEDULE_NAME:要应用于此磁盘的快照时间表的名称

删除快照时间表

如果您删除了某个快照时间表,系统会永久保留与该快照时间表关联的所有自动生成的快照。但是,时间表一旦被删除,便无法再生成快照。

保留政策是快照时间表的一部分。时间表一旦删除,系统便不会再应用其中的保留政策。已生成的快照将会永久保留下来,直到您手动删除它们。

如需删除现有快照时间表,请使用 Google Cloud 控制台、Google Cloud CLI 或 Compute Engine API 方法。如果时间表已挂接到某个磁盘,请先从该磁盘中分离时间表,然后再将其删除。您无法删除已挂接到磁盘的快照时间表。

控制台

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

    转到“快照”页面

  2. 选择快照时间表,以查看时间表的列表。
  3. 选择与磁盘没有关联的任意时间表。
  4. 点击 删除

gcloud

如需删除快照时间表,请使用 resource-policies delete 命令

gcloud compute resource-policies delete SCHEDULE_NAME \
    --region REGION

替换以下内容:

  • SCHEDULE_NAME:快照时间表的名称
  • REGION:快照时间表的位置

REST

如需删除快照时间表,请向 resourcePolicies.delete 方法发出 DELETE 请求。 如果快照时间表已挂接到磁盘,您便会收到错误消息。

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME

替换以下内容:

  • PROJECT_ID:项目名称
  • REGION:快照时间表的位置
  • SCHEDULE_NAME:快照时间表的名称

日志记录和监控

与磁盘关联的每个计划快照会不断创建系统事件,而系统会始终监控和记录该事件。系统事件审核日志始终处于启用状态。

这些日志提供与每个关联磁盘的计划快照有关的行为信息。您可以通过 Google Cloud 控制台中的“日志记录”菜单查看日志。

如需详细了解如何使用 Logs Explorer,请参阅使用 Logs Explorer 查看日志

控制台

  1. 在 Google Cloud Console 中,转到日志浏览器页面。

    转到“日志浏览器”页面

  2. 已审核的资源下拉列表中,指向磁盘,然后选择所有 disk_id (All disk_id)。

  3. 所有日志下拉列表中,选择 cloudaudit.googleapis.com/system_event,然后点击确定

  4. 任何日志级别下拉列表中,选择日志类型。

后续步骤