本文档介绍如何管理可用区级和区域级永久性磁盘以及 Google Cloud Hyperdisk 的快照时间表。
您可以按如下方式管理快照时间表:
- 查看快照时间表
- 更改快照时间表
- 删除快照时间表
您还可以为预定快照配置提醒。
准备工作
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
如需连接到可以作为服务账号运行的虚拟机:
Service Account User (v1) (
roles/iam.serviceAccountUser
) -
如需查看快照时间表:针对项目或组织的
compute.resourcePolicies.list
权限 -
更新快照时间表需要以下权限:
-
针对资源政策的
compute.resourcePolicies.update
权限 -
针对资源政策的
compute.resourcePolicies.get
权限
-
针对资源政策的
-
替换快照时间表需要以下权限:
-
针对资源政策的
compute.resourcePolicies.use
权限 -
针对磁盘的
compute.disks.addResourcePolicies
权限 -
针对磁盘的
compute.disks.removeResourcePolicies
权限
-
针对资源政策的
-
删除快照时间表需要以下权限:
-
针对资源政策的
compute.resourcePolicies.delete
权限 -
针对磁盘的
compute.disks.removeResourcePolicies
权限
-
针对资源政策的
- 在 Google Cloud 控制台中,转到快照页面。
- 选择快照时间表标签页。
- 使用 过滤条件字段可缩小快照时间表的列表范围。
- 点击相应快照时间表的名称,以查看其详细信息。
- 在 Google Cloud 控制台中,转到快照页面。
- 选择快照时间表标签页。
- 使用 过滤条件字段列出特定区域的快照时间表。
PROJECT_ID
:项目名称REGION
:区域,例如us-west1
PROJECT_ID
:项目名称REGION
:区域,例如us-west1
- 说明
- 快照时间表
- 应用于生成的快照的标签
- 来源磁盘删除政策(用于在来源磁盘删除后处理自动生成的快照)
- 保留政策(用于定义保留快照时间表所产生快照的时间长短)
- 在 Google Cloud 控制台中,转到快照页面。
- 选择快照时间表,以查看时间表的列表。
- 点击要修改的快照时间表的名称。
- 在快照时间表详情页面上,点击 修改时间表按钮。
- SCHEDULE_NAME:快照时间表的名称。
- REGION:您的快照时间表所在的区域。
- DESCRIPTION:快照时间表的说明。请使用引号将您的说明括起来。
- KEY 和 VALUE:可用于对相关资源或关联资源进行分组的键值对。
- DAYS:快照在删除之前保留的天数上限。
- DELETE_OPTION:删除原始磁盘后自动快照的保留行为。该值必须是以下项之一:
apply-retention-policy
:来源磁盘删除后,系统会继续对快照时间表创建的所有快照应用保留期限。keep-auto-snapshots
:(默认)如果来源磁盘删除,则无论保留期限如何,都保留快照时间表创建的所有快照。
- START_TIME:世界协调时间 (UTC) 开始时间。时间必须从整点开始。例如:
- 太平洋标准时间下午 2 点为
22:00
。 - 如果您将开始时间设置为
22:13
,则会收到错误消息。
- 太平洋标准时间下午 2 点为
SCHEDULE_FLAG:以下标志之一:
--hourly-schedule=
HOURLY_INTERVAL
:每个快照之间的小时数。HOURLY_INTERVAL
必须是介于1
到23
之间的整数。例如,将--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
,则会收到错误消息。
- 太平洋标准时间下午 2 点为
hourly-schedule
、daily-schedule
、weekly-schedule
和weekly-schedule-from-file
这三种快照频率标志是互斥的。您只能将一个快照用于快照时间表。更改说明和标签:
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:快照时间表的说明。请使用引号将您的说明括起来。
- KEY 和 VALUE:可用于对相关资源或关联资源进行分组的键值对。
- HOURLY_INTERVAL 用于定义截取快照的时间间隔。请使用介于
1
到23
的整数设置每小时时间表。如需每天在相同时间创建快照,请选择一个能够整除 24 的数字(1、2、3、4、6、8 或 12)。例如,将--hourly-schedule
设置为 12 表示每 12 小时生成一次快照。 - DAILY_INTERVAL:定义每个快照之间的天数。 如需每天创建快照,请使用值
1
。 - WEEKLY_INTERVAL:定义在一周中的特定几天运行的时间表。指定一天或多天。您可以使用以下选项:
MONDAY
、TUESDAY
、WEDNESDAY
、THURSDAY
、FRIDAY
、SATURDAY
和SUNDAY
。并务必写清楚是周几(不区分大小写)。您最多可以为dayOfWeeks
定义 7 个时间间隔,每个星期对应一个时间间隔。 - START_TIME:世界协调时间 (UTC) 开始时间。时间必须从整点开始。例如:
- 太平洋标准时间下午 2 点为世界协调时间 (UTC)
22:00
。 - 如果您将开始时间设置为
22:13
,则会收到错误消息。
- 太平洋标准时间下午 2 点为世界协调时间 (UTC)
- DAYS:快照在删除之前保留的天数上限。
- DELETE_OPTION:删除原始磁盘后自动快照的保留行为。该值必须是以下项之一:
APPLY_RETENTION_POLICY
:来源磁盘删除后,系统会继续对快照时间表创建的所有快照应用保留期限。KEEP_AUTO_SNAPSHOTS
:(默认)如果来源磁盘删除,则无论保留期限如何,系统都会保留快照时间表创建的所有快照。
- 在 Google Cloud 控制台中,转到磁盘页面。
- 选择包含要分离的时间表的磁盘。
- 在管理磁盘页面上,点击 修改。 您可能需要先点击 更多操作菜单。
- 打开快照时间表下拉菜单。
- 点击无时间表,以从磁盘中分离该时间表。
- 您可以创建新的时间表,也可以在修改磁盘选项时更换时间表。
- 点击保存,以完成该任务。
使用
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
是您的可用区级磁盘所在的可用区
使用
gcloud disks add-resource-policies
命令向磁盘添加新的快照时间表。gcloud compute disks add-resource-policies DISK_NAME \ --resource-policies SCHEDULE_NAME \ --zone ZONE
替换以下内容:
DISK_NAME
:包含快照时间表资源政策的磁盘的名称SCHEDULE_NAME
:要添加到此磁盘的快照时间表的名称ZONE
是磁盘所在的可用区
通过构建一个对
disks.removeResourcePolicies
的POST
请求,将当前快照时间表与磁盘分离。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
:要从此磁盘中移除的快照时间表的名称
通过构建一个对
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 控制台中,转到快照页面。
- 选择快照时间表,以查看时间表的列表。
- 选择与磁盘没有关联的任意时间表。
点击
删除。SCHEDULE_NAME
:快照时间表的名称REGION
:快照时间表的位置PROJECT_ID
:项目名称REGION
:快照时间表的位置SCHEDULE_NAME
:快照时间表的名称在 Google Cloud Console 中,转到日志浏览器页面。
在已审核的资源下拉列表中,指向磁盘,然后选择所有 disk_id (All disk_id)。
在所有日志下拉列表中,选择 cloudaudit.googleapis.com/system_event,然后点击确定。
在任何日志级别下拉列表中,选择日志类型。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色和权限
如需获得创建快照时间表所需的权限,请让管理员向您授予项目的以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理访问权限。
这些预定义角色包含创建快照时间表所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建快照时间表需要以下权限:
查看快照时间表
如需获取快照时间表的列表,请使用控制台、
gcloud
命令或 Compute Engine API 方法。此请求会显示项目中所有快照时间表的名称、说明和区域。控制台
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。
控制台
gcloud
如需查看特定区域内项目的快照时间表,请使用
resource-policies list
命令。gcloud compute resource-policies list PROJECT_ID --filter REGION
替换以下内容:
REST
向
resourcePolicies.list
方法发出GET
请求,以检索在一个区域内创建的快照时间表。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
替换以下内容:
更改快照时间表
创建快照时间表后,您可以按照更新快照时间表过程动态修改以下字段:
如需更新快照时间表的其他值,您必须删除该快照时间表并创建新的快照时间表,如替换快照时间表中所述。
快照时间表更新将在更新后的第一个快照中生效。如果在更新快照时间表时快照正在运行,则更改将在后续快照中生效。
更新快照时间表
您可以使用 Google Cloud CLI 或 Compute Engine API 更改快照时间表的某些属性,如更改快照时间表中所述。
如需更改快照时间表的其他属性,请使用替换快照时间表中所述的方法。
控制台
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
请替换以下内容:
示例:
如需将快照时间表更改为每日时间表,请执行以下操作:
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
和要更新的字段。请替换以下内容:
替换快照时间表
请按照以下步骤删除快照时间表并创建新的快照时间表。使用此方法可以修改无法通过更新快照时间表过程更改的快照时间表属性。
如果要替换已挂接到某个磁盘的快照时间表,您必须先从该磁盘中分离这个时间表,然后再将其删除。之后,您便可以创建新的时间表,并将其附加到磁盘。
通过已分离的快照时间表生成的快照将不受新政策管理。这些快照将无限期保留,直到您将其删除。
使用 Google Cloud 控制台、gcloud CLI 或 REST 移除和替换快照时间表。
控制台
gcloud
REST
删除快照时间表
如果您删除了某个快照时间表,系统会永久保留与该快照时间表关联的所有自动生成的快照。但是,时间表一旦被删除,便无法再生成快照。
保留政策是快照时间表的一部分。时间表一旦删除,系统便不会再应用其中的保留政策。已生成的快照将会永久保留下来,直到您手动删除它们。
如需删除现有快照时间表,请使用 Google Cloud 控制台、Google Cloud CLI 或 Compute Engine API 方法。如果时间表已挂接到某个磁盘,请先从该磁盘中分离时间表,然后再将其删除。您无法删除已挂接到磁盘的快照时间表。
控制台
gcloud
如需删除快照时间表,请使用
resource-policies delete
命令。gcloud compute resource-policies delete SCHEDULE_NAME \ --region REGION
替换以下内容:
REST
如需删除快照时间表,请向
resourcePolicies.delete
方法发出DELETE
请求。 如果快照时间表已挂接到磁盘,您便会收到错误消息。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/SCHEDULE_NAME
替换以下内容:
日志记录和监控
与磁盘关联的每个计划快照会不断创建系统事件,而系统会始终监控和记录该事件。系统事件审核日志始终处于启用状态。
这些日志提供与每个关联磁盘的计划快照有关的行为信息。您可以通过 Google Cloud 控制台中的“日志记录”菜单查看日志。
如需详细了解如何使用 Logs Explorer,请参阅使用 Logs Explorer 查看日志。
控制台
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-10-04。
-