HPE 3PAR、HPE Primera、HPE Alletra 9k 和 HPE Alletra MP 驱动程序

基于 Block Storage 服务 (Cinder) 插件架构的 HPE3PARFCDriverHPE3PARISCSIDriver 驱动程序,通过 HTTP、HTTPS 和 SSH 连接与 HPE 3PAR、HPE Primera 和 HPE Alletra 9k 存储系统通信来运行卷操作。HTTP 和 HTTPS 通信使用 python-3parclient,它是 PyPi 的一部分。

有关 HPE 存储系统的信息,请参阅 Alletra Storage 产品页面

系统要求

要使用 HPE 3PAR、HPE Primera、HPE Alletra 9k 和 HPE Alletra MP 驱动程序,请在 HPE 3PAR 存储系统上安装以下软件和组件

  • HPE 3PAR 操作系统软件版本 3.1.3 MU1 或更高版本。

    • 重复数据删除配置需要 SSD 磁盘和 HPE 3PAR 操作系统软件版本 3.2.1 MU1 或更高版本。

    • 启用 Flash Cache 策略需要以下条件

      • 阵列必须包含 SSD 磁盘。

      • HPE 3PAR 操作系统软件版本 3.2.1 MU2 或更高版本。

      • python-3parclient 版本 4.2.0 或更新版本。

      • Flash Cache 必须使用 CLI 命令 createflashcache SIZE 在阵列上启用,其中大小必须以 16 GB 为增量。例如,createflashcache 128g 将为阵列中的每个节点对创建 128 GB 的 Flash Cache。

    • 动态优化是支持导致卷更改配置类型或 CPG 的任何功能所必需的。这可能适用于卷 migrateretypemanage 命令。

    • 虚拟卷功能支持涉及卷快照的任何操作。这适用于卷 snapshot-* 命令。

    • 启用卷压缩需要以下条件

      • 阵列必须包含 SSD 磁盘。

      • HPE 3PAR 操作系统软件版本 3.3.1 MU1 或更高版本。

      • HPE 3PAR 存储系统,配备 8k 或 20k 系列

  • 必须启用并运行 HPE 3PAR Web Services API 服务器。

  • 一个通用配置组 (CPG)。

  • 此外,您必须从 PyPi 在启用 Block Storage 服务卷驱动程序的系统上安装 python-3parclient 版本 4.2.0 或更新版本。

要使用 HPE Primera、Alletra 9k 和 Alletra MP 后端,请在 HPE 存储系统上安装以下软件和组件

  • 操作系统软件

    • HPE Primera:版本 4.4.0 或更高版本。

    • HPE Alletra 9k:版本 9.4.0 或更高版本。

    • HPE Alletra MP:版本 10.4.2.23 或更高版本。

  • 在 HPE Primera/Alletra 9k/Alletra MP 存储系统上,重复数据删除和压缩合并为单个选项“deco”。因此,只能创建“thin”卷或“deco”卷。

  • 此外,端口号 443 代替 8080。这仅影响 cinder 配置。

  • 此外,您必须从 PyPi 在启用 Block Storage 服务卷驱动程序的系统上安装 python-3parclient 版本 4.2.14 或更新版本。

支持的操作

  • 创建、删除、附加和分离卷。

  • 创建、列出和删除卷快照。

  • 从快照创建卷。

  • 将镜像复制到卷。

  • 将卷复制到镜像。

  • 克隆卷。

  • 扩展卷。

  • 迁移带有后端协助的卷。

  • 重新类型化卷。

  • 管理和取消管理卷。

  • 管理和取消管理快照。

  • 复制主机卷。

  • 故障转移主机卷。

  • 故障恢复主机卷。

  • 重新配置复制的卷。

  • 创建、删除、更新、快照和克隆通用卷组。

  • 创建和删除通用卷组快照。

  • 从组快照或另一个组创建通用卷组。

  • 卷压缩。

  • 具有更高粒度的组复制 (Tiramisu)。

  • 卷恢复到快照。

  • 其他后端功能。

  • 在服务列表中报告后端状态。

  • 同时将卷附加到多个服务器(多重附加)。

  • 对等持久性。

HPE 3PAR 驱动程序都支持的卷类型包括在 OpenStack Block Storage API cinder.api.contrib.types_extra_specs 卷类型附加规格扩展模块中设置以下功能的能力

  • hpe3par:snap_cpg

  • hpe3par:provisioning

  • hpe3par:persona

  • hpe3par:vvs

  • hpe3par:flash_cache

  • hpe3par:compression

要使用默认筛选器调度器,键值区分大小写,并以 hpe3par: 为范围。有关如何设置键值对并将它们与卷类型关联的信息,请运行以下命令

$ openstack help volume type

注意

仅克隆的卷支持附加规格键 cpg、snap_cpg、provisioning 和 vvs。其他键将被忽略。此外,克隆卷的评论部分在 HPE 3PAR / Primera / Alletra 9k / Alletra MP 阵列中不会被填充。

如果未使用卷类型,或者未为卷类型设置特定键,则使用以下默认值

  • hpe3par:cpg - 默认为 cinder.conf 文件中的 hpe3par_cpg 设置。

  • hpe3par:snap_cpg - 默认为 cinder.conf 文件中的 hpe3par_snap 设置。如果未设置 hpe3par_snap,则默认为 hpe3par_cpg 设置。

  • hpe3par:provisioning - 默认为 thin 配置,有效值为 thinfulldedup

  • hpe3par:persona - 默认为 2 - Generic-ALUA 人格。有效值为

    • 1 - Generic

    • 2 - Generic-ALUA

    • 3 - Generic-legacy

    • 4 - HPUX-legacy

    • 5 - AIX-legacy

    • 6 - EGENERA

    • 7 - ONTAP-legacy

    • 8 - VMware

    • 9 - OpenVMS

    • 10 - HPUX

    • 11 - WindowsServer

  • hpe3par:flash_cache - 默认为 false,有效值为 truefalse

HPE 3PAR 驱动程序都支持的 QoS 支持包括在 OpenStack Block Storage API cinder.api.contrib.qos_specs_manage qos 规格扩展模块中设置以下功能的能力

  • minBWS

  • maxBWS

  • minIOPS

  • maxIOPS

  • latency

  • priority

上述 qos 键不再需要范围,但必须创建并与卷类型关联。有关如何设置键值对并将它们与卷类型关联的信息,请运行以下命令

$ openstack help volume qos

以下键要求 HPE 3PAR/Primera/Alletra 9k/ Alletra MP 阵列已启用优先级优化。

hpe3par:vvs

虚拟卷集名称由管理员预定义,并与质量服务 (QoS) 规则相关联。如果指定附加规格 hpe3par:vvs,qos_specs minIOPSmaxIOPSminBWSmaxBWS 设置将被忽略。

minBWS

QoS I/O 问题带宽最小目标(MB)。如果未设置,则 I/O 问题带宽速率没有最小目标。

maxBWS

QoS I/O 问题带宽速率限制(MB)。如果未设置,则 I/O 问题带宽速率没有限制。

minIOPS

QoS I/O 问题计数最小目标。如果未设置,则 I/O 问题计数没有最小目标。

maxIOPS

QoS I/O 问题计数速率限制。如果未设置,则 I/O 问题计数速率没有限制。

latency

延迟目标(毫秒)。

priority

QoS 规则相对于其他规则的优先级。如果未设置,则优先级为 normal,有效值为 lownormalhigh

注意

自 Icehouse 版本发布以来,必须一起使用 minIOPS 和 maxIOPS 以设置 I/O 限制。同样,必须一起使用 minBWS 和 maxBWS。如果仅设置一个,则另一个将被设置为相同的值。

以下键要求 HPE 3PAR/Primera/Alletra 9k/Alletra MP 阵列已启用自适应 Flash Cache。

  • hpe3par:flash_cache - Flash 缓存策略,可以通过将值设置为 truefalse 来启用和禁用。

  • hpe3par:compression - 卷压缩,可以通过将值设置为 truefalse 来启用和禁用。

关于 hpe3par:compression 的其他限制和注意事项

  • 对于压缩卷,所需的最小卷大小为 16 GB;否则,结果卷将成功创建,但不会是压缩卷。

  • 如果请求的配置类型为 full,则无法压缩完全配置的卷。如果启用了压缩,则结果卷默认为稀疏配置的压缩卷。

  • 在 HPE Primera/Alletra 9k/Alletra MP 存储系统上创建卷时,仅支持以下两种组合。如果使用任何其他组合,则不会创建卷。

    • thin 卷:provisioning = thin 且 compression = false

    • deco 卷:provisioning = dedup 且 compression = true

现在支持在 HPE 3PAR 驱动程序中 LDAP 和 AD 身份验证。

在配置卷驱动程序之前,必须正确配置 3PAR 后端以进行 LDAP 和 AD 身份验证。有关设置 3PAR 中 LDAP 的详细信息,请参阅 3PAR 用户指南。

配置完成后,cinder.conf 中的 hpe3par_usernamehpe3par_password 参数可与 LDAP 和 AD 凭据一起使用。

启用 HPE 3PAR Fibre Channel 和 iSCSI 驱动程序

与 OpenStack 软件一起安装 HPE3PARFCDriverHPE3PARISCSIDriver

  1. 在 OpenStack Block Storage 系统上安装 python-3parclient Python 包。

    $ pip install 'python-3parclient>=4.0,<5.0'
    
  2. 验证 HPE 3PAR Web Services API 服务器是否已在 HPE 3PAR / Primera / Alletra 9k / Alletra MP 存储系统上启用并正在运行。

    1. 以管理员权限登录 HPE 3PAR / Primera / Alletra 9k / Alletra MP 存储系统。

      $ ssh 3paradm@<HPE storage system IP Address>
      
    2. 查看 Web Services API 服务器的当前状态。

      $ showwsapi
      -Service- -State- -HTTP_State- HTTP_Port -HTTPS_State- HTTPS_Port -Version-
      Enabled   Active Enabled       8008        Enabled       8080       1.1
      
    3. 如果禁用了 Web Services API 服务器,请启动它。

      $ startwsapi
      
  3. 如果 HTTP 或 HTTPS 状态已禁用,请启用其中之一。

    $ setwsapi -http enable
    

    或者

    $ setwsapi -https enable
    

    注意

    要停止 Web Services API 服务器,请使用 stopwsapi 命令。有关其他选项,请运行 setwsapi -h 命令。

  4. 如果您没有使用现有的 CPG,请在 HPE 3PAR / Primera / Alletra 9k / Alletra MP 存储系统上创建一个 CPG,用作创建卷的默认位置。

  5. /etc/cinder/cinder.conf 文件中进行以下更改。

    # WSAPI Server URL.
    # This setting applies to all: 3PAR, Primera, Alletra 9k and Alletra MP.
    # Example 1: for 3PAR, URL is:
    https://<3par ip>:8080/api/v1
    
    # Example 2: for Primera/Alletra 9k/Alletra MP, URL is:
    https://<primera/alletra_9k/alletra_mp ip>:443/api/v1
    
    # 3PAR / Primera / Alletra 9k / Alletra MP username with the 'edit' role
    hpe3par_username=edit3par
    
    # 3PAR / Primera / Alletra 9k / Alletra MP password for the user specified in hpe3par_username
    hpe3par_password=3parpass
    
    # 3PAR / Primera / Alletra 9k / Alletra MP CPG to use for volume creation
    hpe3par_cpg=OpenStackCPG_RAID5_NL
    
    # IP address of SAN controller for SSH access to the array
    san_ip=10.10.22.241
    
    # Username for SAN controller for SSH access to the array
    san_login=3paradm
    
    # Password for SAN controller for SSH access to the array
    san_password=3parpass
    
    # FIBRE CHANNEL DRIVER
    # (uncomment the next line to enable the FC driver)
    #volume_driver=cinder.volume.drivers.hpe.hpe_3par_fc.HPE3PARFCDriver
    
    # iSCSI DRIVER
    # If you enable the iSCSI driver, you must also set values
    # for hpe3par_iscsi_ips or iscsi_ip_address in this file.
    # Note: The iSCSI driver is supported with 3PAR (all versions)
    # and Primera (version 4.2 or higher). If you configure iSCSI
    # with Primera 4.0 or 4.1, the driver will fail to start.
    # (uncomment the next line to enable the iSCSI driver)
    #volume_driver=cinder.volume.drivers.hpe.hpe_3par_iscsi.HPE3PARISCSIDriver
    
    # iSCSI multiple port configuration
    # hpe3par_iscsi_ips=10.10.220.253:3261,10.10.222.234
    
    # Still available for single port iSCSI configuration
    #iscsi_ip_address=10.10.220.253
    
    # Enable HTTP debugging to 3PAR / Primera / Alletra 9k / Alletra MP
    hpe3par_debug=False
    
    # Enable CHAP authentication for iSCSI connections.
    hpe3par_iscsi_chap_enabled=false
    
    # The CPG to use for Snapshots for volumes. If empty hpe3par_cpg will be
    # used.
    hpe3par_cpg_snap=OpenStackSNAP_CPG
    
    # Time in hours to retain a snapshot. You can't delete it before this
    # expires.
    hpe3par_snapshot_retention=48
    
    # Time in hours when a snapshot expires and is deleted. This must be
    # larger than retention.
    hpe3par_snapshot_expiration=72
    
    # The ratio of oversubscription when thin provisioned volumes are
    # involved. Default ratio is 20.0, this means that a provisioned
    # capacity can be 20 times of the total physical capacity.
    max_over_subscription_ratio=20.0
    
    # This flag represents the percentage of reserved back-end capacity.
    reserved_percentage=15
    

    注意

    您只能在每个 cinder 实例上启用一个驱动程序,除非您启用多个后端支持。请参阅 Cinder 多个后端支持说明以启用此功能。

    注意

    您可以使用 hpe3par_iscsi_ips 选项配置一个或多个 iSCSI 地址。用逗号 ( ,) 分隔多个 IP 地址。当您配置多个地址时,驱动程序会在附加时选择活动卷最少的 iSCSI 端口。3PAR 阵列不允许更改默认端口 3260,因此无需指定 IP 端口。

  6. 保存对 cinder.conf 文件的更改,并重新启动 cinder-volume 服务。

现在已在您的 OpenStack 系统上启用了 HPE 3PAR Fibre Channel 和 iSCSI 驱动程序。如果您遇到问题,请查看 Block Storage 服务日志文件是否有错误。

下表包含 HPE 3PAR Fibre Channel 和 iSCSI 驱动程序支持的所有配置选项。

3PAR 配置选项说明

配置选项 = 默认值

描述

hpe3par_api_url = <>

(字符串) WSAPI 服务器 URL。此设置适用于:3PAR、Primera、Alletra 9k 和 Alletra MP 示例 1:对于 3PAR,URL 为:https://<3par ip>:8080/api/v1 示例 2:对于 Primera/Alletra 9k/Alletra MP,URL 为:https://<primera ip>:443/api/v1

hpe3par_cpg = [OpenStack]

(字符串列表) 用于卷创建的 3PAR/Primera/Alletra 9k/Alletra MP CPG 列表

hpe3par_cpg_snap = <>

(字符串) 用于卷快照的 3PAR/Primera/Alletra 9k/Alletra MP CPG。如果为空,将使用 userCPG

hpe3par_debug = False

(布尔值) 启用到 3PAR/Primera/Alletra 9k/Alletra MP 的 HTTP 调试

hpe3par_iscsi_chap_enabled = False

(布尔值) 启用 iSCSI 连接的 CHAP 身份验证。

hpe3par_iscsi_ips = []

(字符串列表) 要使用的目标 iSCSI 地址列表。

hpe3par_password = <>

(字符串) hpe3par_username 中指定的用户的 3PAR/Primera/Alletra 9k/Alletra MP 密码

hpe3par_snapshot_expiration = <>

(String) 快照在小时数后过期并被删除的时间。此值必须大于过期时间。

hpe3par_snapshot_retention = <>

(String) 保留快照的小时数。在此时间过期之前,无法删除它。

hpe3par_target_nsp = <>

(String) 在以下情况下要使用的 3PAR/Primera/Alletra 9k/Alletra MP 后端的 NSP:(1)在 cinder.conf 中未启用多路径。(2)未使用光纤通道区域管理器。(3)后端仅使用此特定的 NSP 进行预分区。例如,如果 NSP 为 2 1 2,则选项值的格式为 2:1:2

hpe3par_username = <>

(String) 具有“编辑”角色的 3PAR/Primera/Alletra 9k/Alletra MP 用户名

为 FC 可启动卷指定 NSP

给定一个通过 FC 连接到 HPE 3PAR 的系统,并且 cinder.conf 中未使用多路径设置。当用户尝试创建可启动卷时,由于以下错误而间歇性失败:未找到光纤通道卷设备

当使用 3PAR 后端的第二个或后续目标创建区域时,会发生这种情况。在这种情况下,HPE 3PAR 客户端代码仅拾取第一个目标来形成发起程序目标映射。可以通过以下示例说明。

showport 命令的示例输出

$ showport -sortcol 6

N:S:P      Mode State ----Node_WWN---- -Port_WWN/HW_Addr-  Type Protocol Partner FailoverState
0:1:1    target ready 2FF70002AC002DB6   20110002AC002DB6  host       FC       -             -
0:1:2    target ready 2FF70002AC002DB6   20120002AC002DB6  host       FC   1:1:2          none
1:1:1 initiator ready 2FF70002AC002DB6   21110002AC002DB6  rcfc       FC       -             -
1:1:2    target ready 2FF70002AC002DB6   21120002AC002DB6  host       FC   0:1:2          none
2:1:1 initiator ready 2FF70002AC002DB6   22110002AC002DB6  rcfc       FC       -             -
2:1:2    target ready 2FF70002AC002DB6   22120002AC002DB6  host       FC   3:1:2          none
3:1:1    target ready 2FF70002AC002DB6   23110002AC002DB6  host       FC       -             -
3:1:2    target ready 2FF70002AC002DB6   23120002AC002DB6  host       FC   2:1:2          none

假设区域使用来自上述输出的“2:1:2”和“3:1:2”目标创建。然后,发起程序目标映射仅使用目标“0:1:1”创建。在这种情况下,找不到路径,并且可启动卷的创建失败。

为了避免上述故障,用户可以在 cinder.conf 的 3PAR 后端部分中指定目标,如下所示

hpe3par_target_nsp = 3:1:2

使用上述 NSP,将获取相应的 WWN 信息。稍后使用 WWN 信息创建发起程序目标映射,并成功创建可启动卷。

注意:如果在 cinder.conf 中未指定上述选项(NSP),则将执行原始流程,即仅拾取第一个目标,并且可启动卷的创建可能会失败。

对等持久性支持

给定配置了复制设置的 3PAR/Primera 后端,目前 OpenStack 中 3PAR/Primera 仅支持主动/被动复制。当发生故障转移时,nova 不支持卷强制分离(来自死掉的主后端)/重新连接到辅助后端。需要存储工程师的手动干预。

为了克服上述场景,添加了对等持久性支持。给定一个配置了对等持久性的系统并创建了复制的卷。当此卷附加到实例时,除了主后端之外,还在辅助后端自动创建 VLUN。因此,当发生故障转移时,它是无缝的。

对于对等持久性支持,请执行以下步骤:1] 启用多路径 2] 将复制模式设置为“同步” 3] 配置一个仲裁见证服务器

/etc/cinder/cinder.conf [在后端部分内] 中指定仲裁见证服务器的 IP 地址,如下所示

[3pariscsirep]
hpe3par_api_url = http://10.50.3.7:8008/api/v1
hpe3par_username = <user_name>
hpe3par_password = <password>
...
<other parameters>
...
replication_device = backend_id:CSIM-EOS12_1611702,
                     replication_mode:sync,
                     quorum_witness_ip:10.50.3.192,
                     hpe3par_api_url:http://10.50.3.22:8008/api/v1,
                     ...
                     <other parameters>
                     ...

支持网络中重复的 FQDN

3PAR 驱动程序使用执行附加的节点的 FQDN 作为唯一标识符来映射卷。

问题在于 FQDN 并不总是唯一的,在某些环境中,相同的 FQDN 可以在不同的系统中找到,并且在这些情况下,如果两者都尝试附加卷,则第二个系统将失败。

发生这种情况的一个示例是在 QA 环境中,您正在创建 VM,它们都具有像 controller-0.localdomain 和 compute-0.localdomain 这样的名称。

为了支持这些类型的环境,用户可以在 cinder.conf 的 backend_defaults 部分或特定的 cinder 驱动程序部分中指定以下标志,如下所示

unique_fqdn_network = False

当使用此标志时,在将卷附加到实例期间,将使用 iSCSI 发起程序名称而不是 FQDN。

如果在 cinder.conf 中未指定上述标志,则其值将被视为 True(默认)并使用 FQDN(现有行为)。