To ensure path recovery in failover scenarios, certain Device Mapper Multipath (DMMP) settings and udev rules for the attachment of Linux hosts to the system are recommended. These settings are valid for IBMSystem x, all Intel or AMD-based servers, and Power platforms.
For each Linux distribution and releases within a distribution, refer to the default settings under [/usr/share/doc/device-mapper-multipath.*] for Red Hat and [/usr/share/doc/packages/multipath-tools] for Novell SuSE. Ensure that the entries added to multipath.conf match the format and syntax for the required Linux distribution. Use the multipath.conf only from your related distribution and release. Do not copy the multipath.conf file from one distribution or release to another.
For some operating system levels, the polling_interval needs to be located under defaults instead of under device settings. If polling_interval is present in the device section, comment out polling_interval by using a # key.
Under Device Section # polling_interval 30, Under Defaults Section defaults { user_friendly_names yes polling_interval 30 }
multipathd -k multipathd> show config
vendor "IBM" product "2145" path_grouping_policy "group_by_prio" path_selector "round-robin 0" prio_callout "/sbin/mpath_prio_alua /dev/%n" #Used by Red Hat 5.x prio "alua" path_checker "tur" failback "immediate" no_path_retry 5 rr_weight uniform rr_min_io 1000 dev_loss_tmo 120
vendor "IBM" product "2145" path_grouping_policy "group_by_prio" path_selector "round-robin 0" # Used by Red Hat 6.2 prio "alua" path_checker "tur" failback "immediate" no_path_retry 5 rr_weight uniform rr_min_io_rq "1" dev_loss_tmo 120
vendor "IBM" product "2145" path_grouping_policy "group_by_prio" path_selector "service-time 0" # Used by Red Hat 7.x prio "alua" path_checker "tur" failback "immediate" no_path_retry 5 rr_weight uniform rr_min_io_rq "1" dev_loss_tmo 120
vendor "IBM" product "2145" path_grouping_policy "group_by_prio" path_selector "round-robin 0" prio "alua" path_checker "tur" failback "immediate" no_path_retry 5 rr_weight uniform rr_min_io 1000 dev_loss_tmo 120
vendor "IBM" product "2145" path_grouping_policy "group_by_prio" path_selector "round-robin 0" # Used by SLES 11 SP2 prio "alua" path_checker "tur" failback "immediate" no_path_retry 5 rr_weight uniform rr_min_io_rq "1" dev_loss_tmo 120
vendor "IBM" product "2145" path_grouping_policy "group_by_prio" path_selector "service-time 0" # Used by SLES 11 SP3+ prio "alua" path_checker "tur" failback "immediate" no_path_retry 5 rr_weight uniform rr_min_io_rq "1" dev_loss_tmo 120
vendor "IBM" product "2145" path_grouping_policy "group_by_prio" path_selector "service-time 0" prio "alua" path_checker "tur" failback "immediate" retain_attached_hw_handler "yes" no_path_retry "queue" fast_io_fail_tmo 5 rr_min_io 1000 rr_min_io_rq 1 rr_weight "uniform"
vendor "IBM" product "2145" path_grouping_policy "group_by_prio" path_selector "service-time 0" prio "alua" path_checker "tur" failback "immediate" no_path_retry "queue" retain_attached_hw_handler "yes" fast_io_fail_tmo 5 rr_min_io 1000 rr_min_io_rq 1 rr_weight "uniform"
Set the udev rules for SCSI command timeout.
Set the SCSI command timeout to 120s. This is the recommended setting for all versions of Linux.
udev rules file cat /etc/udev/rules.d/99-ibm-2145.rules # Set SCSI command timeout to 120s (default == 30 or 60) for IBM 2145 devices SUBSYSTEM=="block", ACTION=="add", ENV{ID_VENDOR}=="IBM",ENV{ID_MODEL}=="2145", RUN+="/bin/sh -c 'echo 120 >/sys/block/%k/device/timeout'"
After you set up your volumes, confirm that they are set for 120 seconds. Locate the block device paths by running multipath -ll | grep sd from the command line. Then, run cat /sys/block/sdX/device/timeout (where X is each 2145 block device path).