How To use the new IO retries feature in VxVM 5.1SP1 and later

Article: 100039304
Last Published: 2012-04-12
Ratings: 1 0
Product(s): InfoScale & Storage Foundation

Description

    There have been issues seen with the (then current) methods of performing IO retry when SCSI Inquiry succeeds and IO to the device fails. This section of IO recovery has been significanlty changed as of the release of 5.1SP1.  New Tunables have been introduced to allow configuration of IO recovery options.  Note: These examples are NOT recommendations. They are simply usage examples. Settings for your environment may differ or need some tuning for your particular environment. 

dmp_lun_retry_timeout
 
dmp_retry_delay
 
 
The tunables can be modified with settune. The values are in seconds.
 
# vxdmpadm settune dmp_lun_retry_timeout=10
Tunable value will be changed immediately
# vxdmpadm settune dmp_retry_delay=2
Tunable value will be changed immediately
 
This tunable will show up in ‘ vxdmapdm gettune [all]’ CLI (Command Line Interface). The sample output is as follows.
 
# vxdmpadm gettune
             Tunable               Current Value Default Value
------------------------------       ------------------- ------------------
//…
dmp_lun_retry_timeout               0                      0
//…
 
One enclosure level tunable is introduced.
 
# vxdmpadm setattr enclosure <enclr-name> dmp_lun_retry_timeout=<lun-retry-timeout>
 
A user can retrieve the tunable that was set with getattr as well.

# vxdmpadm getattr enclosure <enclr-name> dmp_lun_retry_timeout

ENCLR_NAME      DEFAULT        CURRENT
============================================
aluadisk0                     0                   0
 
The new tunable in vxdmpadm getattr enclosure <enclr-name> output is shown below:
 
# vxdmpadm getattr enclosure fas2700
ENCLR_NAME       ATTR_NAME                     DEFAULT        CURRENT
============================================================================
//…
fas2700                dmp_lun_retry_timeout            0                       0
 
 
To specify the timeout value, use the existing CLI:
 
# vxdmpadm setattr <arrayname | arraytype | enclosure> <component_name> recoveryoption=timebound iotimeout=300
 
Timeout values can be displayed using the following existing CLI interface.
 
# vxdmpadm getattr <arrayname | arraytype | enclosure> <component_name> recoveryoption
 
output will appear as below.
 
testhost.Veritas.com:/> vxdmpadm getattr enclosure aluadisk0 recoveryoption
ENCLR-NAME       RECOVERY-OPTION      DEFAULT[VAL] CURRENT[VAL]
===============================================================
aluadisk0                   Throttle                               Nothrottle[0]  Nothrottle[0]
aluadisk0                 Error-Retry                   Timebound[300]       Timebound[300]
 

 Note about the iotimeout value when the Timebound option is used:

This value should be high enough to allow the underlying SCSI driver to fail a path to a device before the iotimeout expires. If the iotimeout expires before the path is failed ( unresponsive device due to SAN fabic failure, etc.) alternate paths are not tried and the DMP node will be disabled. There are certain OS configurations where the SCSI driver will not fail a device for at least 300 seconds, so a value of more than 300 would be required to ensure the other paths are tried before the device is disabled. See 000015039 for a specifc example of a Solaris configuration that has this issue. Note that Timebound[300] (300 second iotimeout value) is the default.

Was this content helpful?