本文档介绍如何配置永久性磁盘异步复制。永久性磁盘异步复制功能可用于低 RPO、低 RTO 灾难恢复。
在开始复制之前,您必须通过设置磁盘复制对来配置永久性磁盘异步复制。磁盘复制对由主磁盘和辅助磁盘组成。
创建磁盘复制对后,您必须开始复制以开始在主磁盘和辅助磁盘之间复制数据。
限制
辅助磁盘在创建时必须为空白磁盘。您不能通过映像、快照或其他磁盘创建辅助磁盘。
准备工作
- 选择区域对 。
- (可选)创建一致性组。
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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.
- 选择区域对以及主要和次要区域。
- 可选:如果您需要跨一组磁盘协调复制,请在主要区域中创建一致性组。在开始复制之前,您必须将主磁盘添加到一致性组。
- 创建或选择主磁盘。您可以选择将这些磁盘添加到一致性组中。
- 创建新的空白辅助磁盘。
- 磁盘类型:平衡永久性磁盘 (
pd-balanced
) 或性能 (SSD) 永久性磁盘 (pd-ssd
)。 - 大小:小于或等于 5 TiB。
- 加密类型:Google 管理的加密密钥或客户管理的加密密钥 (CMEK)。
- 读写模式:必须处于读写模式,并且不能启用多写入者模式(预览版)。
- 位置:位于受支持的区域(或受支持的区域内的可用区)。
在创建虚拟机时创建主启动磁盘。(可选)使用 gcloud CLI 或 REST 创建虚拟机并指定以下其中一项,以将磁盘添加到一致性组:
如果您使用 gcloud CLI 创建虚拟机,请指定
--create-disk
标志:--create-disk=disk-resource-policy=projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME
如果您使用 REST 创建虚拟机,请指定
resourcePolicies
属性:"disks": { … "resourcePolicies": "projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME" }
在创建虚拟机时创建主数据磁盘。(可选)使用 gcloud CLI 或 REST 创建虚拟机并指定以下其中一项,以将磁盘添加到一致性组:
如果您使用 gcloud CLI 创建虚拟机,请指定
--create-disk
标志:--create-disk=disk-resource-policy=projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME
如果您使用 REST 创建虚拟机,请指定
resourcePolicies
属性:"disks": { … "resourcePolicies": "projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME" }
在不创建虚拟机的情况下创建主数据磁盘。(可选)使用 Google Cloud 控制台、gcloud CLI 或 REST 创建虚拟机并指定以下其中一项,以将磁盘添加到一致性组:
如果您使用 Google Cloud 控制台创建磁盘,请从一致性组下拉列表中选择一致性组。
如果您使用 gcloud CLI 创建磁盘,请指定
--resource-policies
标志:--resource-policies=projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME
如果您使用 REST 创建磁盘,请指定
resourcePolicies
属性:"disks": { … "resourcePolicies": "projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME" }
替换以下内容:
PROJECT
:包含一致性组的项目REGION
:一致性组所在的区域CONSISTENCY_GROUP_NAME
:要在其中添加磁盘的一致性组的名称
在 Google Cloud 控制台中,转到磁盘页面。
点击主磁盘的名称。管理磁盘页面会打开。
点击创建辅助磁盘。
在名称字段中,输入磁盘的名称。
在位置部分,执行以下操作之一:
如需创建区域磁盘,请执行以下操作:
- 选择区域级。
- 在区域字段中,选择与主磁盘的区域对应的区域。
- 在可用区字段中,选择主要可用区。
- 在副本可用区字段中,选择副本可用区。
如需创建可用区磁盘,请执行以下操作:
- 选择单个可用区。
- 在区域字段中,选择与主磁盘的区域对应的区域。
- 在可用区字段中,选择一个可用区。
点击创建。Compute Engine 会创建磁盘并开始复制。
SECONDARY_DISK_NAME
:辅助磁盘的名称。SECONDARY_LOCATION_FLAG
:辅助磁盘的位置标志。如需创建区域辅助磁盘,请使用--region
。如需创建可用区辅助磁盘,请使用--zone
。SECONDARY_LOCATION
:辅助磁盘的区域或可用区。- 如需创建区域磁盘,请使用与主磁盘的区域对应的区域。
- 如需创建可用区级磁盘,请使用与主磁盘所在区域相对应的区域内的可用区。
SIZE
:新磁盘的大小(以 GB 为单位)。 该大小必须与主磁盘的大小相同。可接受的大小范围介于 10 GB 到 2000 GB 之间(以 1 GB 为增量)。PRIMARY_DISK_NAME
:辅助磁盘从中接收数据的主磁盘的名称。PRIMARY_LOCATION_FLAG
:主磁盘的位置标志。- 对于区域主磁盘,请使用
--primary-disk-region
。 - 对于可用区主磁盘,请使用
--primary-disk-zone
。
- 对于区域主磁盘,请使用
PRIMARY_LOCATION
:主磁盘的区域或可用区。- 对于区域磁盘,请使用区域。
- 对于可用区磁盘,请使用可用区。
PRIMARY_PROJECT
:包含主磁盘的项目。ZONE_1
:将区域磁盘复制到的可用区之一。必须是指定区域内的可用区,并且必须与ZONE_2
不同。ZONE_2
:将区域磁盘复制到的可用区之一。必须是指定区域内的可用区,并且必须与ZONE_1
不同。如需创建可用区级辅助磁盘,请使用
disks.insert
方法:POST https://compute.googleapis.com/compute/v1/projects/SECONDARY_DISK_LOCATION/zones/SECONDARY_DISK_ZONE/disks { "name": "SECONDARY_DISK_NAME", "sizeGb": "DISK_SIZE", "type": "DISK_TYPE" "asyncPrimaryDisk": { "disk": "projects/PRIMARY_DISK_PROJECT/PRIMARY_DISK_LOCATION_PARAMETER/PRIMARY_DISK_LOCATION/disks/PRIMARY_DISK_NAME" } }
如需创建区域辅助磁盘,请使用
regionDisks.insert
方法:POST https://compute.googleapis.com/compute/v1/projects/SECONDARY_DISK_PROJECT/regions/SECONDARY_DISK_LOCATION/disks { "name": "SECONDARY_DISK_NAME", "sizeGb": "DISK_SIZE", "type": "DISK_TYPE" "asyncPrimaryDisk": { "disk": "projects/PRIMARY_DISK_PROJECT/PRIMARY_DISK_LOCATION_PARAMETER/PRIMARY_DISK_LOCATION/disks/PRIMARY_DISK_NAME" } }
SECONDARY_DISK_PROJECT
:辅助磁盘的项目。SECONDARY_DISK_LOCATION
:辅助磁盘的区域或可用区。- 对于区域磁盘,请使用区域。
- 对于可用区磁盘,请使用可用区。
SECONDARY_DISK_NAME
:辅助磁盘的名称。DISK_SIZE
:辅助磁盘的大小。必须与主磁盘的大小相同。SECONDARY_DISK_TYPE
:磁盘类型。必须是pd-ssd
或pd-balanced
中的一个。PRIMARY_DISK_PROJECT
:包含主磁盘的项目。PRIMARY_DISK_LOCATION_PARAMETER
:主磁盘的位置参数。- 对于区域主磁盘,请使用
regions
。 - 对于可用区主磁盘,请使用
zones
。
- 对于区域主磁盘,请使用
PRIMARY_DISK_LOCATION
:主磁盘的区域或可用区。对于区域磁盘,请使用区域。对于可用区磁盘,请使用可用区。PRIMARY_DISK_NAME
:辅助磁盘从中接收数据的主磁盘的名称。- 如需指定其他客机操作系统功能,请使用
--guest-os-features
参数。您不必添加主磁盘的客机操作系统功能。 辅助磁盘会自动继承主磁盘的客机操作系统功能。--guest-os-features=UEFI_COMPATIBLE,GVNIC,MULTI_IP_SUBNET
- 要为辅助磁盘分配其他标签,请使用
--labels
参数。您不必添加主磁盘的标签。辅助磁盘会自动继承主磁盘的标签。--labels=secondary-disk-for-replication=yes
- 如需指定其他客机操作系统功能,请使用
guestOsFeatures
字段。您无需添加主磁盘的客机操作系统功能。 辅助磁盘会自动继承主磁盘的客机操作系统功能。"guestOsFeatures": [ { "type": "NEW_FEATURE_ID_1" }, { "type": "NEW_FEATURE_ID_1" } ]
- 要为辅助磁盘分配其他标签,请使用
labels
字段。您无需添加主磁盘的标签。 辅助磁盘会自动从主磁盘继承标签。"labels": [ { "key": "value" }, ]
- 了解如何管理使用永久性磁盘异步复制功能的磁盘。
- 了解如何管理复制。
- 了解如何管理一致性组。
- 了解如何监控永久性磁盘异步复制性能。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
设置磁盘复制对
在磁盘之间复制数据之前,您需要完成以下任务来配置复制:
磁盘要求
磁盘必须满足以下要求,才能用作永久性磁盘异步复制的主磁盘或辅助磁盘:
创建或选择主磁盘
主磁盘是挂接到运行工作负载的虚拟机的启动磁盘或数据磁盘。您可以将满足磁盘要求的任何现有磁盘用作主磁盘,也可以创建新磁盘。如果您想要将现有磁盘用作主磁盘,则无需对磁盘执行任何其他配置。继续创建辅助磁盘以完成永久性磁盘异步复制配置。
创建主磁盘
使用以下文档之一中介绍的方法创建主磁盘。
创建辅助磁盘
辅助磁盘是与主磁盘位于不同区域的数据磁盘,它从主磁盘接收复制的数据并向主磁盘写入复制的数据。配置永久性磁盘异步复制时,您必须创建一个引用主磁盘的新空白辅助磁盘。
如需创建与主磁盘具有相同属性的辅助磁盘,请按照创建与主磁盘相同的辅助磁盘中的步骤操作。辅助磁盘继承主磁盘的属性,例如其启动配置和标签。
如需创建与主磁盘不同的辅助磁盘,请参阅创建自定义辅助磁盘。
创建一个与主磁盘相同的辅助磁盘
本部分介绍如何创建与主磁盘相同的辅助磁盘。
您可以使用 Google Cloud 控制台、gcloud CLI 或 REST 创建辅助磁盘。
控制台
执行以下操作,创建一个辅助磁盘并开始复制:
gcloud
使用
gcloud compute disks create
命令创建辅助磁盘:gcloud compute disks create SECONDARY_DISK_NAME \ --SECONDARY_LOCATION_FLAG=SECONDARY_LOCATION \ --size=SIZE \ --primary-disk=PRIMARY_DISK_NAME \ --PRIMARY_DISK_LOCATION_FLAG=PRIMARY_LOCATION \ --primary-disk-project=PRIMARY_DISK_PROJECT
如需创建区域辅助磁盘,请额外指定
--replica-zones
标志:--replica-zones=ZONE_1,ZONE_2
替换以下内容:
REST
使用以下方法之一创建可用区或区域辅助磁盘:
替换以下内容:
创建自定义辅助磁盘
本部分介绍如何创建自定义辅助磁盘,即属性与主磁盘不同的辅助磁盘。
如果主磁盘是启动磁盘,则您无法更改或移除主磁盘的任何客机操作系统功能。您只能添加更多客机操作系统功能。如需了解详情,请参阅辅助磁盘自定义。
您可以使用 gcloud CLI 或 REST 创建自定义辅助磁盘。您无法通过 Google Cloud 控制台自定义辅助磁盘。
gcloud
如需创建自定义辅助磁盘,请使用
gcloud compute disks create
命令(如创建与主磁盘相同的辅助磁盘中所述)。使用额外的标志自定义辅助磁盘的属性。以下示例展示了如何自定义辅助磁盘:
REST
如需创建自定义辅助磁盘,请使用创建与主磁盘相同的辅助磁盘中所述的相同方法。指定其他字段以自定义辅助磁盘的属性。
以下示例展示了如何自定义辅助磁盘:
开始复制
创建主磁盘和辅助磁盘后,您必须开始复制才能开始将数据从主磁盘复制到辅助磁盘。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-11-21。
-