Settings for Linux hosts

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.

You must restart your host after you complete the following two steps:

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.

For example:
Under Device Section
# 		polling_interval 30,

Under Defaults Section
defaults {
		user_friendly_names yes
		polling_interval  30
}

Multipath settings for specific Linux distributions and releases

Edit /etc/multipath.conf with the following parameters and confirm the changes by entering:
multipathd -k
multipathd> show config
Red Hat Linux versions 5.x, 6.0, and 6.1
     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	
Red Hat Linux versions 6.2 and higher
     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	
Red Hat Linux version 7.x
     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	
SUSE Linux Versions 10.x and 11.0 and 11 SP1
     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	
SUSE Linux Versions 11 SP2
     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	
SUSE Linux Versions 11 SP3+
     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	
SUSE Linux Versions 12+
     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"	
Ubuntu
     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"	

Udev rules SCSI command timeout changes

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 creation

To increase the SCSI command timeout for the system, create the following udev rule:
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).