Nimble & Alletra 6k 存储卷驱动

Nimble Storage 与 OpenStack 平台完全集成,通过 Nimble Cinder 驱动程序,允许主机通过块存储接口配置和管理 Nimble 和 Alletra 6k 存储阵列的功能。

支持 iSCSI 存储协议,使用 NimbleISCSIDriver 卷驱动程序类,支持光纤通道,使用 NimbleFCDriver。

从 Nimble OS 2.3.8 或更高版本开始,支持 Liberty 版本及更高版本。

从 Nimble OS 3.6 或更高版本开始,支持 Ocata 版本及更高版本。

对于 Xena 版本,使用 Nimble OS 5.3 或更高版本,以及 Alletra OS 6.0 或更高版本。

由于 os-brick 中存在的限制,Nimble 和 Alletra 6k 存储 Cinder 驱动程序不支持在同一子网上的多个接口上的端口绑定。这在 bug https://bugs.launchpad.net/os-brick/+bug/1722432 中有部分提及,但并未解决多个软件 iSCSI 接口的问题。

支持的操作

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

  • 创建和删除卷快照

  • 从快照创建卷

  • 将镜像复制到卷

  • 将卷复制到镜像

  • 扩展卷

  • 获取卷统计信息

  • 管理和取消管理卷

  • 为卷类型 extra-specs 启用加密和默认性能策略

  • 强制备份正在使用的卷

  • 重新类型化卷

  • 创建一个稀疏配置卷

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

  • 卷恢复到快照

  • 创建、列出、更新和删除一致性组

  • 创建、列出和删除一致性组快照

  • 一致性组复制

Nimble 和 Alletra 6k 存储驱动程序配置

使用给定的配置更新文件 /etc/cinder/cinder.conf。注意:这些参数也适用于 Alletra 6k 存储。

在基本(单个后端)配置的情况下,将参数添加到 [default] 部分,如下所示。

[default]
san_ip = NIMBLE_MGMT_IP
san_login = NIMBLE_USER
san_password = NIMBLE_PASSWORD
use_multipath_for_image_xfer = True
volume_driver = NIMBLE_VOLUME_DRIVER
san_thin_provision = True

在多个后端配置的情况下,例如,支持多个 Nimble Storage 阵列或单个 Nimble Storage 阵列与其他供应商的阵列的配置,使用以下参数。

[default]
enabled_backends = Nimble-Cinder

[Nimble-Cinder]
san_ip = NIMBLE_MGMT_IP
san_login = NIMBLE_USER
san_password = NIMBLE_PASSWORD
use_multipath_for_image_xfer = True
volume_driver = NIMBLE_VOLUME_DRIVER
volume_backend_name = NIMBLE_BACKEND_NAME

在多个后端配置的情况下,创建 Nimble 卷类型并将其与后端名称关联,如下所示。

注意

单后端配置用户无需创建卷类型。

$ openstack volume type create NIMBLE_VOLUME_TYPE
$ openstack volume type set --property volume_backend_name=NIMBLE_BACKEND_NAME NIMBLE_VOLUME_TYPE

本节解释了上述变量

NIMBLE_MGMT_IP

Nimble/Alletra 6k 存储阵列/组的管理 IP 地址。

NIMBLE_USER

Nimble/Alletra 6k 存储帐户登录,具有最低 power user(admin)权限,如果使用 RBAC。

NIMBLE_PASSWORD

Nimble/Alletra 6k 阵列的 admin 帐户密码。

NIMBLE_VOLUME_DRIVER

对于 iSCSI,使用 cinder.volume.drivers.hpe.nimble.NimbleISCSIDriver,对于光纤通道,使用 cinder.volume.drivers.hpe.nimble.NimbleFCDriver。

NIMBLE_BACKEND_NAME

cinder.conf 文件中指定的卷后端名称。这也在将后端名称分配给 Nimble 卷类型时使用。

NIMBLE_VOLUME_TYPE

从 CLI 创建并与 NIMBLE_BACKEND_NAME 关联的 Nimble 卷类型。

注意

更新 cinder.conf 文件后,重新启动 cinder-apicinder-schedulercinder-volume 服务。

Nimble 驱动程序 extra spec 选项

Nimble 卷驱动程序还支持以下 extra spec 选项

‘nimble:encryption’=’yes’

用于为卷类型启用加密。

‘nimble:perfpol-name’=PERF_POL_NAME

PERF_POL_NAME 是 Nimble/Alletra 6k 阵列上存在的性能策略的名称,应为卷类型中的每个卷启用。

注意

升级到 OpenStack 部署到 Victoria 或更高版本时,请取消设置 nimble:multi-initiator extra-spec 并设置 multiattach='<is> True'

nimble:dedupe’=’true’

用于为卷类型启用去重支持。

‘nimble:iops-limit’=IOPS_LIMIT

用于为为此卷类型创建的所有卷设置 IOPS_LIMIT,介于 256 和 4294967294 之间。

‘nimble:folder’=FOLDER_NAME

FOLDER_NAME 是 Nimble/Alletra 6k 阵列上存在的文件夹的名称,应为卷类型中的每个卷启用

可以使用以下命令启用这些 extra-specs

$ openstack volume type set --property KEY=VALUE VOLUME_TYPE

VOLUME_TYPE 是 Nimble 卷类型,KEYVALUE 是上述选项。

配置选项

Nimble/Alletra 6k 存储驱动程序支持这些配置选项

Nimble 配置选项的说明

配置选项 = 默认值

描述

nimble_pool_name = default

(字符串) Nimble 控制器池名称

nimble_subnet_label = *

(字符串) Nimble 子网标签

nimble_verify_cert_path = None

(字符串) Nimble 阵列 SSL 证书的路径

nimble_verify_certificate = False

(布尔值) 是否验证 Nimble SSL 证书

多路径

在希望使用 Cinder 块设备多路径的 OpenStack 环境中,需要考虑一些事项。

配置多路径因环境而异,取决于系统。在仅由 Cinder 创建 Nimble 设备的场景中,可以使用以下 /etc/multipath.conf 文件

defaults {
    user_friendly_names yes
    find_multipaths     no
}

blacklist {
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^hd[a-z]"
    device {
        vendor  ".*"
        product ".*"
    }
}

blacklist_exceptions {
    device {
        vendor  "Nimble"
        product "Server"
    }
}

devices {
    device {
        vendor               "Nimble"
        product              "Server"
        path_grouping_policy group_by_prio
        prio                 "alua"
        hardware_handler     "1 alua"
        path_selector        "service-time 0"
        path_checker         tur
        features             "1 queue_if_no_path"
        no_path_retry        30
        failback             immediate
        fast_io_fail_tmo     5
        dev_loss_tmo         infinity
        rr_min_io_rq         1
        rr_weight            uniform
    }
}

修改 /etc/multipath.conf 后,需要重新配置多路径子系统

# multipathd reconfigure

提示

有关 Nimble 设备的最新最佳实践,请参阅 HPE Nimble Storage Linux 集成指南,该指南可在 https://infosight.hpe.com 上找到

重要提示

OpenStack Cinder 当前与 HPE Nimble Storage Linux 工具包 (NLT) 不兼容

需要配置 Nova 以获取主机上创建的实际多路径设备。

/etc/nova/nova.conf 中,将以下内容添加到 [libvirt] 部分

[libvirt]
volume_use_multipath = True

注意

在 Newton 之前的版本中,该选项称为 iscsi_use_multipath

编辑 Nova 配置文件后,需要重新启动 nova-conductor 服务。

提示

根据使用的特定 OpenStack 发行版,Nova 可能会使用与默认文件不同的配置文件。

要验证实例是否正确连接到多路径设备,请检查实例设备

# virsh dumpxml <Instance ID | Instance Name | Instance UUID>

一致性组复制

要启用一致性组复制,请按照以下步骤操作

  1. replication_device 添加到 cinder.conf 中的存储后端设置,然后重新启动 Cinder Volume 服务。

    卷复制的 cinder.conf 示例

    [nimble]
    san_ip = xxx.xxx.xxx.xxx
    ...
    replication_device = backend_id:nimblevsagroup2,
                         san_ip:10.132.239.66,
                         san_login:admin,
                         san_password:admin,
                         schedule_name:sched-one,
                         downstream_partner:nimblevsagroup2,
                         period:15,
                         period_unit:minutes
    
    • 每个主后端只能配置一个 replication_device

    • backend_idsan_ipsan_loginsan_passwordschedule_namedownstream_partner 是必需的。

    • 其他参数是可选的(如果未提供,则使用默认值):period:1 period_unit:days num_retain:10 num_retain_replica:1 at_time:’00:00’ until_time:’23:59’ days=’all’ replicate_every:1 alert_threshold:’24:00’

  2. 创建一个具有属性 replication_enabled=’<is> True’consistent_group_snapshot_enabled=’<is> True’ 的卷类型

    $ cinder type-create nimble
    $ cinder type-key nimble set volume_backend_name='nimble'
    $ cinder type-key nimble set replication_enabled='<is> True'
    $ cinder type-key nimble set consistent_group_snapshot_enabled='<is> True'
    
  3. 创建一个具有属性 consistent_group_snapshot_enabled=’<is> True’consistent_group_replication_enabled=’<is> True’ 的一致性组类型。

    $ cinder --os-volume-api-version 3.38 group-type-create repl_type
    $ cinder --os-volume-api-version 3.38 group-type-key repl_type set
    consistent_group_snapshot_enabled='<is> True' consistent_group_replication_enabled='<is> True'
    
  4. 创建一个支持复制的卷类型的组类型。

    $ cinder --os-volume-api-version 3.38 group-create --name grp_1 repl_type nimble
    
  5. 在一致性组中创建卷。

    $ cinder --os-volume-api-version 3.38 create --volume-type nimble --group-id {grp_1-id}
    --name {volume-name} {size}
    
  6. 启用一致性组复制。

    $ cinder --os-volume-api-version 3.38 group-enable-replication grp_1
    
  7. 禁用一致性组复制。

    $ cinder --os-volume-api-version 3.38 group-disable-replication grp_1
    
  8. 故障转移一致性组复制。

    $ cinder --os-volume-api-version 3.38 group-failover-replication
    --secondary-backend-id nimblevsagroup2 grp_1
    
  9. 故障恢复一致性组复制。

    $ cinder --os-volume-api-version 3.38 group-failover-replication
    --secondary-backend-id default grp_1