共享类型

共享文件系统服务后端存储驱动程序提供广泛的功能。这些功能的差异允许云管理员向最终用户提供存储服务目录。共享类型可用于创建此存储服务目录。云管理员可以借助共享类型影响用户共享的配置。所有共享都与一种共享类型相关联。共享类型类似于 OpenStack 计算服务 (nova) 中的 风味 (flavors),或 OpenStack 块存储服务 (cinder) 中的 卷 (volume) 类型 (types),或 Kubernetes 中的 存储 (storage) 类 (classes)。如果您希望,您可以允许共享类型对云中的所有用户可用。您还可以创建私有共享类型,仅允许属于特定 OpenStack 项目的用户访问它们。您的云中可以拥有无限数量的共享类型,但出于实际目的,您可能只想创建少量公开可用的共享类型。

每个共享类型都是一个包含 额外规格 (extra-specs)(额外规范)的对象。这些额外规格可以映射到存储后端功能,也可以是服务的指令。

例如,考虑在您的云中提供三种共享类型来映射到“服务级别”

类型

功能/说明

黄金

允许创建快照、还原到快照和共享复制,“厚”配置共享

白银

允许创建快照,“薄”配置共享

青铜

不允许创建快照,“薄”配置共享

如上所示的功能或说明被编码为用户和共享文件系统服务理解的额外规格。OpenStack 项目中的用户可以看到所有公共共享类型以及对他们开放的私有共享类型。您配置的并非所有额外规格都对您的用户可见。这种设计有助于保留云抽象。除了共享类型名称之外,他们还可以看到共享类型描述和“租户可见”的额外规格。

有关额外规格的更多详细信息,请参阅 功能和额外规格

共享文件系统服务还允许使用共享类型的配额控制。配额可以通过限制可消耗的资源数量来帮助您维护您的 SLA,或协助计费。有关更多详细信息,请参阅 配额和限制

驱动程序处理共享服务器 (DHSS)

为了在网络数据路径上提供安全且严格的多租户,共享文件系统服务允许用户使用他们自己的“共享网络”。当在共享网络上创建共享时,用户可以确信他们拥有自己的隔离“共享服务器”,这些服务器在共享网络上导出他们的共享,并且能够插入用户确定的身份验证域(“安全服务”)。并非所有共享文件系统服务存储驱动程序都支持共享网络。那些支持的驱动程序断言了功能 driver_handles_share_servers=True

创建共享类型时,您必须设置与此功能匹配的额外规格。它对最终用户可见。

默认共享类型

如果您正在运营一个所有租户都受信任的云,您可能希望创建一个适用于所有租户的“默认”共享类型。这简化了最终用户的共享创建,因为他们不必担心共享类型。

在多租户云中使用默认共享类型不建议这样做,因为您可能希望分离用户工作负载,或提供不同的服务功能。在这种情况下,您必须始终鼓励您的用户在创建共享时指定共享类型,而不是依赖于默认共享类型。

重要提示

如果您没有创建和配置默认共享类型,用户必须在创建共享时指定有效的共享类型,否则共享创建请求将失败。

要配置默认共享类型,请编辑 manila.conf 文件,并设置配置选项 [DEFAULT]/default_share_type。

然后,您必须使用 manila type-create 创建一个共享类型

manila type-create [--is_public <is_public>]
                   [--description <description>]
                   [--extra-specs <other-extra-specs>]
                   <name> <spec_driver_handles_share_servers>

其中

  • name 是共享类型名称

  • is_public 定义共享类型的可见性(true/false)

  • description 是一个自由文本字段,用于描述共享类型的特征,以供您的用户参考

  • extra-specs 定义一个逗号分隔的键=值对集合,用于可选的额外规范

  • spec_driver_handles_share_servers 是强制性的额外规格(true/false)

共享类型操作

要创建新的共享类型,您需要指定新共享类型的名称。您还需要一个额外的规格 driver_handles_share_servers。新的共享类型可以是公共的或私有的。

$ manila manila type-create default-shares False \
  --description "Default share type for the cloud, no fancy capabilities"

$ manila type-list
 +--------------------------------------+-----------------------------------+------------+------------+--------------------------------------+-------------------------------------------+---------------------------------------------------------+
 | ID                                   | Name                              | visibility | is_default | required_extra_specs                 | optional_extra_specs                      | Description                                             |
 +--------------------------------------+-----------------------------------+------------+------------+--------------------------------------+-------------------------------------------+---------------------------------------------------------+
 | cf1f92ec-4d0a-4b79-8f18-6bb82c22840a | default-shares                    | public     | -          | driver_handles_share_servers : False |                                           | Default share type for the cloud, no fancy capabilities |
 +--------------------------------------+-----------------------------------+------------+------------+--------------------------------------+-------------------------------------------+---------------------------------------------------------+

 $ manila type-show default-shares
 +----------------------+---------------------------------------------------------+
 | Property             | Value                                                   |
 +----------------------+---------------------------------------------------------+
 | id                   | cf1f92ec-4d0a-4b79-8f18-6bb82c22840a                    |
 | name                 | default-shares                                          |
 | visibility           | public                                                  |
 | is_default           | NO                                                      |
 | description          | Default share type for the cloud, no fancy capabilities |
 | required_extra_specs | driver_handles_share_servers : False                    |
 | optional_extra_specs |                                                         |
 +----------------------+---------------------------------------------------------+

您没有提供可选功能,因此默认情况下所有功能都被假定为关闭。因此,非特权用户会看到一些租户可见的功能。

$ source demorc
$ manila type-list
+--------------------------------------+-----------------------------------+------------+------------+--------------------------------------+--------------------------------------------+---------------------------------------------------------+
| ID                                   | Name                              | visibility | is_default | required_extra_specs                 | optional_extra_specs                       | Description                                             |
+--------------------------------------+-----------------------------------+------------+------------+--------------------------------------+--------------------------------------------+---------------------------------------------------------+
| cf1f92ec-4d0a-4b79-8f18-6bb82c22840a | default-shares                    | public     | -          | driver_handles_share_servers : False | snapshot_support : False                   | Default share type for the cloud, no fancy capabilities |
+--------------------------------------+-----------------------------------+------------+------------+--------------------------------------+--------------------------------------------+---------------------------------------------------------+

$ manila type-show default-shares
+----------------------+---------------------------------------------------------+
| Property             | Value                                                   |
+----------------------+---------------------------------------------------------+
| id                   | cf1f92ec-4d0a-4b79-8f18-6bb82c22840a                    |
| name                 | default-shares                                          |
| visibility           | public                                                  |
| is_default           | NO                                                      |
| description          | Default share type for the cloud, no fancy capabilities |
| required_extra_specs | driver_handles_share_servers : False                    |
| optional_extra_specs | snapshot_support : False                                |
|                      | create_share_from_snapshot_support : False              |
|                      | revert_to_snapshot_support : False                      |
|                      | mount_snapshot_support : False                          |
+----------------------+---------------------------------------------------------+

您可以使用 manila type-key <share_type> set <key=value> 命令设置或取消设置共享类型的额外规格。

$ manila type-key default-shares set snapshot_support=True

$ manila type-show default-shares
 +----------------------+---------------------------------------------------------+
 | Property             | Value                                                   |
 +----------------------+---------------------------------------------------------+
 | id                   | cf1f92ec-4d0a-4b79-8f18-6bb82c22840a                    |
 | name                 | default-shares                                          |
 | visibility           | public                                                  |
 | is_default           | NO                                                      |
 | description          | Default share type for the cloud, no fancy capabilities |
 | required_extra_specs | driver_handles_share_servers : False                    |
 | optional_extra_specs | snapshot_support : True                                 |
 +----------------------+---------------------------------------------------------+

使用 manila type-key <share_type> unset <key> 命令取消设置额外的规格。

可以使用 manila type-delete <share_type> 命令删除共享类型。但是,只有在没有与共享类型关联的共享、共享组或共享组类型时,才能删除共享类型。

共享类型访问控制

您可以为指定的私有共享提供访问权限、撤销访问权限以及检索允许的项目列表。

创建一个私有类型

$ manila type-create my_type1 True \
         --is_public False \
         --extra-specs snapshot_support=True
+----------------------+--------------------------------------+
| Property             | Value                                |
+----------------------+--------------------------------------+
| required_extra_specs | driver_handles_share_servers : True  |
| Name                 | my_type1                             |
| Visibility           | private                              |
| is_default           | -                                    |
| ID                   | 06793be5-9a79-4516-89fe-61188cad4d6c |
| optional_extra_specs | snapshot_support : True              |
+----------------------+--------------------------------------+

注意

如果您运行 manila type-list,只有公共共享类型才会出现。要查看私有共享类型,请运行 manila type-list --all`

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

$ manila type-access-add my_type1 d8f9af6915404114ae4f30668a4f5ba7
$ manila type-access-add my_type1 e4970f57f1824faab2701db61ee7efdf

要查看私有共享的访问信息,请键入 my_type1

$ manila type-access-list my_type1
+----------------------------------+
| Project_ID                       |
+----------------------------------+
| d8f9af6915404114ae4f30668a4f5ba7 |
| e4970f57f1824faab2701db61ee7efdf |
+----------------------------------+

在授予访问权限后,允许的项目中的用户可以看到共享类型并使用它来创建共享。

要拒绝指定项目的访问权限,请使用 manila type-access-remove <share_type> <project_id> 命令。