Dell PowerFlex 存储驱动程序¶
概述¶
Dell PowerFlex(以前名为 Dell ScaleIO/VxFlex OS)是一种纯软件解决方案,它使用现有服务器的本地磁盘和局域网来创建一个虚拟 SAN,该 SAN 具有外部存储的所有优势,但成本和复杂性仅为后者的一小部分。使用该驱动程序,块存储主机可以连接到 PowerFlex 存储集群。
Dell PowerFlex Cinder 驱动程序设计和测试可与 PowerFlex 和 ScaleIO 配合使用。 配置选项 对于 PowerFlex 和 ScaleIO 而言是相同的。
官方 PowerFlex 文档¶
查找 PowerFlex 文档
访问 PowerFlex 产品文档页面。
在页面上,搜索相关的 PowerFlex 版本。
支持的 PowerFlex 或 VxFlex OS 版本¶
Dell PowerFlex 块存储驱动程序已针对以下版本的 VxFlex OS 和 PowerFlex 进行测试,并发现兼容
PowerFlex 3.6.0
PowerFlex 4.x
在发布时,Dell PowerFlex 块存储驱动程序已针对以下 VxFlex OS 和 PowerFlex 版本系列进行测试,并发现兼容:3.6、4.0、4.5 和 4.6。您可以在 https://elabnavigator.dell.com/eln/elnhome 处找到兼容版本的当前列表。
请参阅 官方 PowerFlex 文档,以确定每个版本的 PowerFlex 或 VxFlex OS 支持的操作系统。
部署先决条件¶
PowerFlex 网关必须已安装并在网络中可访问。有关安装步骤,请参阅 PowerFlex 部署指南中的准备安装管理器和网关部分。请参阅 官方 PowerFlex 文档。
PowerFlex 存储数据客户端 (SDC) 必须安装在所有 OpenStack 节点上。
注意
Ubuntu 用户必须遵循 PowerFlex OS 部署指南中针对 Ubuntu 环境的具体说明。请参阅 PowerFlex 部署指南中的 在 Ubuntu 服务器上 部署 部分。请参阅 官方 PowerFlex 文档。
支持的操作¶
创建、删除、克隆、附加、分离、迁移、管理和取消管理卷
创建、删除、管理和取消管理卷快照
从快照创建卷
将卷恢复到快照
将镜像复制到卷
将卷复制到镜像
扩展卷
获取卷统计信息
创建、列出、更新和删除一致性组
创建、列出、更新和删除一致性组快照
OpenStack 复制 v2.1 支持
Cinder 卷主动/主动支持
PowerFlex 块存储驱动程序配置¶
本节说明如何配置并将块存储节点连接到 PowerFlex 存储集群。
通过在新的部分(例如 [powerflex])下向 cinder.conf 文件添加以下配置,并更改 [DEFAULT] 部分中的 enable_backends 设置以包含此新的后端,来编辑 cinder.conf 文件。配置文件通常位于 /etc/cinder/cinder.conf。
有关配置示例,请参阅示例 cinder.conf。
PowerFlex 驱动程序名称¶
通过添加以下参数来配置驱动程序名称
volume_driver = cinder.volume.drivers.dell_emc.powerflex.driver.PowerFlexDriver
PowerFlex 网关服务器 IP¶
PowerFlex 网关提供了一个用于 PowerFlex 的 REST 接口。
通过添加以下参数来配置网关服务器 IP 地址
san_ip = <PowerFlex GATEWAY IP>
PowerFlex 存储池¶
可以列出多个存储池和保护域供虚拟机使用。该列表应包括您希望 Cinder 利用的每个保护域和存储池对。
要检索可用的存储池,请使用命令 scli --query_all 并搜索可用的存储池。
通过添加以下参数来配置可用的存储池
powerflex_storage_pools = <Comma-separated list of protection domain:storage pool name>
PowerFlex 用户凭据¶
块存储需要具有管理权限的 PowerFlex 用户。Dell 建议创建一个专用的 OpenStack 用户帐户,该帐户具有管理用户角色。
有关用户帐户管理的详细信息,请参阅 PowerFlex 用户指南。
通过添加以下参数来配置用户凭据
san_login = <POWERFLEX_USER>
san_password = <POWERFLEX_PASSWD>
超额订阅¶
通过在 PowerFlex 的单独部分中添加以下参数来配置超额订阅比率
powerflex_max_over_subscription_ratio = <OVER_SUBSCRIPTION_RATIO>
注意
powerflex_max_over_subscription_ratio 的默认值为 10.0。
只有当卷类型中出现额外的规范 provisioning:type 时,块存储服务才会正确计算超额订阅。PowerFlex 支持的最大超额订阅值为 10.0。
默认配置类型¶
如果在卷类型中未指定配置类型设置,则默认值根据配置文件中的 san_thin_provision 选项进行设置。如果配置文件中未指定该选项,则默认配置类型将为 thin。要将默认配置类型设置为 thick,请将 san_thin_provision 选项设置为配置文件中的 false,如下所示
san_thin_provision = false
配置文件通常位于 /etc/cinder/cinder.conf。有关配置示例,请参阅:cinder.conf。
配置示例¶
cinder.conf 示例文件
您可以按如下方式编辑必要的参数来更新 cinder.conf 文件
[DEFAULT]
enabled_backends = powerflex
[powerflex]
volume_driver = cinder.volume.drivers.dell_emc.powerflex.driver.PowerFlexDriver
volume_backend_name = powerflex
san_ip = GATEWAY_IP
powerflex_storage_pools = Domain1:Pool1,Domain2:Pool2
san_login = POWERFLEX_USER
san_password = POWERFLEX_PASSWD
san_thin_provision = false
连接器配置¶
注意
从 2025.2 版本开始,用户无需创建连接器配置。
在使用附加/分离卷操作之前,必须正确配置 PowerFlex 连接器。在安装了 PowerFlex SDC 的每个节点上执行以下操作
如果不存在,则创建
/opt/emc/scaleio/openstack/connector.conf。$ mkdir -p /opt/emc/scaleio/openstack $ touch /opt/emc/scaleio/openstack/connector.conf
对于
cinder.conf中的每个 PowerFlex 部分,在/opt/emc/scaleio/openstack/connector.conf中创建相同的部分,并用密码填充它。示例[powerflex] san_password = POWERFLEX_PASSWD replicating_san_password = REPLICATION_SYSTEM_POWERFLEX_PASSWD # if applicable [powerflex-new] san_password = SIO2_PASSWD replicating_san_password = REPLICATION_SYSTEM_SIO2_PASSWD # if applicable
配置选项¶
PowerFlex 驱动程序支持以下配置选项
配置选项 = 默认值 |
描述 |
|---|---|
|
(布尔值) 允许在重建期间迁移卷。 |
|
(布尔值) 允许在禁用零填充时在存储池中创建卷。如果多个租户将使用共享存储池中的卷,则不应启用此选项。 |
|
(浮点数) 驱动程序的 max_over_subscription_ratio 设置。允许的最大值为 10.0。 |
|
(端口(最小值为 0,最大值为 65535)) 网关 REST 服务器端口。 |
|
(布尔值) 将卷大小四舍五入到 8GB 的倍数。PowerFlex/VxFlex OS 要求卷大小为 8GB 的倍数。如果设置为 False,则未正确调整大小的卷创建将失败 |
|
(字符串) PowerFlex/ScaleIO API 版本。除非技术支持另有说明,否则应将此值保留为默认值。 |
|
(字符串) 存储池。逗号分隔的存储池列表,用于为虚拟机提供卷。该列表应包括您希望 Cinder 利用的每个保护域和存储池对。 |
|
(布尔值) 在删除之前取消映射卷。 |
|
(整数(最小值为 1)) 使用此值指定 REST 调用连接超时值(以秒为单位)。 |
|
(整数(最小值为 1)) 使用此值指定 REST 调用读取超时值(以秒为单位)。 |
|
(布尔值) 重命名为 powerflex_allow_migration_during_rebuild。已弃用 |
|
(布尔值) 重命名为 powerflex_allow_non_padded_volumes。已弃用 |
|
(浮点数) 重命名为 powerflex_max_over_subscription_ratio。已弃用 |
|
(端口(最小值为 0,最大值为 65535)) 重命名为 powerflex_rest_server_port。已弃用 |
|
(布尔值) 重命名为 powerflex_round_volume_capacity。已弃用 |
|
(字符串) 重命名为 powerflex_server_api_version。已弃用 |
|
(字符串) 重命名为 powerflex_storage_pools。已弃用 |
|
(布尔值) 重命名为 powerflex_round_volume_capacity。已弃用 |
卷类型¶
卷类型可用于指定通过 PowerFlex 驱动程序分配的卷的特征。这些特征定义为 额外 规范 在 卷 类型 中。
PowerFlex 保护域和存储池¶
当在 Cinder 配置中指定多个存储池时,用户可以通过将 pool_name 额外规范添加到卷类型额外规范并将值设置为请求的 protection_domain:storage_pool,来指定应使用哪个池。
$ openstack volume type create powerflex_type_1
$ openstack volume type set --property volume_backend_name=powerflex powerflex_type_1
$ openstack volume type set --property pool_name=Domain2:Pool2 powerflex_type_1
PowerFlex 薄配置支持¶
块存储驱动程序支持创建薄配置和厚配置卷。配置类型设置可以作为卷类型的额外规范添加,如下所示
$ openstack volume type create powerflex_type_thick
$ openstack volume type set --property provisioning:type=thick powerflex_type_thick
PowerFlex QoS 支持¶
PowerFlex 驱动程序的 QoS 支持包括设置以下功能的能力
maxIOPSQoS I/O 速率限制。如果未设置,I/O 速率将不受限制。该设置必须大于 10。
maxIOPSperGBQoS I/O 速率限制。该限制将由指定的数值乘以卷大小来计算。该设置必须大于 10。
maxBWSQoS I/O 带宽速率限制(以 KB 为单位)。如果未设置,I/O 带宽速率将不受限制。该设置必须是 1024 的倍数。
maxBWSperGBQoS I/O 带宽速率限制(以 KB 为单位)。该限制将由指定的数值乘以卷大小来计算。该设置必须是 1024 的倍数。
上述 QoS 密钥必须创建并与卷类型关联。例如
$ openstack volume qos create qos-limit-iops --consumer back-end --property maxIOPS=5000
$ openstack volume type create powerflex_limit_iops
$ openstack volume qos associate qos-limit-iops powerflex_limit_iops
驱动程序始终选择 maxIOPSperGB 或 maxBWSperGB 的相关计算值的最小值和 QoS 密钥值之间的最小值。
由于限制是每 SDC 的,因此它们将在卷附加到实例后应用,从而应用于计算节点/SDC。
PowerFlex 压缩支持¶
从版本 3.0 开始,PowerFlex 支持卷压缩。默认情况下,驱动程序将创建不带压缩的卷。为了创建压缩卷,首先需要创建一个启用压缩支持的卷类型
$ openstack volume type create powerflex_compressed
$ openstack volume type set --property provisioning:type=compressed powerflex_compressed
如果具有此类型的卷被安排到不支持压缩的存储池,则将使用 thin 配置。有关详细信息,请参阅下表。
provisioning:type |
存储池支持压缩 |
|
|---|---|---|
是 (PowerFlex 3.0 FG 池) |
否 (其他池) |
|
compressed |
带压缩的精简配置 |
精简配置 |
精简配置 |
精简配置 |
精简配置 |
厚配置 |
精简配置 |
厚配置 |
未设置 |
精简配置 |
精简配置 |
注意
PowerFlex 3.0 细粒度存储池不支持厚配置卷。
您可以将属性 compression_support='<is> True' 添加到卷类型,以限制卷分配仅限于支持压缩的数据池。
$ openstack volume type set --property compression_support='<is> True' powerflex_compressed
PowerFlex 复制支持¶
从版本 3.5 开始,PowerFlex 支持卷复制。
先决条件¶
必须在源系统和目标系统上安装 PowerFlex 复制组件。
源系统和目标系统必须具有相同的配置,用于保护域及其存储池(即名称、零填充等)。
源系统和目标系统必须配对,并且已创建至少一个复制一致性组。
有关说明,请参阅 官方 PowerFlex 文档。
配置复制¶
在
cinder.conf文件中启用复制。要为存储后端启用复制功能,
replication_device必须按如下方式设置[DEFAULT] enabled_backends = powerflex [powerflex] volume_driver = cinder.volume.drivers.dell_emc.powerflex.driver.PowerFlexDriver volume_backend_name = powerflex san_ip = GATEWAY_IP powerflex_storage_pools = Domain1:Pool1,Domain2:Pool2 san_login = POWERFLEX_USER san_password = POWERFLEX_PASSWD san_thin_provision = false replication_device = backend_id:powerflex_repl, san_ip: REPLICATION_SYSTEM_GATEWAY_IP, san_login: REPLICATION_SYSTEM_POWERFLEX_USER, san_password: REPLICATION_SYSTEM_POWERFLEX_PASSWD
存储后端仅支持一个复制设备。
以下参数是复制设备的选项参数
REST API 端口 -
powerflex_rest_server_port。SSL 证书验证 -
driver_ssl_cert_verify和driver_ssl_cert_path。
有关更多信息,请参阅 配置选项。
创建启用复制的卷类型。
$ openstack volume type create powerflex_replicated $ openstack volume type set --property replication_enabled='<is> True' powerflex_replicated
为卷类型设置 PowerFlex 复制一致性组名称。
$ openstack volume type set --property powerflex:replication_cg=<replication_cg name> \ powerflex_replicated
如果指定了多个保护域,请设置保护域和存储池。
复制一致性组是在源保护域和目标保护域之间创建的。 如果在
cinder.conf中指定了多个保护域,则应为具有适当保护域和存储池的卷类型设置pool_name属性。 请参阅 PowerFlex 保护域和存储池。
故障转移主机¶
如果发生灾难,或者需要停机时间,管理员可以发出故障转移主机命令
$ cinder failover-host cinder_host@powerflex --backend_id powerflex_repl
发出 Cinder 故障转移主机命令后,Cinder 将切换到配置的复制设备,但是要使现有的实例使用此目标和新的卷路径,首先需要搁置 Nova 实例,然后取消搁置它们,这将有效地重新启动 Nova 实例并重新建立 Nova 实例与卷之间的数据路径。
$ nova shelve <server>
$ nova unshelve [--availability-zone <availability_zone>] <server>
如果主系统恢复可用,管理员可以使用 --backend_id default 启动故障恢复操作
$ cinder failover-host cinder_host@powerflex --backend_id default
PowerFlex 存储辅助卷迁移¶
从版本 3.0 开始,PowerFlex 支持存储辅助卷迁移。
已知限制¶
不支持在不同后端之间的迁移。
从中粒度 (MG) 迁移到细粒度 (FG) 存储池时,必须在 MG 池上启用零填充。
从 MG 迁移到 MG 池时,两个池上的零填充必须都启用或都禁用。
在上述情况下,将执行主机辅助迁移。
迁移卷¶
通过发出以下命令执行卷迁移
$ cinder migrate <volume> <host>
注意
卷迁移的超时时间为 3600 秒(1 小时)。 这样做是为了防止在迁移完成时无限期等待,如果发生意外情况。 如果卷迁移超时后仍在进行中,卷状态将更改为 maintenance,以防止对该卷进行未来操作。 将记录相应的警告。
在这种情况下,应在存储端检查卷的状态。 如果卷迁移成功,可以手动更改其状态
$ cinder reset-state --state available <volume>
使用 PowerFlex 存储与容器化的 overcloud¶
创建一个包含以下内容的文件
parameter_defaults: NovaComputeOptVolumes: - /opt/emc/scaleio:/opt/emc/scaleio CinderVolumeOptVolumes: - /opt/emc/scaleio:/opt/emc/scaleio GlanceApiOptVolumes: - /opt/emc/scaleio:/opt/emc/scaleio
随意命名它,例如
powerflex_volumes.yml。使用
-e将此自定义文件包含到部署命令中。在部署 overcloud 后,在所有节点上安装存储数据客户端 (SDC)。