Dell PowerFlex 存储驱动程序

概述

Dell PowerFlex(以前名为 Dell ScaleIO/VxFlex OS)是一种纯软件解决方案,它使用现有服务器的本地磁盘和局域网来创建一个虚拟 SAN,该 SAN 具有外部存储的所有优势,但成本和复杂性仅为后者的一小部分。使用该驱动程序,块存储主机可以连接到 PowerFlex 存储集群。

Dell PowerFlex Cinder 驱动程序设计和测试可与 PowerFlex 和 ScaleIO 配合使用。 配置选项 对于 PowerFlex 和 ScaleIO 而言是相同的。

官方 PowerFlex 文档

查找 PowerFlex 文档

  1. 访问 PowerFlex 产品文档页面

  2. 在页面上,搜索相关的 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 的每个节点上执行以下操作

  1. 如果不存在,则创建 /opt/emc/scaleio/openstack/connector.conf

    $ mkdir -p /opt/emc/scaleio/openstack
    $ touch /opt/emc/scaleio/openstack/connector.conf
    
  2. 对于 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 驱动程序支持以下配置选项

PowerFlex 配置选项说明

配置选项 = 默认值

描述

powerflex_allow_migration_during_rebuild = False

(布尔值) 允许在重建期间迁移卷。

powerflex_allow_non_padded_volumes = False

(布尔值) 允许在禁用零填充时在存储池中创建卷。如果多个租户将使用共享存储池中的卷,则不应启用此选项。

powerflex_max_over_subscription_ratio = 10.0

(浮点数) 驱动程序的 max_over_subscription_ratio 设置。允许的最大值为 10.0。

powerflex_rest_server_port = 443

(端口(最小值为 0,最大值为 65535)) 网关 REST 服务器端口。

powerflex_round_volume_capacity = True

(布尔值) 将卷大小四舍五入到 8GB 的倍数。PowerFlex/VxFlex OS 要求卷大小为 8GB 的倍数。如果设置为 False,则未正确调整大小的卷创建将失败

powerflex_server_api_version = None

(字符串) PowerFlex/ScaleIO API 版本。除非技术支持另有说明,否则应将此值保留为默认值。

powerflex_storage_pools = None

(字符串) 存储池。逗号分隔的存储池列表,用于为虚拟机提供卷。该列表应包括您希望 Cinder 利用的每个保护域和存储池对。

powerflex_unmap_volume_before_deletion = False

(布尔值) 在删除之前取消映射卷。

rest_api_connect_timeout = 30

(整数(最小值为 1)) 使用此值指定 REST 调用连接超时值(以秒为单位)。

rest_api_read_timeout = 30

(整数(最小值为 1)) 使用此值指定 REST 调用读取超时值(以秒为单位)。

vxflexos_allow_migration_during_rebuild = False

(布尔值) 重命名为 powerflex_allow_migration_during_rebuild。已弃用

vxflexos_allow_non_padded_volumes = False

(布尔值) 重命名为 powerflex_allow_non_padded_volumes。已弃用

vxflexos_max_over_subscription_ratio = 10.0

(浮点数) 重命名为 powerflex_max_over_subscription_ratio。已弃用

vxflexos_rest_server_port = 443

(端口(最小值为 0,最大值为 65535)) 重命名为 powerflex_rest_server_port。已弃用

vxflexos_round_volume_capacity = True

(布尔值) 重命名为 powerflex_round_volume_capacity。已弃用

vxflexos_server_api_version = None

(字符串) 重命名为 powerflex_server_api_version。已弃用

vxflexos_storage_pools = None

(字符串) 重命名为 powerflex_storage_pools。已弃用

vxflexos_unmap_volume_before_deletion = False

(布尔值) 重命名为 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 支持包括设置以下功能的能力

maxIOPS

QoS I/O 速率限制。如果未设置,I/O 速率将不受限制。该设置必须大于 10。

maxIOPSperGB

QoS I/O 速率限制。该限制将由指定的数值乘以卷大小来计算。该设置必须大于 10。

maxBWS

QoS I/O 带宽速率限制(以 KB 为单位)。如果未设置,I/O 带宽速率将不受限制。该设置必须是 1024 的倍数。

maxBWSperGB

QoS 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

驱动程序始终选择 maxIOPSperGBmaxBWSperGB 的相关计算值的最小值和 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 文档

配置复制

  1. 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_verifydriver_ssl_cert_path

    有关更多信息,请参阅 配置选项

  2. 创建启用复制的卷类型。

    $ openstack volume type create powerflex_replicated
    $ openstack volume type set --property replication_enabled='<is> True' powerflex_replicated
    
  3. 为卷类型设置 PowerFlex 复制一致性组名称。

    $ openstack volume type set --property powerflex:replication_cg=<replication_cg name> \
        powerflex_replicated
    
  4. 如果指定了多个保护域,请设置保护域和存储池。

    复制一致性组是在源保护域和目标保护域之间创建的。 如果在 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

  1. 创建一个包含以下内容的文件

    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

  2. 使用 -e 将此自定义文件包含到部署命令中。

  3. 在部署 overcloud 后,在所有节点上安装存储数据客户端 (SDC)。