multipath-tools: intermittent IO error accounting to improve reliability
authorGuan Junxiong <guanjunxiong@huawei.com>
Tue, 24 Oct 2017 01:57:22 +0000 (09:57 +0800)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Wed, 15 Nov 2017 21:51:48 +0000 (22:51 +0100)
commit95d594fd6f031e59bb73d04a631b6c592fe26214
treee10ba004536fa8c9914eee4008601a19396ee5f4
parenta0e0752fbf08832f9d06431f05d5303750733ead
multipath-tools: intermittent IO error accounting to improve reliability

This patch adds a new method of path state checking based on accounting
IO error. This is useful in many scenarios such as intermittent IO error
an a path due to network congestion, or a shaky link.

Four parameters are added for the admin:"marginal_path_double_failed_time",
marginal_path_err_sample_time", "marginal_path_err_rate_threshold" and
"marginal_path_err_recheck_gap_time". If marginal_path_err_sample_time are
set no less than 120 and marginal_path_err_recheck_gap_time are set to a
value greater than 0, when path failing events occur twice in
marginal_path_double_failed_time second due to an IO error, multipathd will
fail the path and enqueue this path into a queue of which each member is
sent a couple of continuous direct reading asynchronous IOs at a fixed
sample rate of 10HZ. The IO accounting process for a path will last for
marginal_path_err_sample_time. If the IO error rate on a particular path is
greater than the marginal_path_err_rate_threshold, then the path will not
reinstate for recover_time seconds unless there is only one active path.

If recover_time expires, we will reschedule this IO error checking process.
If the path is good enough, we will claim it good. Or else the path will
keep failed.

This helps us place the path in shaky state if we hit a lot of intermittent
IO errors on a particular path due to network/target issues and isolate such
degraded path and allow the admin to rectify the errors on a path.

Reviewed-by: Muneendra Kumar M <mmandala@Brocade.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
Cc: Martin Wilck <mwilck@suse.com>
Cc: Muneendra Kumar M <mmandala@Brocade.com>
Signed-off-by: Junxiong Guan <guanjunxiong@huawei.com>
13 files changed:
libmultipath/Makefile
libmultipath/config.h
libmultipath/configure.c
libmultipath/dict.c
libmultipath/io_err_stat.c [new file with mode: 0644]
libmultipath/io_err_stat.h [new file with mode: 0644]
libmultipath/propsel.c
libmultipath/propsel.h
libmultipath/structs.h
libmultipath/uevent.c
libmultipath/uevent.h
multipath/multipath.conf.5
multipathd/main.c