Option("mon_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
.set_flag(Option::FLAG_NO_MON_UPDATE)
.set_default("/var/lib/ceph/mon/$cluster-$id")
- .set_description(""),
+ .set_description("path to mon database"),
Option("mon_initial_members", Option::TYPE_STR, Option::LEVEL_ADVANCED)
.set_default("")
Option("mon_osd_laggy_weight", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(.3)
- .set_min_max(0.0, 1.0)
+ .set_min_max(0.0, 1.0)
.set_description("how heavily to weight OSD marking itself back up in overall laggy_probability")
.set_long_description("1.0 means that an OSD marking itself back up (because it was marked down but not actually dead) means a 100% laggy_probability; 0.0 effectively disables tracking of laggy_probability."),
Option("mon_osd_warn_op_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(32)
- .set_description("issue health warning if OSD ops are slower than this age (seconds)"),
+ .set_description("issue REQUEST_SLOW health warning if OSD ops are slower than this age (seconds)"),
Option("mon_osd_err_op_age_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(128)
- .set_description("issue health error if OSD ops are slower than is age (seconds)"),
+ .set_description("issue REQUEST_STUCK health error if OSD ops are slower than is age (seconds)"),
Option("mon_osd_max_split_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(32)
.set_default(.66)
.set_flag(Option::FLAG_NO_MON_UPDATE)
.set_flag(Option::FLAG_CLUSTER_CREATE)
- .set_description(""),
+ .set_description("issue CACHE_POOL_NEAR_FULL health warning when cache pool utilization exceeds this ratio of usable space"),
Option("mon_osd_full_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(.95)
Option("mon_allow_pool_delete", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(false)
- .set_description(""),
+ .set_description("allow pool deletions"),
Option("mon_fake_pool_delete", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(false)
- .set_description(""),
+ .set_description("fake pool deletions by renaming the rados pool"),
Option("mon_globalid_prealloc", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(10000)
- .set_description(""),
+ .set_description("number of globalid values to preallocate")
+ .set_long_description("This setting caps how many new clients can authenticate with the cluster before the monitors have to perform a write to preallocate more. Large values burn through the 64-bit ID space more quickly."),
Option("mon_osd_report_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(900)
- .set_description(""),
+ .set_description("time before OSDs who do not report to the mons are marked down (seconds)"),
Option("mon_force_standby_active", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
- .set_description(""),
+ .set_description("allow use of MDS daemons in standby-replay as replacements"),
Option("mon_warn_on_legacy_crush_tunables", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
- .set_description(""),
+ .set_description("issue OLD_CRUSH_TUNABLES health warning if CRUSH tunables are older than mon_crush_min_required_version")
+ .add_see_also("mon_crush_min_required_version"),
Option("mon_crush_min_required_version", Option::TYPE_STR, Option::LEVEL_ADVANCED)
.set_default("firefly")
- .set_description(""),
+ .set_description("minimum ceph release to use for mon_warn_on_legacy_crush_tunables")
+ .add_see_also("mon_warn_on_legacy_crush_tunables"),
Option("mon_warn_on_crush_straw_calc_version_zero", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
- .set_description(""),
+ .set_description("issue OLD_CRUSH_STRAW_CALC_VERSION health warning if the CRUSH map's straw_calc_version is zero"),
Option("mon_warn_on_osd_down_out_interval_zero", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
- .set_description(""),
+ .set_description("issue OSD_NO_DOWN_OUT_INTERVAL health warning if mon_osd_down_out_interval is zero")
+ .set_long_description("Having mon_osd_down_out_interval set to 0 means that down OSDs are not marked out automatically and the cluster does not heal itself without administrator intervention.")
+ .add_see_also("mon_osd_down_out_interval"),
Option("mon_warn_on_cache_pools_without_hit_sets", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
- .set_description(""),
+ .set_description("issue CACHE_POOL_NO_HIT_SET health warning for cache pools that do not have hit sets configured"),
Option("mon_warn_on_pool_no_app", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(true)
- .set_description("Enable POOL_APP_NOT_ENABLED health check"),
+ .set_description("issue POOL_APP_NOT_ENABLED health warning if pool has not application enabled"),
Option("mon_warn_on_misplaced", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(false)
Option("mon_max_snap_prune_per_epoch", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(100)
- .set_description("Max number of pruned snaps we will process in a single OSDMap epoch"),
+ .set_description("max number of pruned snaps we will process in a single OSDMap epoch"),
Option("mon_min_osdmap_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(500)
Option("mon_max_log_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(500)
- .set_description(""),
+ .set_description("max number of past cluster log epochs to store"),
Option("mon_max_mdsmap_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(500)
- .set_description(""),
+ .set_description("max number of FSMaps/MDSMaps to store"),
Option("mon_max_mgrmap_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(500)
- .set_description(""),
+ .set_description("max number of MgrMaps to store"),
Option("mon_max_osd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(10000)
- .set_description(""),
+ .set_description("max number of OSDs in a cluster"),
Option("mon_probe_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(2.0)
- .set_description(""),
+ .set_description("timeout for querying other mons during bootstrap pre-election phase (seconds)"),
Option("mon_client_bytes", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
.set_default(100ul << 20)
- .set_description(""),
+ .set_description("max bytes of outstanding client messages mon will read off the network"),
+
+ Option("mon_daemon_bytes", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
+ .set_default(400ul << 20)
+ .set_description("max bytes of outstanding mon messages mon will read off the network"),
Option("mon_mgr_proxy_client_bytes_ratio", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(.3)
Option("mon_log_max_summary", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(50)
- .set_description(""),
-
- Option("mon_daemon_bytes", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
- .set_default(400ul << 20)
- .set_description(""),
+ .set_description("number of recent cluster log messages to retain"),
Option("mon_max_log_entries_per_event", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(4096)
- .set_description(""),
+ .set_description("max cluster log entries per paxos event"),
Option("mon_reweight_min_pgs_per_osd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(10)
Option("mon_health_to_clog", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
- .set_description(""),
+ .set_description("log monitor health to cluster log"),
Option("mon_health_to_clog_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(1_hr)
- .set_description(""),
+ .set_description("frequency to log monitor health to cluster log")
+ .add_see_also("mon_health_to_clog"),
- Option("mon_health_to_clog_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+ Option("mon_health_to_clog_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(60.0)
.set_description(""),
Option("mon_health_log_update_period", Option::TYPE_INT, Option::LEVEL_DEV)
.set_default(5)
- .set_description("Minimum time in seconds between log messages about "
+ .set_description("minimum time in seconds between log messages about "
"each health check")
.set_min(0),
Option("mon_data_avail_crit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(5)
- .set_description(""),
+ .set_description("issue MON_DISK_CRIT health error when mon available space below this percentage"),
Option("mon_data_avail_warn", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(30)
- .set_description(""),
+ .set_description("isue MON_DISK_LOW health warning when mon available space below this percentage"),
Option("mon_data_size_warn", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
.set_default(15_G)
- .set_description(""),
+ .set_description("issue MON_DISK_BIG health warning when mon database is above this size"),
Option("mon_warn_not_scrubbed", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(0)
- .set_description(""),
+ .set_description("if non-zero, issue PG_NOT_SCRUBBED when PG(s) have not been scrubbed for more than this long beyond the configured mon_scrub_interval (seconds)")
+ .add_see_also("osd_scrub_min_interval"),
Option("mon_warn_not_deep_scrubbed", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(0)
- .set_description(""),
+ .set_description("if non-zero, issue PG_NOT_DEEP_SCRUBBED when PG(s) have not been scrubbed for more than this long beyond the configured mon_scrub_interval (seconds)")
+ .add_see_also("osd_deep_scrub_interval"),
Option("mon_scrub_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(1_day)
- .set_description(""),
+ .set_description("frequency for scrubbing mon database"),
Option("mon_scrub_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(5_min)
- .set_description(""),
+ .set_description("timeout to restart scrub of mon quorum participant does not respond for the latest chunk"),
Option("mon_scrub_max_keys", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(100)
- .set_description(""),
+ .set_description("max keys per on scrub chunk/step"),
Option("mon_scrub_inject_crc_mismatch", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(0.0)
- .set_description(""),
+ .set_description("probability for injecting crc mismatches into mon scrub"),
Option("mon_scrub_inject_missing_keys", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(0.0)
- .set_description(""),
+ .set_description("probability for injecting missing keys into mon scrub"),
Option("mon_config_key_max_entry_size", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
.set_default(64_K)
Option("mon_sync_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(60.0)
- .set_description(""),
+ .set_description("timeout before canceling sync if syncing mon does not respond"),
Option("mon_sync_max_payload_size", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
.set_default(1_M)
- .set_description(""),
+ .set_description("target max message payload for mon sync"),
- Option("mon_sync_debug", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+ Option("mon_sync_debug", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
- .set_description(""),
+ .set_description("enable extra debugging during mon sync"),
Option("mon_inject_sync_get_chunk_delay", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(0)
- .set_description(""),
+ .set_description("inject delay during sync (seconds)"),
Option("mon_osd_min_down_reporters", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(2)
.set_description("Warn when snap trim queue is that large (or larger).")
.set_long_description("Warn when snap trim queue length for at least one PG crosses this value, as this is indicator of snap trimmer not keeping up, wasting disk space"),
- Option("mon_osd_force_trim_to", Option::TYPE_INT, Option::LEVEL_ADVANCED)
+ Option("mon_osd_force_trim_to", Option::TYPE_INT, Option::LEVEL_DEV)
.set_default(0)
- .set_description(""),
+ .set_description("force mons to trim osdmaps through this epoch"),
- Option("mon_mds_force_trim_to", Option::TYPE_INT, Option::LEVEL_ADVANCED)
+ Option("mon_mds_force_trim_to", Option::TYPE_INT, Option::LEVEL_DEV)
.set_default(0)
- .set_description(""),
+ .set_description("force mons to trim mdsmaps/fsmaps through this epoch"),
Option("mon_mds_skip_sanity", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(false)
- .set_description(""),
+ .set_description("skip sanity checks on fsmap/mdsmap"),
Option("mon_debug_extra_checks", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
Option("mon_debug_deprecated_as_obsolete", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
- .set_description(""),
+ .set_description("treat deprecated mon commands as obsolete"),
Option("mon_debug_dump_transactions", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
- .set_description(""),
+ .set_description("dump paxos transactions to log")
+ .add_see_also("mon_debug_dump_location"),
Option("mon_debug_dump_json", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
- .set_description(""),
+ .set_description("dump paxos transasctions to log as json")
+ .add_see_also("mon_debug_dump_transactions"),
Option("mon_debug_dump_location", Option::TYPE_STR, Option::LEVEL_DEV)
.set_default("/var/log/ceph/$cluster-$name.tdump")
- .set_description(""),
+ .set_description("file to dump paxos transactions to")
+ .add_see_also("mon_debug_dump_transactions"),
Option("mon_debug_no_require_mimic", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
.set_flag(Option::FLAG_CLUSTER_CREATE)
- .set_description(""),
+ .set_description("do not set mimic feature for new mon clusters"),
Option("mon_debug_no_require_nautilus", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
.set_flag(Option::FLAG_CLUSTER_CREATE)
- .set_description(""),
+ .set_description("do not set nautilus feature for new mon clusters"),
Option("mon_debug_no_require_bluestore_for_ec_overwrites", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
- .set_description(""),
+ .set_description("do not require bluestore OSDs to enable EC overwrites on a rados pool"),
Option("mon_debug_no_initial_persistent_features", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
.set_flag(Option::FLAG_CLUSTER_CREATE)
- .set_description(""),
+ .set_description("do not set any monmap features for new mon clusters"),
Option("mon_inject_transaction_delay_max", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(10.0)
- .set_description(""),
+ .set_description("max duration of injected delay in paxos"),
Option("mon_inject_transaction_delay_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(0)
- .set_description(""),
+ .set_description("probability of injecting a delay in paxos"),
Option("mon_inject_pg_merge_bounce_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
.set_default(0)
- .set_description(""),
+ .set_description("probability of failing and reverting a pg_num decrement"),
Option("mon_sync_provider_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
.set_default(0)
- .set_description(""),
+ .set_description("kill mon sync requester at specific point"),
Option("mon_sync_requester_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
.set_default(0)
- .set_description(""),
+ .set_description("kill mon sync requestor at specific point"),
Option("mon_force_quorum_join", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(false)
- .set_description(""),
+ .set_description("force mon to rejoin quorum even though it was just removed"),
Option("mon_keyvaluedb", Option::TYPE_STR, Option::LEVEL_ADVANCED)
.set_default("rocksdb")
+ .set_enum_allowed({"leveldb", "rocksdb"})
.set_flag(Option::FLAG_CREATE)
- .set_description(""),
+ .set_description("database backend to use for the mon database"),
Option("mon_debug_unsafe_allow_tier_with_nonempty_snaps", Option::TYPE_BOOL, Option::LEVEL_DEV)
.set_default(false)
Option("mon_osd_crush_smoke_test", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
- .set_description(""),
+ .set_description("perform a smoke test on any new CRUSH map before accepting changes"),
Option("mon_smart_report_timeout", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(5)