The Linux Host's Settings

SCSI Disk Timeout

This should be set to 80 seconds for all SCSI devices created from SANsymphony virtual disks. The timeout for a given SCSI device can be checked using the ‘cat’ command.

Example:

cat /sys/block/sda/device/timeout

There are two methods that can be used to change the SCSI disk timeout for a given device.

  • Use the ‘echo’ command – this is temporary and will not survive the next reboot of the Linux host server.
  • Create a custom ‘udev rule’ – this is permanent but will require a reboot for the setting to take effect.

Using the ‘echo’ command (will not survive a reboot)

Set the SCSI Disk timeout value to 80 seconds:

echo 80 > /sys/block/[disk_device]/device/timeout

Creating a custom ‘udev’ rule (permanent but requires a reboot)

Create a file called ‘/etc/udev/rules.d/99-datacore.rules’ with the following settings:

SUBSYSTEM=="block", ACTION=="add", ATTRS{vendor}=="DataCore", ATTRS{model}=="Virtual Disk", RUN+="/bin/sh -c 'echo 80 > /sys/block/%k/device/timeout'" 

For OracleVMx86, RHEL and Ubuntu distributions, refer to their respective documentation to configure custom udev rules. For SLES users, see SUSE Support.

  • This KB article applies to all current versions of SANsymphony 10.x as well.
  • Make sure that the udev rule is exactly as written above. Else this may result in the Linux operating system defaulting back to 30 seconds.
  • There are 4 blank whitespace characters after the ATTRS{model} string which much be observed otherwise paths to SANsymphony virtual disks may not be re-discovered.

Multipath Configuration Settings


If configuring Linux hosts using SAP HANA then do not use the settings below but refer to the guide SANsymphony with SAP HANA - Sizing Guidelines and use the multipath configuration settings there. See SANsymphony with SAP HANA - Sizing Guidelines.

The 'defaults' section

Add/Modify the polling_interval to a value of 60 (seconds).

defaults { polling_interval	60 }

This tells the host how often to check for access on a previously failed virtual disk path. A smaller setting will interfere with host performance. Do not add this parameter to the 'device' section of the multipath configuration file (see below) as it will prevent the polling from working as expected.

The ‘blacklist exceptions’ section

blacklist_exceptions {
vendor	"DataCore" 
product "Virtual Disk"
}

The 'multipaths' section

Adding this section allows the Linux users to identify the virtual disks with a human readable name rather than relying on wwid. This is useful for mount point identification and is also supported by SAP HANA to have a user friendly configuration. The wwid starts with "3" and is followed by the name of the virtual disk. Adding this section causes the /dev/mapper special files to be generated which are named according to the alias.

multipaths {
multipath {
wwid "360030d90e434a90619f366b49256afa8"
alias "vDisk1"
}
multipath {
wwid "360030d9094baa806a7c296187cbff811"
alias "vDisk2"
}
}

The 'device' section

All the following entries listed are DataCore-required values. See the notes section for more specific technical details.

ALUA enabled

device {
vendor "DataCore"
product "Virtual Disk"
failback 10
path_checker tur
prio alua
no_path_retry fail
# dev_loss_tmo infinity
dev_loss_tmo 60
fast_io_fail_tmo 5
rr_min_io_rq 100
# rr_min_io 100
path_grouping_policy group_by_prio
# path_grouping_policy failover
# user_friendly_names yes
}

ALUA not enabled

device {
vendor "DataCore"
product "Virtual Disk"
failback 10
path_checker tur
no_path_retry fail
# dev_loss_tmo infinity
dev_loss_tmo 60
fast_io_fail_tmo 5
# user_friendly_names yes
}
  • vendor / product
    Virtual disks created in SANsymphony 8.x or later will use the strings listed above.
    Virtual disks created in SANmelody or SANsymphony 7.x and earlier or will have different strings and an additional device section will need to be created to work with those virtual disks. See the section SCSI Standard Inquiry from the online help.
  • failback
    Adds an extra ‘wait’ period (10 seconds) to prevent unnecessary ‘failback’ attempts to a virtual disk whose host access value is ‘Not Allowed’.
  • path_checker
    Use the value indicated. No other value should be used.
  • path_grouping_policy (applies to ALUA enabled hosts only)
    Either one of two values is allowed:
    • group_by_prio
    • failover
      This setting is ‘Not Qualified’ on RHEL 6.5 and greater. See Appendix A for more information regarding the preferred server settings.
  • prio (applies to ALUA enabled hosts only)
    This is a DataCore-required value. No other value should be used.
  • no_path_retry
    This is a DataCore-required value. No other value should be used.
  • dev_loss_tmo
    Either one of two values is allowed:
    • For SANsymphony 10.0 PSP 8 or later use a dev_loss_tmo value of 60
    • For SANsymphony 10.0 PSP 7 Update 2 and earlier use a dev_loss_tmo value of ‘infinity’. Older kernels might not recognize ‘infinity’ a syslog error is usually posted, so in this case the default value - usually ‘600’ seconds - will be applied instead.
      Use the ‘cat’ command to verify that any DataCore virtual disks detected by the Linux host are using the ‘infinity’ value correctly.
      Example:
      sleshost3:~ # cat /sys/class/fc_remote_ports/rport-*\:*-*/dev_loss_tmo
      Devices using the ‘Infinity’ setting will have a value of ‘2147483647’
  • fast_io_fail_tmo
    This is a DataCore-required value. No other value should be used.
  • rr_min_io_rq (applies to ALUA enabled hosts only)
    Use on systems running kernels newer than 2.6.30.
    This is a DataCore-required value. No other value should be used.
  • rr_min_io (applies to ALUA enabled hosts only)
    Use on systems running kernels older than 2.6.31.
    This is a DataCore-required value. No other value should be used.
  • user_friendly_names
    Optional. This tells the operating system to use a persistent, unique alias to the multipath device, in the form of mpathn. Otherwise, a WWID will be used as the alias instead.