共享组

自 Ocata 版本以来,Manila 中提供了共享组支持。共享组是共享的集合,用户可以在其上执行基于组的操作,例如一起创建快照。该框架旨在允许在 Manila 的未来版本中同步迁移或复制一组共享。目前支持创建组类型和组规范、创建共享组以及创建组快照。可以使用命令行客户端执行这些组操作。

要创建共享组并访问它,以下一般概念是先决知识

  1. 要创建共享组,请使用 manila share-group-create 命令。

  2. 您可以指定 share-network共享组类型source-share-group-snapshotavailability-zone共享类型

  3. 共享组可用后,使用 manila create 命令在共享组内创建共享。

注意

共享组限制为单个后端,即在特定共享组内创建的所有共享最终都位于同一后端上。如果后端支持池,则可以在单独的池中创建共享。因此,此功能适合于需要不同共享协同定位的用户。

共享组上的操作

某些操作,例如扩展和缩小,本质上仅适用于单个共享。理论上可以将扩展应用于组,增加每个成员的大小,但这最初不会涵盖用例。此类别中的任何操作都必须仍然可用于组成员,并且可以允许对组成员进行快照等操作,但迁移或复制等操作仅在组级别可用,而不是在其成员上。

共享操作

共享组操作

创建(共享类型)

创建(共享类型、组类型)

删除

删除(组)

快照

快照(可能是或可能不是一致的组快照)

从快照创建

从组快照创建

克隆

克隆组(及其所有成员)(计划中)

复制

复制(计划中)

迁移

迁移(计划中)

扩展/缩小

不适用

使用共享组创建共享

创建共享组类型

在此示例中,我们将创建一个新的共享组类型,并在 share-group-type-create 中使用的组规范中指定 consistent_snapshot_support

使用 manila type-list 命令获取共享类型。然后使用共享类型创建共享组类型。

$ manila type-list
+--------------------------------------+---------------------+------------+------------+--------------------------------------+-----------------------------+
| ID                                   | Name                | visibility | is_default | required_extra_specs                 | optional_extra_specs        |
+--------------------------------------+---------------------+------------+------------+--------------------------------------+-----------------------------+
| ee6287aa-448b-432b-a928-41ce9d8e149f | default_share_type  | public     | -          | driver_handles_share_servers : False |                             |
+--------------------------------------+---------------------+------------+------------+--------------------------------------+-----------------------------+

使用 manila share-group-type-create 命令创建新的共享组类型。指定名称和共享类型。

$ manila share-group-type-create group_type_for_cg default_share_type
+------------+--------------------------------------+
| Property   | Value                                |
+------------+--------------------------------------+
| is_default | -                                    |
| ID         | cfe42f20-d13e-4348-9370-f0763e426db3 |
| Visibility | public                               |
| Name       | group_type_for_cg                    |
+------------+--------------------------------------+

使用 manila share-group-type-key 命令将组规范设置为共享组类型。

$ manila share-group-type-key group_type_for_cg set consistent_snapshot_support=host

注意

此命令没有输出。要验证组规范,请使用 manila share-group-type-specs-list 命令,并将共享组类型的名称或 ID 作为参数指定。

创建共享组

使用 manila share-group-create 命令创建共享组。指定我们创建的共享组类型。

$ manila share-group-create --share-group-type group_type_for_cg
+--------------------------------+--------------------------------------+
| Property                       | Value                                |
+--------------------------------+--------------------------------------+
| status                         | creating                             |
| description                    | None                                 |
| created_at                     | 2017-09-11T02:08:52.319921           |
| source_share_group_snapshot_id | None                                 |
| share_network_id               | None                                 |
| share_server_id                | None                                 |
| host                           | None                                 |
| share_group_type_id            | cfe42f20-d13e-4348-9370-f0763e426db3 |
| project_id                     | 87ba30b5315c40ec8ec5e3346112eae4     |
| share_types                    | ee6287aa-448b-432b-a928-41ce9d8e149f |
| id                             | ecf78d45-546a-48df-a969-c153e68f0376 |
| name                           | None                                 |
+--------------------------------+--------------------------------------+

注意

一个共享组可以包含多个共享类型。共享类型将直接从共享组类型继承而来。

使用 manila share-group-show 命令检索共享的详细信息。指定共享 ID 或名称作为参数。

$ manila share-group-show ecf78d45-546a-48df-a969-c153e68f0376
+--------------------------------+-------------------------------------------+
| Property                       | Value                                     |
+--------------------------------+-------------------------------------------+
| status                         | available                                 |
| description                    | None                                      |
| created_at                     | 2017-09-11T02:08:53.000000                |
| source_share_group_snapshot_id | None                                      |
| share_network_id               | None                                      |
| share_server_id                | None                                      |
| host                           | ubuntu@generic2#test_pool                 |
| share_group_type_id            | cfe42f20-d13e-4348-9370-f0763e426db3      |
| project_id                     | 87ba30b5315c40ec8ec5e3346112eae4          |
| share_types                    | ee6287aa-448b-432b-a928-41ce9d8e149f      |
| id                             | ecf78d45-546a-48df-a969-c153e68f0376      |
| name                           | None                                      |
+--------------------------------+-------------------------------------------+

使用共享组创建共享

使用 manila create 命令创建共享。指定共享协议、大小、共享组类型和共享名称。

$ manila create NFS 1 --share-group ecf78d45-546a-48df-a969-c153e68f0376 --name test_group_share_1
+---------------------------------------+-------------------------------------------+
| Property                              | Value                                     |
+---------------------------------------+-------------------------------------------+
| status                                | creating                                  |
| share_type_name                       | default_share_type                        |
| description                           | None                                      |
| availability_zone                     | None                                      |
| share_network_id                      | None                                      |
| share_server_id                       | None                                      |
| share_group_id                        | ecf78d45-546a-48df-a969-c153e68f0376      |
| host                                  | ubuntu@generic2#test_pool                 |
| revert_to_snapshot_support            | False                                     |
| access_rules_status                   | active                                    |
| snapshot_id                           | None                                      |
| create_share_from_snapshot_support    | False                                     |
| is_public                             | False                                     |
| task_state                            | None                                      |
| snapshot_support                      | False                                     |
| id                                    | 21997eaf-712e-433e-8872-4ff085683657      |
| size                                  | 1                                         |
| source_share_group_snapshot_member_id | None                                      |
| user_id                               | b7f2c522a5644a83b78b3f61f50c6d71          |
| name                                  | test_group_share_1                        |
| share_type                            | ee6287aa-448b-432b-a928-41ce9d8e149f      |
| has_replicas                          | False                                     |
| replication_type                      | None                                      |
| created_at                            | 2017-09-11T02:28:16.000000                |
| share_proto                           | NFS                                       |
| mount_snapshot_support                | False                                     |
| project_id                            | 87ba30b5315c40ec8ec5e3346112eae4          |
| metadata                              | {}                                        |
+---------------------------------------+-------------------------------------------+

创建另一个具有相同共享组的共享,并命名为“test_group_share_2”。

$ manila create NFS 1 --share-group ecf78d45-546a-48df-a969-c153e68f0376 --name test_group_share_2
+---------------------------------------+-------------------------------------------+
| Property                              | Value                                     |
+---------------------------------------+-------------------------------------------+
| status                                | creating                                  |
| share_type_name                       | default_share_type                        |
| description                           | None                                      |
| availability_zone                     | None                                      |
| share_network_id                      | None                                      |
| share_server_id                       | None                                      |
| share_group_id                        | ecf78d45-546a-48df-a969-c153e68f0376      |
| host                                  | ubuntu@generic2#test_pool                 |
| revert_to_snapshot_support            | False                                     |
| access_rules_status                   | active                                    |
| snapshot_id                           | None                                      |
| create_share_from_snapshot_support    | False                                     |
| is_public                             | False                                     |
| task_state                            | None                                      |
| snapshot_support                      | False                                     |
| id                                    | 8d34a9a3-3b8c-4771-af2c-66c78fe1e0b1      |
| size                                  | 1                                         |
| source_share_group_snapshot_member_id | None                                      |
| user_id                               | b7f2c522a5644a83b78b3f61f50c6d71          |
| name                                  | test_group_share_2                        |
| share_type                            | ee6287aa-448b-432b-a928-41ce9d8e149f      |
| has_replicas                          | False                                     |
| replication_type                      | None                                      |
| created_at                            | 2017-09-11T21:01:36.000000                |
| share_proto                           | NFS                                       |
| mount_snapshot_support                | False                                     |
| project_id                            | 87ba30b5315c40ec8ec5e3346112eae4          |
| metadata                              | {}                                        |
+---------------------------------------+-------------------------------------------+

创建共享组快照

创建共享组的快照

使用 manila share-group-snapshot-create 命令创建共享组快照。指定共享组 ID 或名称。

$ manila share-group-snapshot-create  ecf78d45-546a-48df-a969-c153e68f0376
+----------------+--------------------------------------+
| Property       | Value                                |
+----------------+--------------------------------------+
| status         | creating                             |
| name           | None                                 |
| created_at     | 2017-09-11T21:04:54.612737           |
| share_group_id | ecf78d45-546a-48df-a969-c153e68f0376 |
| project_id     | 87ba30b5315c40ec8ec5e3346112eae4     |
| id             | ac387240-08dc-4b23-80f6-ffc481e6c87a |
| description    | None                                 |
+----------------+--------------------------------------+

显示共享组快照的成员

使用 manila share-group-snapshot-create 命令查看共享组快照的所有共享成员。指定共享组快照 ID 或名称。

$ manila share-group-snapshot-list-members  ac387240-08dc-4b23-80f6-ffc481e6c87a
+--------------------------------------+------+
| Share ID                             | Size |
+--------------------------------------+------+
| 21997eaf-712e-433e-8872-4ff085683657 | 1    |
| 8d34a9a3-3b8c-4771-af2c-66c78fe1e0b1 | 1    |
+--------------------------------------+------+

显示共享组快照的详细信息

$ manila share-group-snapshot-show ac387240-08dc-4b23-80f6-ffc481e6c87a
+----------------+--------------------------------------+
| Property       | Value                                |
+----------------+--------------------------------------+
| status         | available                            |
| name           | None                                 |
| created_at     | 2017-09-11T21:04:55.000000           |
| share_group_id | ecf78d45-546a-48df-a969-c153e68f0376 |
| project_id     | 87ba30b5315c40ec8ec5e3346112eae4     |
| id             | ac387240-08dc-4b23-80f6-ffc481e6c87a |
| description    | None                                 |
+----------------+--------------------------------------+

删除共享组

使用 manila share-group-delete <group_id> 删除共享组。

删除共享组快照

使用 manila share-group-snapshot-delete <group_snapshot_id> 删除共享组快照。

重要提示

在尝试删除共享组或共享组快照之前,请确保已删除其所有组成共享和快照。用户需要先删除共享组快照,然后才能尝试删除共享组内的共享或组本身。