IBM Cloud Docs
创建快照一致性组

创建快照一致性组

快照一致性组包含连接到同一虚拟服务器实例的多个卷的快照。 可以包含或排除引导卷。 可以在控制台、CLI、API 和 Terraform 中创建一致性组。

当您请求一致性组的快照时,系统将确保在获取快照之前完成所有写操作。 然后,系统会生成同时连接到虚拟服务器实例的所有已标记 Block Storage 卷的快照。 根据附加卷的数量和大小以及要捕获的数据量,您可能会观察到轻微的 IO 暂停。 此 IO 暂停可以从几毫秒到 4 秒不等。

开始之前,请收集以下信息:

  • 一致性组的唯一名称。 名称不能超过 64 个字符。 如果未提供名称,那么系统会自动为您生成名称。 (一致性组中的快照使用组名的前 16 个字符和 3-4 自动生成的字符进行命名,因此它们的名称也是唯一的。)
  • 源卷的标识。
  • 资源组标识 (可选)。 但是,创建快照后就不能更改资源组了。
  • 要附加到快照的任何标记。

在控制台中创建一致性组快照

在控制台中,可以创建连接到正在运行的虚拟服务器实例的 Block Storage for VPC 卷的一致性组快照。

  1. 单击导航菜单图标菜单图标 > 基础架构 VPC 图标 > 存储 >Block Storage存储快照

  2. 从最初为空的一致性组列表中,单击 创建

  3. 输入定义快照组所需的信息,并选择要包含在快照一致性组中的卷的虚拟服务器实例。

    创建快照的选择
    字段
    地区 指定此快照集的地理位置和区域。
    快照类型 选择多个卷。
    虚拟服务器实例 从列表中选择服务器实例。
    一致性组名 为一致性组提供一个唯一的名称。 名称不能超过 64 个字符。 如果将此字段留空,那么系统会自动为您生成名称。 一致性组中的快照使用组名的前 16 个字符和 3-4 自动生成的字符进行命名。
    资源组 为快照选择 资源组,或者使用缺省值。 创建快照后不能更改资源组。
    标记 指定要标识此资源的任何用户标记。
    访问权管理标记 指定此资源的任何 访问管理标记
    从列表中选择要包含在组中的卷。
  4. 单击创建。 您将返回到从其开始的屏幕。 在创建快照和一致性组时以及快照和一致性组就绪时,将显示消息。 快照和一致性组显示在 VPC 的 Block Storage 快照页面上其各自的选项卡上。 有关更多信息,请参阅 在控制台中查看快照详细信息

从 CLI 创建一致性组快照

在使用 CLI 之前,您必须安装 IBM Cloud CLI 和 VPC CLI 插件。 有关更多信息,请参阅 CLI 先决条件

  1. 登录到 IBM Cloud®。

    ibmcloud login --sso -a cloud.ibm.com
    

    此命令会返回 URL 并提示输入密码。 在浏览器中转至该 URL 并登录。 如果成功,您将获得一次性密码。 复制此密码并将其作为响应粘贴到提示上。 成功认证后,系统会提示您选择帐户。 如果可以访问多个账户,请选择要登录的账户。 响应任何剩余提示以完成登录。

  2. 列出附加到要在快照一致性组中捕获的实例的卷。 记下输出中的卷标识。

    ibmcloud is instance INSTANCE
    
  3. 使用 snapshot-consistency-group-create 命令可创建一致性组。 为将属于一致性组的每个快照提供新快照的名称和源卷的标识。

    如果源卷具有 user_managed 加密,那么必须提供 --encryption_key。 否则不得指定 --encryption_key 属性。

    ibmcloud is snapshot-consistency-group-create --snapshots '[{
         "name": "snapshot-no-1",
         "source_volume": {"id": "r106-bf595773-9922-4dd4-9a3c-998b10022e0c"},
         "user_tags": ["env:dev", "env:test"]
    }, {
         "name": "snapshot-no-2",
         "source_volume": {"id": "r106-aeb2bbe6-1d3c-4186-82ce-abddb03e243e"},
         "user_tags": ["env:dev", "env:test"]
    }]' --delete-snapshot-on-delete false --name multiple-snapshots-consistency-group-1
    
    Creating snapshot consistency group under account Test Account as user test.user@ibm.com...
    
    ID                          r006-4625d29b-3ac9-4bee-aca8-9366c4fd0c44   
    Name                        multiple-snapshots-consistency-group-1   
    CRN                         crn:v1:bluemix:public:is:us-south:a/a1234567::snapshot-consistency-group:r006-4625d29b-3ac9-4bee-aca8-9366c4fd0c44   
    Href                        https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-4625d29b-3ac9-4bee-aca8-9366c4fd0c44   
    Status                      pending   
    Backup policy plan          -   
    Delete snapshot on delete   false   
    Source Snapshot             -   
    Resource group              ID                                 Name      
                                11caaa983d9c4beb82690daab08717e9   Default      
    
    Created                     2023-12-05T17:32:53+05:30   
    Service Tags                -
    

有关可用命令选项的更多信息,请参阅 ibmcloud is snapshot-consistency-group-create

使用 API 创建一致性组快照

开始之前,请 检索要在快照一致性组中捕获的虚拟服务器实例的实例详细信息。 请注意 volume_attachmentsboot_volume_attachment 的 CRN 或标识。

您可以通过在 VPC API 中调用 /snapshot_consistency_groups 方法来以编程方式创建一致性组,如以下样本请求中所示。

curl -X POST \
"$vpc_api_endpoint/v1/snapshot_consistency_groups?version=2023-12-05&generation=2"\
 -H "Authorization: $iam_token" \
 -d '{
   "delete_snapshots_on_delete":true,
   "name": "my-snapshot-consistency-group",
   "resource_group":{"id": "2d1bb5a8-40a8-447a-acf7-0eadc8aeb054"},
   "snapshots": {
    {
     "name": "my-snapshot-1",
     "source_volume": {"crn": "crn:[...]"},
     "encryption_key"; "crn:[...]"
    },
    {
     "name": "my-snapshot-2",
     "source_volume": {"crn": "crn:[...]"},
     "encryption_key"; "crn:[...]"
    },
   }"

如果源卷具有 user_managed 加密,那么必须提供 encryption_key。 否则不得指定 encryption_key 属性。

成功回复的示例如下

{
  "created_at": "2023-12-05T20:18:18Z",
  "crn": "crn:[...]",
  "delete_snapshots_on_delete": true,
  "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshot_consistency_groups/r006-f6bfa329-0e36-433f-a3bb-0df632e79263",
  "id": "r006-f6bfa329-0e36-433f-a3bb-0df632e79263",
  "lifecycle_state": "pending",
  "name": "my-snapshot-consistency-group",
  "resource_group": {
    "href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/678523bcbe2b4eada913d32640909956",
    "id": "2d1bb5a8-40a8-447a-acf7-0eadc8aeb054",
    "name": "Default"
  },
  "resource_type": "snapshot_consistency_group",
  "service_tags": [],
  "snapshots": [
    {
      "crn": "crn:[...]",
      "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-076191ba-49c2-4763-94fd-c70de73ee2e6",
      "id": "r006-076191ba-49c2-4763-94fd-c70de73ee2e6",
      "name": "my-snapshot-1",
      "resource_type": "snapshot"
    },
    {
      "crn": "crn:[...]",
      "href": "https://us-south.iaas.cloud.ibm.com/v1/snapshots/r006-07e34f34-49c2-4763-94fd-c70de73ae342",
      "id": "r006-07e34f34-49c2-4763-94fd-c70de73ae342",
      "name": "my-snapshot-2",
      "resource_type": "snapshot"
    }
  ]
}

使用 Terraform 创建一致性组快照

要使用 Terraform,请下载 Terraform CLI 并配置 IBM Cloud® 提供者插件。 有关更多信息,请参阅 Terraform 入门

VPC 基础架构服务使用特定区域端点,缺省情况下该端点以 us-south 为目标。 如果在另一个区域中创建了 VPC,请确保将 provider.tf 文件中的提供程序块中的相应区域作为目标。

请参阅以下以非缺省 us-south 的区域为目标的示例。

provider "ibm" {
   region = "eu-de"
}
  1. 将虚拟服务器实例的详细信息作为只读数据源导入。 创建数据源后,您可以访问 boot_volumevolume_attachments 的属性引用。
data "ibm_is_instance" "example" {
  name        = ibm_is_instance.example.name
  private_key = file("~/.ssh/id_rsa")
  passphrase  = ""
}
  1. 要创建快照的一致性组,请使用 ibm_is_snapshot_consistency_group 资源。 以下示例创建由两个卷组成的一致性组。
resource "ibm_is_snapshot_consistency_group" "is_snapshot_consistency_group" {
  name = "my-data-consistency-group"
  snapshots {
    [
      name = "snapshot-1"
      source_volume = {id = "r016-0a74c6af-f9f5-4671-9025-c4efd41ac6da"}
      user_tags = ["my-tag"]
    ].
    [
      name = "snapshot-2"
      source_volume = {id = "r016-0a74c6af-f9f5-4671-9025-c4efd41ac6db"}
      user_tags = ["my-tag"]
    ]
  }
}

有关自变量和属性的更多信息,请参阅 ibm_is_snapshot_consistency_group