配置永久性磁盘异步复制


本文档介绍如何配置永久性磁盘异步复制。永久性磁盘异步复制功能可用于低 RPO、低 RTO 灾难恢复。

在开始复制之前,您必须通过设置磁盘复制对来配置永久性磁盘异步复制。磁盘复制对由主磁盘和辅助磁盘组成。

创建磁盘复制对后,您必须开始复制以开始在主磁盘和辅助磁盘之间复制数据。

限制

辅助磁盘在创建时必须为空白磁盘。您不能通过映像、快照或其他磁盘创建辅助磁盘。

准备工作

  • 选择区域对
  • (可选)创建一致性组
  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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

设置磁盘复制对

在磁盘之间复制数据之前,您需要完成以下任务来配置复制:

  1. 选择区域对以及主要和次要区域。
  2. 可选:如果您需要跨一组磁盘协调复制,请在主要区域中创建一致性组。在开始复制之前,您必须将主磁盘添加到一致性组。
  3. 创建或选择主磁盘。您可以选择将这些磁盘添加到一致性组中。
  4. 创建新的空白辅助磁盘。

磁盘要求

磁盘必须满足以下要求,才能用作永久性磁盘异步复制的主磁盘或辅助磁盘:

创建或选择主磁盘

主磁盘是挂接到运行工作负载的虚拟机的启动磁盘或数据磁盘。您可以将满足磁盘要求的任何现有磁盘用作主磁盘,也可以创建新磁盘。如果您想要将现有磁盘用作主磁盘,则无需对磁盘执行任何其他配置。继续创建辅助磁盘以完成永久性磁盘异步复制配置。

创建主磁盘

使用以下文档之一中介绍的方法创建主磁盘。

  • 在创建虚拟机时创建主启动磁盘。(可选)使用 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 控制台、gcloud CLI 或 REST 创建辅助磁盘。

控制台

执行以下操作,创建一个辅助磁盘并开始复制:

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

    转到“磁盘”

  2. 点击主磁盘的名称。管理磁盘页面会打开。

  3. 点击创建辅助磁盘

  4. 名称字段中,输入磁盘的名称。

  5. 位置部分,执行以下操作之一:

    • 如需创建区域磁盘,请执行以下操作:

      1. 选择区域级
      2. 区域字段中,选择与主磁盘的区域对应的区域
      3. 可用区字段中,选择主要可用区。
      4. 副本可用区字段中,选择副本可用区。
    • 如需创建可用区磁盘,请执行以下操作:

      1. 选择单个可用区
      2. 区域字段中,选择与主磁盘的区域对应的区域
      3. 可用区字段中,选择一个可用区。
  6. 点击创建。Compute Engine 会创建磁盘并开始复制。

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

替换以下内容:

  • 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 不同。

REST

使用以下方法之一创建可用区或区域辅助磁盘:

  • 如需创建可用区级辅助磁盘,请使用 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-ssdpd-balanced 中的一个。
  • PRIMARY_DISK_PROJECT:包含主磁盘的项目。
  • PRIMARY_DISK_LOCATION_PARAMETER:主磁盘的位置参数。
    • 对于区域主磁盘,请使用 regions
    • 对于可用区主磁盘,请使用 zones
  • PRIMARY_DISK_LOCATION:主磁盘的区域或可用区。对于区域磁盘,请使用区域。对于可用区磁盘,请使用可用区。
  • PRIMARY_DISK_NAME:辅助磁盘从中接收数据的主磁盘的名称。

创建自定义辅助磁盘

本部分介绍如何创建自定义辅助磁盘,即属性与主磁盘不同的辅助磁盘。

如果主磁盘是启动磁盘,则您无法更改或移除主磁盘的任何客机操作系统功能。您只能添加更多客机操作系统功能。如需了解详情,请参阅辅助磁盘自定义

您可以使用 gcloud CLI 或 REST 创建自定义辅助磁盘。您无法通过 Google Cloud 控制台自定义辅助磁盘。

gcloud

如需创建自定义辅助磁盘,请使用 gcloud compute disks create 命令(如创建与主磁盘相同的辅助磁盘中所述)。使用额外的标志自定义辅助磁盘的属性。

以下示例展示了如何自定义辅助磁盘:

  • 如需指定其他客机操作系统功能,请使用 --guest-os-features 参数。您不必添加主磁盘的客机操作系统功能。 辅助磁盘会自动继承主磁盘的客机操作系统功能。

     --guest-os-features=UEFI_COMPATIBLE,GVNIC,MULTI_IP_SUBNET
     

  • 要为辅助磁盘分配其他标签,请使用 --labels 参数。您不必添加主磁盘的标签。辅助磁盘会自动继承主磁盘的标签。
      --labels=secondary-disk-for-replication=yes
      

REST

如需创建自定义辅助磁盘,请使用创建与主磁盘相同的辅助磁盘中所述的相同方法。指定其他字段以自定义辅助磁盘的属性。

以下示例展示了如何自定义辅助磁盘:

  • 如需指定其他客机操作系统功能,请使用 guestOsFeatures 字段。您无需添加主磁盘的客机操作系统功能。 辅助磁盘会自动继承主磁盘的客机操作系统功能。
    "guestOsFeatures": [
      {
        "type": "NEW_FEATURE_ID_1"
      },
      {
        "type": "NEW_FEATURE_ID_1"
      }
    ]
    
  • 要为辅助磁盘分配其他标签,请使用 labels 字段。您无需添加主磁盘的标签。 辅助磁盘会自动从主磁盘继承标签。
      "labels": [
        {
          "key": "value"
        },
      ]
    

开始复制

创建主磁盘和辅助磁盘后,您必须开始复制才能开始将数据从主磁盘复制到辅助磁盘。

后续步骤