2.3. 带有卷类型的组卷配置
使用 Red Hat OpenStack Platform,您可以创建卷类型,以便您可以将相关的设置应用到每种卷类型。您可以在创建卷前后分配所需的卷类型。如需更多信息,请参阅创建块存储卷 和 块存储卷调整。以下列表显示了您可以应用到卷类型的一些关联的设置:
- 卷的加密。如需更多信息,请参阅 块存储服务(cinder)卷加密。
- 卷使用的后端。如需更多信息,请参阅多个后端上的卷分配 和在后端间移动卷。
- 卷的相关服务质量(QoS)性能限制或 QoS 规格列表。如需更多信息,请参阅 块存储服务(cinder)服务质量规格。
设置使用名为 Extra Specs 的键值对与卷类型关联。当您在卷创建过程中指定卷类型时,块存储调度程序会将这些键值对作为设置应用。您可以将多个键值对与同一卷类型关联。
您可以创建卷类型,为您的云用户提供不同级别的性能:
- 为每个卷类型添加特定性能、弹性和其他 Extra Specs 作为键值对。
- 将不同的 QoS 性能限制或 QoS 规格与卷类型关联。
当您的用户创建卷时,他们可以选择适当的卷类型来满足其性能要求。
如果您创建卷且没有指定卷类型,则块存储将使用默认卷类型。您可以使用 Block Storage (cinder)配置文件来定义适用于所有项目(租户)的常规默认卷类型。但是,如果您的部署使用了特定于项目的卷类型,请确保为每个项目定义默认卷类型。在这种情况下,块存储使用特定于项目的卷类型,而不是常规的默认卷类型。如需更多信息,请参阅 定义特定于项目的默认卷类型。
2.3.1. 列出后端驱动程序属性
与卷类型关联的属性使用名为 Extra Specs 的键值对。每个卷类型后端驱动程序都支持自己的一组 Extra Specs。有关支持驱动程序的 Extra Specs 的更多信息,请参阅后端驱动程序文档。
另外,您可以直接查询块存储主机,以列出其后端驱动程序的定义良好的标准 Extra Spec。
先决条件
- 您必须是一个项目管理员,才能直接查询块存储主机。
流程
提供 overcloud 凭证文件:
$ source ~/<credentials_file>
-
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
确定 cinder-volume 的主机:
$ cinder service-list
此命令将返回一个列表,其中包含每个块存储服务的主机(cinder-backup、cinder-scheduler 和 cinder-volume)。例如:
+------------------+---------------------------+------+--------- | Binary | Host | Zone | Status ... +------------------+---------------------------+------+--------- | cinder-backup | localhost.localdomain | nova | enabled ... | cinder-scheduler | localhost.localdomain | nova | enabled ... | cinder-volume | *localhost.localdomain@lvm* | nova | enabled ... +------------------+---------------------------+------+---------
显示驱动程序功能,以确定块存储服务支持的 Extra Specs:
$ cinder get-capabilities <volsvchost>
将
<volsvchost>
替换为 cinder-volume 的主机。例如:$ cinder get-capabilities localhost.localdomain@lvm +---------------------+-----------------------------------------+ | Volume stats | Value | +---------------------+-----------------------------------------+ | description | None | | display_name | None | | driver_version | 3.0.0 | | namespace | OS::Storage::Capabilities::localhost.loc... | pool_name | None | | storage_protocol | iSCSI | | vendor_name | Open Source | | visibility | None | | volume_backend_name | lvm | +---------------------+-----------------------------------------+ +--------------------+------------------------------------------+ | Backend properties | Value | +--------------------+------------------------------------------+ | compression | {u'type': u'boolean', u'description'... | qos | {u'type': u'boolean', u'des ... | replication | {u'type': u'boolean', u'description'... | thin_provisioning | {u'type': u'boolean', u'description': u'S... +--------------------+------------------------------------------+
Backend properties 列显示您可以设置的 Extra Spec Keys 列表,而 Value 列则提供有关有效对应值的信息。
2.3.2. 创建和配置卷类型
您可以创建卷类型,以便您可以将关联的设置应用到每种卷类型。
如果将 Block Storage 服务(cinder)配置为使用多个后端,则必须为每个后端创建一个卷类型。
例如,您可以创建卷类型来为云用户提供不同的性能级别:
- 为每个卷类型添加特定性能、弹性和其他 Extra Specs 作为键值对。
- 将不同的 QoS 性能限制或 QoS 规格与卷类型关联。如需更多信息,请参阅 块存储服务(cinder)服务质量规格。
当您的用户创建卷时,他们可以选择适当的卷类型来满足其性能要求。
先决条件
- 您必须是一个项目管理员,才能创建和配置卷类型。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes > Volume Types。
- 单击创建卷类型。
- 在 Name 字段中输入卷类型名称。
- 单击创建卷类型。新类型会出现在 卷类型 表中。
- 选择卷类型的 View Extra Specs 操作。
-
点 Create 并指定 Key 和 Value。键值对必须有效;否则,在卷创建过程中指定卷类型将导致错误。例如,要为这个卷类型指定一个后端,请添加
volume_backend_name
Key,并将 Value 设置为所需后端的名称。 - 点 Create。关联的设置(键值对)现在出现在 Extra Specs 表中。
默认情况下,所有 OpenStack 项目都可以访问所有卷类型。如果您需要创建具有受限访问权限的卷类型,则需要通过 CLI 完成此操作。具体步骤请参阅创建和配置私有卷类型。
后续步骤
2.3.3. 编辑卷类型
编辑仪表板中的卷类型,以修改卷类型的 Extra Specs 配置。您还可以删除卷类型。
先决条件
- 您必须是项目管理员才能编辑或删除卷类型。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。如需更多信息,请参阅使用 OpenStack 控制面板管理云资源。
流程
- 以 admin 用户身份登录控制面板。
- 选择 Admin > Volumes > Volume Types。
- 在 Volume Types 表中,选择卷类型的 View Extra Specs 操作。
在此页的 Extra Specs 表中,您可以:
- 在卷类型中添加一个新的设置。要做到这一点,点 Create 并指定您要与卷类型关联的新设置的键/值对。
- 选择设置的 Edit action 来编辑与卷类型关联的现有设置。
- 选择 extra specs 复选框并单击 Delete Extra Specs 和下一个对话框屏幕,删除与卷类型关联的现有设置。
要删除卷类型,请从卷类型表中选中其对应的复选框,然后点 Delete Volume Types 。
2.3.4. 创建和配置私有卷类型
默认情况下,所有卷类型都可用于所有项目(租户)。您可以通过将其标记为 私有 来创建受限卷类型。为此,请将卷类型的 is-public
标志设为 false,因为此标志的默认值是 true。
私有卷类型可用于限制对具有特定属性的卷的访问。通常,这些设置应当仅可供特定项目使用。例如,正在测试的新后端或超高性能配置。
先决条件
- 您必须是一个项目管理员,才能创建、查看或配置私有卷类型的访问权限。
流程
提供 overcloud 凭证文件:
$ source ~/<credentials_file>
-
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
创建新的 cinder 卷类型,并将
is-public
标志设置为 false :$ cinder type-create --is-public false <type_name>
-
将
<type_name
> 替换为您要调用这个新私有卷类型的名称。
-
将
默认情况下,私有卷类型只能被创建者访问。但是,管理员用户可使用以下命令查找并查看私有卷类型:
$ cinder type-list
此命令列出公共和私有卷类型的名称和 ID。您需要卷类型的 ID 来提供它的访问权限。
在项目级别授予私有卷类型的访问权限。因此,您需要知道所需项目的 ID。如果您不知道这个租户 ID,但您知道这个项目的名称,则运行:
如果您不确定此用户名,openstack user list
命令将列出所有配置的用户的名称和 ID。
$ openstack user show <user_name>
-
将 <
;user_name
> 替换为所需项目用户的名称,以显示用户详情的列表,包括此用户关联的项目的tenantId
。
要授予项目对私有卷类型的访问权限,请运行:
$ cinder type-access-add --volume-type <type_id> --project-id <tenant_id>
-
将
<type_id>
替换为所需的私有卷类型的 ID。 -
将
<tenant_id
> 替换为所需的租户 ID。
要查看哪些项目可以访问私有卷类型,请运行:
$ cinder type-access-list --volume-type <type_id>
要从私有卷类型的访问列表中删除项目,请运行:
$ cinder type-access-remove --volume-type <type_id> --project-id <tenant_id>
2.3.5. 定义特定于项目的默认卷类型
可选: 对于复杂部署,项目管理员可以为每个项目(租户)定义默认卷类型。
如果您创建卷且没有指定卷类型,则块存储将使用默认卷类型。
您可以使用 Block Storage (cinder) 配置文件 cinder.conf
的 default_volume_type
选项定义应用到所有项目的通用默认卷类型。
但是,如果您的 Red Hat OpenStack Platform (RHOSP)部署使用特定于项目的卷类型,请确保为每个项目定义默认卷类型。在这种情况下,块存储使用特定于项目的卷类型,而不是常规的默认卷类型。以下 RHOSP 部署示例需要特定于项目的默认卷类型:
- 跨越多个可用区(AZ)的分布式 RHOSP 部署。每个 AZ 都位于自己的项目中,并拥有自己的卷类型。
- 一个 RHOSP 部署,用于公司的三个不同部门。每个部门都位于自己的项目中,并拥有自己的专用卷类型。
先决条件
- 每个项目中至少有一个卷类型是特定于项目的默认卷类型。如需更多信息,请参阅 创建和配置卷类型。
- 块存储 REST API 微版本 3.62 或更高版本.
- 只有项目管理员才能为其项目定义、清除或列出默认卷类型。
流程
提供 overcloud 凭证文件:
$ source ~/<credentials_file>
-
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
定义、清除或列出项目的默认卷类型:
注意您必须将这些命令中的 <
project_id
> 替换为所需项目的 ID。若要查找每个租户的 ID 和名称,请运行openstack project list
命令。为项目定义默认卷类型:
$ cinder --os-volume-api-version 3.62 default-type-set <volume_type> <project_id>
-
将
<volume_type>
替换为所需卷类型的名称或 ID。您可以运行cinder type-list
命令来列出所有卷类型的名称和 ID。
-
将
清除项目的默认卷类型:
$ cinder --os-volume-api-version 3.62 default-type-unset <project_id>
列出项目的默认卷类型:
$ cinder --os-volume-api-version 3.62 default-type-list --project <project_id>