opensvc/multipath-tools

RFE: new NVMe configs from several vendors

Closed this issue · 9 comments

vendor "NVME"
product "HPE Alletra"
path_grouping_policy multibus
path_selector "round-robin 0"
path_checker "none"
prio const
failback immediate
rr_weight uniform
no_path_retry "queue"
rr_min_io_rq 1
fast_io_fail_tmo 10
dev_loss_tmo 14

Translated to code:

                /* Alletra 9000 NVMe */
                .vendor        = "NVME",
                .product       = "HPE Alletra",
                .pgpolicy      = MULTIBUS,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
vendor "NVME"
product "NetApp E-Series*"
path_grouping_policy group_by_prio
failback immediate
no_path_retry 30

Translated to code:

                 /* E-Series NVMe */
                .vendor        = "NVME",
                .product       = "NetApp E-Series",
                .pgpolicy      = GROUP_BY_PRIO,
                .prio_name     = PRIO_ANA,
                .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 30,
vendor "NVME"
product "Huawei-XSG1"
uid_attribute "ID_WWN"
no_path_retry 12
rr_min_io_rq 1
prio "const"
path_grouping_policy multibus
path_checker "directio"
failback immediate
fast_io_fail_tmo 0
retain_attached_hw_handler "no"

Translated to code:

                /* OceanStor NVMe */
                .vendor        = "NVME",
                .product       = "Huawei-XSG1",
                .pgpolicy      = MULTIBUS,
                .checker_name  = DIRECTIO,
                .no_path_retry = 12,
  • checker_name is required if you want path checking (default for NVME is NONE)
  • for prio_name, multipathd will check if a path supports ANA and use it if supported, falling back to CONST otherwise. So setting CONST is only necessary if this autodetection yields wrong results for the array. I don't know if that's the case for OceanStor
  • setting fast_io_fail is unnecessary for NVMe, we support it only for SCSI (like dev_loss_tmo), and this is unlikely to change any time soon.
vendor                  "NVMe"
product                 "FlashSystem-9840"
path_selector           "service-time 0"
path_grouping_policy    multibus
path_checker            tur
rr_min_io_rq            4         
rr_weight               uniform
no_path_retry           fail
failback                immediate
dev_loss_tmo            300
fast_io_fail_tmo        25
user_friendly_names     yes

Translated to code:

		/* FlashSystem(RamSan) NVMe */
		.vendor        = "NVMe",
		.product       = "FlashSystem",
		.pgpolicy      = MULTIBUS,
		.no_path_retry = NO_PATH_RETRY_FAIL,
vendor                  "NVME"
product                 "IBM     2145"
path_grouping_policy    "multibus"
path_selector           "round-robin 0"
prio                    "const"
path_checker            "none"
failback                "immediate"
no_path_retry           "queue"
rr_weight               uniform
rr_min_io_rq            "1"
fast_io_fail_tmo        15
dev_loss_tmo            600

Translated to code:

		/* FlashSystem(Storwize/SVC) NVMe */
		.vendor        = "NVME",
		.product       = "IBM[ ]+2145",
		.pgpolicy      = MULTIBUS,
		.no_path_retry = NO_PATH_RETRY_QUEUE,
  • Pure Storage FlashArray (e-mail from vendor)
vendor                      "NVME"
product                     "Pure Storage FlashArray"
path_selector               "queue-length 0"
path_grouping_policy        multibus
fast_io_fail_tmo            10
user_friendly_names         no
no_path_retry               10
features                    0
dev_loss_tmo                60

Translated to code:

		/* FlashArray NVMe */
		.vendor        = "NVME",
		.product       = "Pure Storage FlashArray",
		.pgpolicy      = MULTIBUS,
		.no_path_retry = 10,
vendor               .*
product              dellemc-powerstore
uid_attribute        ID_WWN
prio                 ana             
failback             immediate
path_grouping_policy "group_by_prio" 
# path_checker       directio        
path_selector        "queue-length 0"
detect_prio          "yes"
fast_io_fail_tmo     15
no_path_retry        3
rr_min_io_rq         1

Translated to code:

		/* PowerStore NVMe */
		.vendor        = ".*",
		.product       = "dellemc-powerstore",
		.pgpolicy      = GROUP_BY_PRIO,
		.prio_name     = PRIO_ANA,
		.pgfailback    = -FAILBACK_IMMEDIATE,
		.no_path_retry = 3,

@xosevp, what's the status here? I'm preparing a 0.9.0 submission. Do you need further input from anyone?

DONE.