配置永久性磁盘异步复制


本文档介绍如何配置永久性磁盘异步复制。永久性磁盘异步复制功能可用于低 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

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

      gcloud init
    2. Set a default region and zone.
    3. REST

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

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

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

设置磁盘复制对

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

  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"
        },
      ]
    

开始复制

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

后续步骤