From 9e83f5bffdad2b30763885afe1dd29c23895b140 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 11 Mar 2016 15:39:06 -0500 Subject: [PATCH] mon: make the minimum crush tunables configurable If they cluster is using very old tunables, as inferred by whether it requires a newer version of CRUSH, issue a health warning. Signed-off-by: Sage Weil --- src/common/config_opts.h | 3 ++- src/mon/OSDMonitor.cc | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 9a33b7125b6d..9638bd35e804 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -265,7 +265,8 @@ OPTION(mon_globalid_prealloc, OPT_U32, 10000) // how many globalids to preallo OPTION(mon_osd_report_timeout, OPT_INT, 900) // grace period before declaring unresponsive OSDs dead OPTION(mon_force_standby_active, OPT_BOOL, true) // should mons force standby-replay mds to be active OPTION(mon_warn_on_old_mons, OPT_BOOL, true) // should mons set health to WARN if part of quorum is old? -OPTION(mon_warn_on_legacy_crush_tunables, OPT_BOOL, true) // warn if crush tunables are not optimal +OPTION(mon_warn_on_legacy_crush_tunables, OPT_BOOL, true) // warn if crush tunables are too old (older than mon_min_crush_required_version) +OPTION(mon_crush_min_required_version, OPT_STR, "firefly") OPTION(mon_warn_on_crush_straw_calc_version_zero, OPT_BOOL, true) // warn if crush straw_calc_version==0 OPTION(mon_warn_on_osd_down_out_interval_zero, OPT_BOOL, true) // warn if 'mon_osd_down_out_interval == 0' OPTION(mon_warn_on_cache_pools_without_hit_sets, OPT_BOOL, true) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index ecc4ff4f306d..d7c6009bba7e 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2836,9 +2836,11 @@ void OSDMonitor::get_health(list >& summary, // old crush tunables? if (g_conf->mon_warn_on_legacy_crush_tunables) { - if (osdmap.crush->has_legacy_tunables()) { + string min = osdmap.crush->get_min_required_version(); + if (min < g_conf->mon_crush_min_required_version) { ostringstream ss; - ss << "crush map has legacy tunables"; + ss << "crush map has legacy tunables (require " << min + << ", min is " << g_conf->mon_crush_min_required_version << ")"; summary.push_back(make_pair(HEALTH_WARN, ss.str())); if (detail) { ss << "; see http://ceph.com/docs/master/rados/operations/crush-map/#tunables"; -- 2.47.3