Multipathing

In OpenStack environments where Cinder block device multipathing is desired there are a few things to consider.

Configuring mulitpathing varies by system depending on the environment. In a scenario where solely Nimble devices are being created by Cinder, the following /etc/multipath.conf file may be used:

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
    }
}

After making changes to /etc/multipath.conf, the multipath subsystem needs to be reconfigured:

# multipathd reconfigure

Tip:

The latest best practices for Nimble devices can be found in the HPE Nimble Storage Linux Integration Guide found on https://infosight.hpe.com

Important:

OpenStack Cinder is currently not compatible with the HPE Nimble Storage Linux Toolkit (NLT)

Nova needs to be configured to pickup the actual multipath device created on the host.

In /etc/nova/nova.conf, add the following to the [libvirt] section:

[libvirt]
volume_use_multipath = True

Note: In versions prior to Newton, the option was called iscsi_use_multipath

After editing the Nova configuration file, the nova-conductor service needs to be restarted.

Tip: Depending on which particular OpenStack distribution is being used, Nova may use a different configuration file than the default.

To validate that instances get properly connected to the multipath device, inspect the instance devices:

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