通用卷组

自 Newton 版本以来,OpenStack 块存储 (cinder) 中提供了通用卷组支持。添加了支持用于创建组类型和组规格,创建卷组以及创建组快照。可以使用块存储命令行执行组操作。

组类型就像卷的卷类型一样,是组的一种类型。组类型也可以具有与卷类型附加规格类似的组规格。

在 cinder 中,存在一种称为 一致性组 的组结构。一致性组仅支持一致性组快照,并且只有少数驱动程序可以支持它。以下是支持一致性组及其添加支持版本的驱动程序列表

  • Juno: EMC VNX

  • Kilo: EMC VMAX, IBM (GPFS, Storwize, SVC, 和 XIV), ProphetStor, Pure

  • Liberty: Dell Storage Center, EMC XtremIO, HPE 3Par 和 LeftHand

  • Mitaka: EMC ScaleIO, NetApp Data ONTAP, SolidFire

  • Newton: CoprHD, FalconStor, Huawei

一致性组不能轻易扩展以服务其他目的。租户可能希望将同一应用程序中使用的卷放在一起,以便更轻松地一起管理它们,并且该卷组可能或可能不支持一致性组快照。引入通用卷组是为了解决这个问题。

计划在未来的版本中将现有的所有一致性组操作迁移到使用通用卷组操作。更多信息请参见 Cinder 规格

注意

仅块存储 V3 API 支持组。在使用 cinder 命令行进行组操作时,可以指定 --os-volume-api-version 3.x,其中 3.x 包含该命令的微版本值。通用卷组功能是在多个补丁中完成的。因此,组类型、组和组快照 API 的最低必需微版本不同。

支持以下组类型操作

  • 创建一个组类型。

  • 删除一个组类型。

  • 为组类型设置组规格。

  • 为组类型取消设置组规格。

  • 列出组类型。

  • 显示组类型详细信息。

  • 更新一个组。

  • 列出组类型和组规格。

支持以下组和组快照操作

  • 给定组类型和卷类型创建一个组。

    注意

    一个组必须有一个组类型。一个组可以支持多种卷类型。调度程序负责找到可以支持给定的组类型和卷类型的后端。

    一个组只能包含由同一后端托管的卷。

    组在创建时为空。需要稍后创建卷并将其添加到其中。

  • 显示一个组。

  • 列出组。

  • 删除一个组。

  • 修改一个组。

  • 创建一个卷并将其添加到组中。

  • 为组创建一个快照。

  • 显示一个组快照。

  • 列出组快照。

  • 删除一个组快照。

  • 从组快照创建一个组。

  • 从源组创建一个组。

如果卷在组中,则不允许以下操作

  • 卷迁移。

  • 卷重定型。

  • 卷删除。

    注意

    必须将组作为一个整体与所有卷一起删除。

如果卷快照在组快照中,则不允许以下操作

  • 卷快照删除。

    注意

    必须将组快照作为一个整体与所有卷快照一起删除。

以下显示了组类型操作的详细信息。支持组类型和组规格的最低微版本是 3.11

创建一个组类型:

cinder --os-volume-api-version 3.11 group-type-create
[--description DESCRIPTION]
[--is-public IS_PUBLIC]
NAME

注意

参数 NAME 是必需的。 --is-public IS_PUBLIC 确定组类型是否可供公众访问。默认情况下为 True。默认情况下,创建组类型的特权策略仅限管理员。

显示一个组类型:

cinder --os-volume-api-version 3.11 group-type-show
GROUP_TYPE

注意

参数 GROUP_TYPE 是组类型的名称或 UUID。

列出组类型:

cinder --os-volume-api-version 3.11 group-type-list

注意

只有管理员才能查看私有组类型。

更新一个组类型:

cinder --os-volume-api-version 3.11 group-type-update
[--name NAME]
[--description DESCRIPTION]
[--is-public IS_PUBLIC]
GROUP_TYPE_ID

注意

参数 GROUP_TYPE_ID 是组类型的 UUID。默认情况下,更新组类型的特权策略仅限管理员。

删除组类型或类型:

cinder --os-volume-api-version 3.11 group-type-delete
GROUP_TYPE [GROUP_TYPE ...]

注意

参数 GROUP_TYPE 是要删除的组类型或组类型的名称或 UUID。默认情况下,删除组类型的特权策略仅限管理员。

为组类型设置或取消设置组规格:

cinder --os-volume-api-version 3.11 group-type-key
GROUP_TYPE ACTION KEY=VALUE [KEY=VALUE ...]

注意

参数 GROUP_TYPE 是组类型的名称或 UUID。参数 ACTION 的有效值是 setunsetKEY=VALUE 是要设置或取消设置的组规格键值对。对于取消设置,仅指定键。默认情况下,设置或取消设置组规格键的特权策略仅限管理员。

列出组类型和组规格:

cinder --os-volume-api-version 3.11 group-specs-list

注意

默认情况下,查看组规格的特权策略仅限管理员。

以下显示了组操作的详细信息。支持组操作的最低微版本是 3.13。

创建一个组:

cinder --os-volume-api-version 3.13 group-create
[--name NAME]
[--description DESCRIPTION]
[--availability-zone AVAILABILITY_ZONE]
GROUP_TYPE VOLUME_TYPES

注意

参数 GROUP_TYPEVOLUME_TYPES 是必需的。 GROUP_TYPE 是组类型的名称或 UUID。 VOLUME_TYPES 可以是逗号分隔的卷类型名称或 UUID 列表,中间没有空格。例如,volumetype1,volumetype2,volumetype3.

显示一个组:

cinder --os-volume-api-version 3.13 group-show
GROUP

注意

参数 GROUP 是组的名称或 UUID。

列出组:

cinder --os-volume-api-version 3.13 group-list
[--all-tenants [<0|1>]]

注意

--all-tenants 指定是否列出所有租户的组。只有管理员可以使用此选项。

创建一个卷并将其添加到组中:

cinder --os-volume-api-version 3.13 create
--volume-type VOLUME_TYPE
--group-id GROUP_ID SIZE

注意

在创建卷并将其添加到组中时,必须提供参数 VOLUME_TYPEGROUP_ID。这是因为一个组可以支持多种卷类型。

删除一个组:

cinder --os-volume-api-version 3.13 group-delete
[--delete-volumes]
GROUP [GROUP ...]

注意

--delete-volumes 允许或不允许删除非空组。如果组为空,则无需 --delete-volumes 即可删除它。如果组非空,则必须指定该标志才能将其删除。指定该标志时,将删除组及其中的所有卷。

修改一个组:

cinder --os-volume-api-version 3.13 group-update
[--name NAME]
[--description DESCRIPTION]
[--add-volumes UUID1,UUID2,......]
[--remove-volumes UUID3,UUID4,......]
GROUP

注意

参数 UUID1,UUID2,...... 是要添加到组的卷的 UUID,用逗号分隔。 类似地,参数 UUID3,UUID4,...... 是要从组中删除的卷的 UUID,用逗号分隔。

以下显示了组快照操作的详细信息。支持组快照操作的最低微版本是 3.14。

为组创建一个快照:

cinder --os-volume-api-version 3.14 group-snapshot-create
[--name NAME]
[--description DESCRIPTION]
GROUP

注意

参数 GROUP 是组的名称或 UUID。

显示一个组快照:

cinder --os-volume-api-version 3.14 group-snapshot-show
GROUP_SNAPSHOT

注意

参数 GROUP_SNAPSHOT 是组快照的名称或 UUID。

列出组快照:

cinder --os-volume-api-version 3.14 group-snapshot-list
[--all-tenants [<0|1>]]
[--status STATUS]
[--group-id GROUP_ID]

注意

--all-tenants 指定是否列出所有租户的组快照。只有管理员可以使用此选项。 --status STATUS 按状态过滤结果。 --group-id GROUP_ID 按组 ID 过滤结果。

删除组快照:

cinder --os-volume-api-version 3.14 group-snapshot-delete
GROUP_SNAPSHOT [GROUP_SNAPSHOT ...]

注意

参数 GROUP_SNAPSHOT 指定要删除的一个或多个组快照的名称或 UUID。

从组快照或源组创建一个组:

$ cinder --os-volume-api-version 3.14 group-create-from-src
[--group-snapshot GROUP_SNAPSHOT]
[--source-group SOURCE_GROUP]
[--name NAME]
[--description DESCRIPTION]

注意

参数 GROUP_SNAPSHOT 是组快照的名称或 UUID。参数 SOURCE_GROUP 是源组的名称或 UUID。必须指定 GROUP_SNAPSHOTSOURCE_GROUP,但不能同时指定两者。