共享组类型

共享组类型就像 共享的共享类型 一样,是共享组的类型。组类型与组规范相关联,类似于附加规范与共享类型相关联的方式。

共享组类型有助于调度器在您创建共享组时过滤或选择后端,并为共享组设置任何后端特定参数。任何能够以优势方式执行组操作的驱动程序都可以将其报告为组功能,例如

  • 有序写入

  • 一致快照

  • 组复制

  • 组备份

共享组类型可以包含后端报告的组功能对应的组规范。组功能适用于共享组内的所有共享,例如,后端可以支持 consistent_snapshot_support,并在组类型中使用此组类型附加规范将允许将共享组调度到该后端。每当启动组的快照时,都会对所有组成共享进行一致的崩溃快照。共享组中的共享可以具有不同的共享类型,因为它们可以位于单独的池中,具有不同的功能,甚至最终用户可以使用不同的方式为使用它们付费。为了允许这种可能性,可以与组类型关联一个或多个共享类型。管理员还指定给定的组类型可以包含哪些共享类型。创建共享组类型时,必须提供至少一种共享类型。当用户创建共享组时,调度器会在与指定的共享类型和共享组类型匹配的后端之一上创建组。

在共享文件系统配置文件 manila.conf 中,管理员可以设置用于共享组创建的共享组类型的默认值。

要创建共享组类型,请使用 openstack share group type create 命令,如下所示

openstack share group type create [-h]
                                      [-f {json,shell,table,value,yaml}]
                                      [-c COLUMN] [--noindent]
                                      [--prefix PREFIX]
                                      [--max-width <integer>]
                                      [--fit-width] [--print-empty]
                                      [--group-specs [<key=value> ...]]
                                      [--public <public>]
                                      <name> <share-types>
                                      [<share-types> ...]

其中 name 是共享组类型名称,--public 定义了共享组类型的可见性级别。一个共享组可以包含多个 share-types--group-specs 是用于过滤后端的附加规范。

注意

在共享组类型中设置的附加规范在 调度 中进一步说明。

管理员可以使用这些附加规范为后端过滤创建共享组类型。管理员可以使用 policy.yaml 文件来授予其他角色使用附加规范创建共享组类型的权限。

您可以将共享组类型设置为私有或公共,并 管理对私有共享组类型的访问。默认情况下,共享组类型创建为公开可访问。将 --public 设置为 False 以使共享组类型私有。

共享组类型操作

要创建新的共享组类型,您需要指定新共享组类型的名称和现有的共享类型。新的共享组类型也可以是公开的。一个共享组可以包含多个共享类型。

$ openstack share group type create group_type_for_cg default --public True
+-------------+--------------------------------------+
| Field       | Value                                |
+-------------+--------------------------------------+
| id          | cd7173f2-93f9-4977-aa55-eb8884333a07 |
| name        | group_type_for_cg                    |
| share_types | c069126a-2d87-4bbb-a395-1dc5a5ac5d96 |
| visibility  | public                               |
| is_default  | False                                |
| group_specs |                                      |
+-------------+--------------------------------------+

$ openstack share group type list
+--------------------------------------+-------------------+--------------------------------------+------------+------------+-------------+
| ID                                   | Name              | Share Types                          | Visibility | Is Default | Group Specs |
+--------------------------------------+-------------------+--------------------------------------+------------+------------+-------------+
| cd7173f2-93f9-4977-aa55-eb8884333a07 | group_type_for_cg | c069126a-2d87-4bbb-a395-1dc5a5ac5d96 | public     | False      |             |
+--------------------------------------+-------------------+--------------------------------------+------------+------------+-------------+

您可以使用 openstack share group type set <share_group_type> –group-specs <key=value> 命令为共享组类型设置附加规范。

$ openstack share group type set group_type_for_cg --group-specs consistent_snapshot_support=host

也可以查看当前共享组类型和附加规范的列表

$ openstack share group type list
+--------------------------------------+-------------------+--------------------------------------+------------+------------+------------------------------------+
| ID                                   | Name              | Share Types                          | Visibility | Is Default | Group Specs                        |
+--------------------------------------+-------------------+--------------------------------------+------------+------------+------------------------------------+
| cd7173f2-93f9-4977-aa55-eb8884333a07 | group_type_for_cg | c069126a-2d87-4bbb-a395-1dc5a5ac5d96 | public     | False      | consistent_snapshot_support : host |
+--------------------------------------+-------------------+--------------------------------------+------------+------------+------------------------------------+

使用 openstack share group type unset <share_group_type> <key> 命令取消设置一个或多个附加规范。

$ openstack share group type unset test_group_type mount_snapshot_support

可以使用 openstack share group type delete <share_group_type> 命令删除公共或私有共享组类型。

共享组类型访问

您可以管理对不同项目的私有共享组类型的访问。管理员可以提供访问权限、撤销访问权限以及检索有关指定私有共享组类型的访问权限信息。

创建私有组类型

$ openstack share group type create my_type1 default --public False
+-------------+--------------------------------------+
| Field       | Value                                |
+-------------+--------------------------------------+
| id          | 0c488ca6-8843-4313-ba2b-cc33acb2af73 |
| name        | my_type1                             |
| share_types | c069126a-2d87-4bbb-a395-1dc5a5ac5d96 |
| visibility  | private                              |
| is_default  | False                                |
| group_specs |                                      |
+-------------+--------------------------------------+

注意

如果您运行 openstack share group type list,公共和私有共享组类型都会出现。

通过提供他们的 ID,为 demo 和 alt_demo 项目授予对创建的私有类型的访问权限

$ openstack share group type access create my_type1 63ce0a1452384fce9edb0189425ea0e2
$ openstack share group type access create my_type1 d274cfc59e2543d38aa223af4f5eb327

要查看有关私有共享组类型的访问信息,请使用命令 openstack share group type access list my_type1

$ openstack share group type access list my_type1
+----------------------------------+
| Project ID                       |
+----------------------------------+
| 63ce0a1452384fce9edb0189425ea0e2 |
| d274cfc59e2543d38aa223af4f5eb327 |
+----------------------------------+

在授予对共享组类型的访问权限后,目标项目可以在列表中看到该共享组类型,并创建私有共享组。

要拒绝指定项目的访问权限,请使用 openstack share group type access delete <share_group_type> <project_id> 命令。

$ openstack share group type access delete my_type1 b0fa13353e594d6f809dfa405fedc46a