summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlaf Faaland <[email protected]>2019-03-13 09:50:48 -0700
committerBrian Behlendorf <[email protected]>2019-03-13 09:50:48 -0700
commitdb2af93d727dad0c48a919bdacf4e605120201e6 (patch)
tree6f7425eb627fdf506f50673d81e42682aa084b65
parentcffa8372f42be4b37931d3cd24b01e837aa123b6 (diff)
Increase default zfs_multihost_fail_intervals and import_intervals
By default, when multihost is enabled for a pool, the pool is suspended if (zfs_multihost_fail_intervals*zfs_multihost_interval) ms pass without a successful MMP write. This is the recommended configuration. The default value for zfs_multihost_fail_intervals has been 5, and the default value for zfs_multihost_interval has been 1000, so pool suspension occurred at 5 seconds. There have been multiple cases where a single misbehaving device in a pool triggered a SCSI reset, and all I/O paused for 5-6 seconds. This in turn caused MMP to suspend the pool. In the cases observed, the rest of the devices were healthy and the pool was otherwise correctly performing I/O. The reset was handled correctly by ZFS, and by suspending the pool MMP made replacing the device more difficult as well as forcing the host to be rebooted. Increase the default value of zfs_multihost_fail_intervals to 10, so that MMP tolerates up to 10 seconds of failed MMP writes before suspending the pool. Increase the default value of zfs_multihost_import_intervals to 20, to maintain the 2:1 safety factor. This results in a force import taking approximately 20 seconds when MMP is enabled, with default values. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Andreas Dilger <[email protected]> Reviewed-by: George Melikov <[email protected]> Signed-off-by: Olaf Faaland <[email protected]> Closes #7709 Closes #8495
-rw-r--r--include/sys/mmp.h4
-rw-r--r--man/man5/zfs-module-parameters.54
2 files changed, 4 insertions, 4 deletions
diff --git a/include/sys/mmp.h b/include/sys/mmp.h
index edb0d4347..6f4672a38 100644
--- a/include/sys/mmp.h
+++ b/include/sys/mmp.h
@@ -29,8 +29,8 @@ extern "C" {
#define MMP_MIN_INTERVAL 100 /* ms */
#define MMP_DEFAULT_INTERVAL 1000 /* ms */
-#define MMP_DEFAULT_IMPORT_INTERVALS 10
-#define MMP_DEFAULT_FAIL_INTERVALS 5
+#define MMP_DEFAULT_IMPORT_INTERVALS 20
+#define MMP_DEFAULT_FAIL_INTERVALS 10
typedef struct mmp_thread {
kmutex_t mmp_thread_lock; /* protect thread mgmt fields */
diff --git a/man/man5/zfs-module-parameters.5 b/man/man5/zfs-module-parameters.5
index c783a1e9b..2a0f5f81d 100644
--- a/man/man5/zfs-module-parameters.5
+++ b/man/man5/zfs-module-parameters.5
@@ -1879,7 +1879,7 @@ the risk of failing to detect an active pool. The total activity check time is
never allowed to drop below one second. A value of 0 is ignored and treated as
if it was set to 1
.sp
-Default value: \fB10\fR.
+Default value: \fB20\fR.
.RE
.sp
@@ -1900,7 +1900,7 @@ will cause the pool to be suspended. This occurs when
passed since the last successful multihost write. This guarantees the activity test
will see multihost writes if the pool is imported.
.sp
-Default value: \fB5\fR.
+Default value: \fB10\fR.
.RE
.sp