注意
本文档适用于 Ceph 的开发版本。
Monitor Config Reference
了解如何配置 Ceph Monitor 是构建可靠 Ceph 存储集群 的重要组成部分。 所有 Ceph 存储集群至少有一个 Monitor。Monitor 补充通常保持相当一致,但您可以在集群中添加、删除或替换 Monitor。有关详细信息,请参阅 添加/删除 Monitors。
背景
Ceph Monitors 维护 集群映射 的“主副本”。
集群映射 使 Ceph 客户端 能够确定所有 Ceph Monitors、Ceph OSD Daemons 和 Ceph Metadata Servers 的位置。客户端通过连接到一个 Ceph Monitor 并检索当前的集群映射来完成此操作。Ceph 客户端必须连接到 Ceph Monitor,然后才能从 Ceph OSD Daemons 或 Ceph Metadata Servers 读取或写入。拥有当前集群映射副本和 CRUSH 算法的 Ceph 客户端可以计算集群中任何 RADOS 对象的位置。这使得 Ceph 客户端可以直接与 Ceph OSD Daemons 通信。客户端与 Ceph OSD Daemons 之间的直接通信改进了传统的存储架构,传统架构要求客户端与中央组件通信。有关此主题的更多信息,请参阅 可扩展性和高可用性。
Ceph Monitor 的主要功能是维护集群映射的主副本。Monitors 还提供身份验证和日志记录服务。Monitor 服务中的所有更改都由 Ceph Monitor 写入单个 Paxos 实例,Paxos 将更改写入键/值存储。这提供了强一致性。Ceph Monitors 能够在同步操作期间查询集群映射的最新版本,并且它们使用键/值存储的快照和迭代器(使用 RocksDB)来执行全存储同步。
集群映射
集群映射是各种映射的组合,包括 Monitor 映射、OSD 映射、放置组映射和元数据服务器映射。集群映射跟踪许多重要事项:哪些进程在 Ceph 存储集群中;哪些在 Ceph 存储集群中的进程处于 up 和运行状态或 down 状态;放置组是 active 还是 inactive,是 clean 还是处于其他状态;以及反映集群当前状态的其他详细信息,例如总存储空间量和已用存储空间量。
当集群状态发生重大变化时(例如,Ceph OSD Daemon 宕机,放置组降级等),集群映射会更新以反映集群的当前状态。此外,Ceph Monitor 还维护集群先前状态的历史记录。Monitor 映射、OSD 映射、放置组映射和元数据服务器映射都维护其映射版本的历史记录。我们将每个版本称为“纪元”。
操作 Ceph 存储集群时,跟踪这些状态是系统管理职责的重要组成部分。有关其他详细信息,请参阅 监控集群 和 监控 OSD 和 PG。
Monitor 仲裁
我们的配置 ceph 部分提供了一个微不足道的 Ceph 配置文件,用于测试集群中的一个 Monitor。集群可以只有一个 Monitor 正常运行;但是,单个 Monitor 是单点故障。为确保生产 Ceph 存储集群中的高可用性,您应该运行多个 Monitor,以便单个 Monitor 故障不会导致整个集群宕机。
当 Ceph 存储集群运行多个 Ceph Monitors 以实现高可用性时,Ceph Monitors 使用 Paxos 来就主集群映射达成共识。共识需要运行多数 Monitors 才能建立仲裁以就集群映射达成共识(例如,1;3 个中的 2 个;5 个中的 3 个;6 个中的 4 个等)。
- mon_force_quorum_join
强制 Monitor 加入仲裁,即使它之前已从映射中删除
- 类型:
bool- 默认值:
false
一致性
当您将 Monitor 设置添加到 Ceph 配置文件时,您需要了解 Ceph Monitors 的一些架构方面。Ceph 对 Ceph Monitor 在集群中发现另一个 Ceph Monitor 施加严格的一致性要求。尽管 Ceph 客户端和其他 Ceph daemons 使用 Ceph 配置文件来发现 Monitors,但 Monitors 使用 Monitor 映射 (monmap) 而不是 Ceph 配置文件来相互发现。
Ceph Monitor 在 Ceph 存储集群中发现其他 Ceph Monitors 时始终引用 monmap 的本地副本。使用 monmap 而不是 Ceph 配置文件可以避免可能破坏集群的错误(例如,在指定 Monitor 地址或端口时 ceph.conf 中的拼写错误)。由于 Monitors 使用 monmaps 进行发现,并且它们与客户端和其他 Ceph daemons 共享 monmaps,因此 monmap 为 Monitors 提供了严格的保证,即它们的共识是有效的。
严格一致性也适用于 monmap 的更新。与 Ceph Monitor 上的任何其他更新一样,monmap 的更改始终通过称为 Paxos 的分布式共识算法运行。Ceph Monitors 必须就 monmap 的每次更新达成一致,例如添加或删除 Ceph Monitor,以确保仲裁中的每个 Monitor 都具有相同版本的 monmap。对 monmap 的更新是增量的,以便 Ceph Monitors 拥有最新达成的版本和一组以前的版本。维护历史记录使具有较旧版本 monmap 的 Ceph Monitor 能够赶上 Ceph 存储集群的当前状态。
如果 Ceph Monitors 通过 Ceph 配置文件而不是通过 monmap 相互发现,将会引入额外的风险,因为 Ceph 配置文件不会自动更新和分发。Ceph Monitors 可能会无意中使用较旧的 Ceph 配置文件,无法识别 Ceph Monitor,脱离仲裁,或者出现 Paxos 无法准确确定系统当前状态的情况。
引导 Monitors
在大多数配置和部署情况下,部署 Ceph 的工具会通过为您生成 Monitor 映射来帮助引导 Ceph Monitors(例如 cephadm 等)。Ceph Monitor 需要一些明确的设置
文件系统 ID:
fsid是您的对象存储的唯一标识符。由于您可以在同一硬件上运行多个集群,因此在引导 Monitor 时必须指定对象存储的唯一 ID。部署工具通常会为您执行此操作(例如cephadm可以调用uuidgen等工具),但您也可以手动指定fsid。Monitor ID:Monitor ID 是分配给集群中每个 Monitor 的唯一 ID。它是一个字母数字值,按照惯例,标识符通常遵循字母递增(例如
a、b等)。这可以在 Ceph 配置文件中设置(例如[mon.a]、[mon.b]等),由部署工具设置,或使用ceph命令行设置。密钥:Monitor 必须有密钥。像
cephadm这样的部署工具通常会为您执行此操作,但您也可以手动执行此步骤。有关详细信息,请参阅 Monitor Keyrings。
有关引导的更多详细信息,请参阅 引导 Monitor。
配置 Monitors
要将配置设置应用于整个集群,请在 [global] 下输入配置设置。要将配置设置应用于集群中的所有 Monitors,请在 [mon] 下输入配置设置。要将配置设置应用于特定的 Monitors,请指定 Monitor 实例(例如 [mon.a])。按照惯例,Monitor 实例名称使用字母表示法。
[global]
[mon]
[mon.a]
[mon.b]
[mon.c]
最小配置
通过 Ceph 配置文件设置 Ceph Monitor 的最低限度配置包括每个 Monitor 的主机名和网络地址。您可以在 [mon] 下或在特定 Monitor 的条目下配置这些设置。
[global]
mon_host = 10.0.0.2,10.0.0.3,10.0.0.4
[mon.a]
host = hostname1
mon_addr = 10.0.0.10:6789
有关详细信息,请参阅 网络配置参考。
注意
此 Monitor 的最低配置假定部署工具为您生成了 fsid 和 mon. 密钥。
部署 Ceph 集群后,不应更改 Monitor 的 IP 地址。但是,如果您决定更改 Monitor 的 IP 地址,则必须遵循特定的过程。有关详细信息,请参阅 更改 Monitor 的 IP 地址。
客户端也可以通过使用 DNS SRV 记录找到 Monitors。有关详细信息,请参阅 通过 DNS 查找 Monitors。
集群 ID
每个 Ceph 存储集群都有一个唯一的标识符 (fsid)。如果指定,它通常出现在配置文件的 [global] 部分。部署工具通常会生成 fsid 并将其存储在 Monitor 映射中,因此该值可能不会出现在配置文件中。fsid 使得在同一硬件上运行多个集群的 daemons 成为可能。
- fsid
集群 ID。每个集群一个。如果未指定,可以由部署工具生成。
- 类型:
uuid
注意
如果您使用的部署工具为您执行此操作,请不要设置此值。
初始成员
我们建议运行至少三个 Ceph Monitors 的生产 Ceph 存储集群,以确保高可用性。当您运行多个 Monitors 时,您可以指定必须是集群成员才能建立仲裁的初始 Monitors。这可以减少集群上线所需的时间。
[mon]
mon_initial_members = a,b,c
- mon_initial_members
启动期间集群中初始 Monitors 的 ID。如果指定,Ceph 要求奇数个 Monitors 才能形成初始仲裁(例如 3 个)。
- 类型:
str
注意
集群中多数 Monitors 必须能够相互联系才能建立仲裁。您可以使用此设置减少建立仲裁的初始 Monitor 数量。
数据
Ceph 提供了一个默认路径,Ceph Monitors 在其中存储数据。为了在生产 Ceph 存储集群中获得最佳性能,我们建议在与 Ceph OSD Daemons 分离的主机和驱动器上运行 Ceph Monitors。由于 RocksDB 使用 mmap() 写入数据,Ceph Monitors 会非常频繁地将其数据从内存刷新到磁盘,如果数据存储与 OSD Daemons 位于同一位置,这可能会干扰 Ceph OSD Daemon 工作负载。
在 Ceph 0.58 及更早版本中,Ceph Monitors 将其数据存储在普通文件中。这种方法允许用户使用 ls 和 cat 等常见工具检查 Monitor 数据。但是,这种方法没有提供强一致性。
在 Ceph 0.59 及更高版本中,Ceph Monitors 将其数据存储为键/值对。Ceph Monitors 需要 ACID 事务。使用数据存储可以防止恢复的 Ceph Monitors 通过 Paxos 运行损坏的版本,并且它允许在单个原子批处理中执行多个修改操作,以及其他优点。
通常,我们不建议更改默认数据位置。如果您修改默认位置,我们建议您通过在配置文件的 [mon] 部分设置它来使其在所有 Ceph Monitors 中保持一致。
- mon_data
Monitor 的数据位置。
- 类型:
str- 默认值:
/var/lib/ceph/mon/$cluster-$id
- mon_data_size_warn
当 Monitor 的数据存储增长到大于此大小时(默认 15GB),发出
HEALTH_WARN状态。- 类型:
大小- 默认值:
15Gi
- mon_data_avail_warn
当容纳 Monitor 数据存储的文件系统报告其可用容量小于或等于此百分比时,发出
HEALTH_WARN状态。- 类型:
int- 默认值:
30
- mon_data_avail_crit
当容纳 Monitor 数据存储的文件系统报告其可用容量小于或等于此百分比时,发出
HEALTH_ERR状态。- 类型:
int- 默认值:
5
- mon_warn_on_crush_straw_calc_version_zero
当 CRUSH
straw_calc_version为零时,发出HEALTH_WARN。有关详细信息,请参阅 CRUSH map tunables。- 类型:
bool- 默认值:
true
- mon_warn_on_legacy_crush_tunables
当 CRUSH 可调参数太旧时(比
mon_min_crush_required_version旧),发出HEALTH_WARN- 类型:
bool- 默认值:
true- 另请参阅:
- mon_crush_min_required_version
集群所需的最低可调配置文件。有关详细信息,请参阅 CRUSH map tunables。
- 类型:
str- 默认值:
hammer- 另请参阅:
- mon_warn_on_osd_down_out_interval_zero
当
mon_osd_down_out_interval为零时,发出HEALTH_WARN。将此选项设置为零对领导者来说很像noout标志。很难弄清楚没有设置noout标志但行为相同的集群出了什么问题,因此在这种情况下我们会报告警告。- 类型:
bool- 默认值:
true- 另请参阅:
- mon_warn_on_slow_ping_ratio
当 OSD 之间的任何心跳超过
osd_heartbeat_grace的mon_warn_on_slow_ping_ratio时,发出HEALTH_WARN。- 类型:
float- 默认值:
0.05- 另请参阅:
- mon_warn_on_slow_ping_time
使用特定值覆盖
mon_warn_on_slow_ping_ratio。如果 OSD 之间的任何心跳超过mon_warn_on_slow_ping_time毫秒,则发出HEALTH_WARN。默认值为 0(禁用)。- 类型:
float- 默认值:
0.0- 另请参阅:
- mon_warn_on_pool_no_redundancy
如果任何池配置为没有副本,则发出
HEALTH_WARN。- 类型:
bool- 默认值:
true- 另请参阅:
- mon_cache_target_full_warn_ratio
池的
cache_target_full和target_max_object之间的位置,我们开始发出警告- 类型:
float- 默认值:
0.66
- mon_health_to_clog
定期将健康状况摘要发送到集群日志。
- 类型:
bool- 默认值:
true
- mon_health_to_clog_tick_interval
Monitor 将健康状况摘要发送到集群日志的频率(以秒为单位)(非正数禁用)。如果当前健康状况摘要为空或与上次相同,Monitor 将不会将其发送到集群日志。
- 类型:
float- 默认值:
1 minute
- mon_health_to_clog_interval
Monitor 将健康状况摘要发送到集群日志的频率(以秒为单位)(非正数禁用)。无论是否与上一个摘要不同,Monitors 都会始终将摘要发送到集群日志。
- 类型:
int- 默认值:
10 minutes- 另请参阅:
存储容量
当 Ceph 存储集群接近其最大容量时(参见 ``mon_osd_full ratio``),Ceph 会阻止您写入或读取 OSD,作为防止数据丢失的安全措施。因此,让生产 Ceph 存储集群接近其满比例不是一种好的做法,因为它牺牲了高可用性。默认满比例为 .95,即 95% 的容量。对于 OSD 数量较少的测试集群来说,这是一个非常激进的设置。
提示
监控集群时,请警惕与 nearfull 比例相关的警告。这意味着如果一个或多个 OSD 发生故障,一些 OSD 故障可能会导致暂时的服务中断。考虑添加更多 OSD 以增加存储容量。
测试集群的常见场景涉及系统管理员从 Ceph 存储集群中删除 OSD,观察集群重新平衡,然后删除另一个 OSD,再删除另一个 OSD,直到至少一个 OSD 最终达到满比例并且集群锁定。即使对于测试集群,我们也建议进行一些容量规划。规划使您能够衡量需要多少备用容量才能维持高可用性。理想情况下,您希望为一系列 Ceph OSD Daemon 故障进行规划,在这些故障中,集群可以恢复到 active+clean 状态,而无需立即替换这些 OSD。集群操作继续处于 active+degraded 状态,但这不适合正常操作,应及时解决。
下图描绘了一个简单的 Ceph 存储集群,其中包含 33 个 Ceph 节点,每个主机有一个 OSD,每个 OSD 从 3TB 驱动器读取和写入。因此,这个示例 Ceph 存储集群的最大实际容量为 99TB。如果 mon osd full ratio 为 0.95,如果 Ceph 存储集群降至 5TB 剩余容量,则集群将不允许 Ceph 客户端读取和写入数据。因此,Ceph 存储集群的运行容量为 95TB,而不是 99TB。
在此类集群中,一两个 OSD 发生故障是正常的。不那么频繁但合理的场景涉及机架的路由器或电源故障,这会同时导致多个 OSD 宕机(例如 OSD 7-12)。在这种情况下,您仍然应该努力使集群保持运行状态并实现 active + clean 状态——即使这意味着在短时间内添加一些带有额外 OSD 的主机。如果您的容量利用率过高,您可能不会丢失数据,但如果集群的容量利用率超过满比例,您仍然可能会在解决故障域中的中断时牺牲数据可用性。因此,我们建议至少进行一些粗略的容量规划。
为您的集群确定两个数字
OSD 数量。
集群总容量
如果您将集群的总容量除以集群中的 OSD 数量,您将找到集群中 OSD 的平均容量。考虑将该数字乘以您预计在正常操作期间同时发生故障的 OSD 数量(一个相对较小的数字)。最后将集群容量乘以满比例以得出最大运行容量;然后,从您预计会发生故障的 OSD 中减去数据量以得出合理的满比例。对更高数量的 OSD 故障(例如一机架 OSD)重复上述过程,以得出合理的接近满比例的数字。
以下设置仅在集群创建时应用,然后存储在 OSDMap 中。需要澄清的是,在正常操作中,OSD 使用的值是 OSDMap 中的值,而不是配置文件或中央配置存储中的值。
[global]
mon_osd_full_ratio = .80
mon_osd_backfillfull_ratio = .75
mon_osd_nearfull_ratio = .70
mon_osd_full_ratio
- 描述:
OSD 被视为
full之前设备空间利用率的阈值百分比。- 类型:
Float
- 默认值:
0.95
mon_osd_backfillfull_ratio
- 描述:
OSD 被视为
full以进行回填之前的设备空间利用率阈值百分比。- 类型:
Float
- 默认值:
0.90
mon_osd_nearfull_ratio
- 描述:
OSD 被视为
nearfull之前设备空间利用率的阈值百分比。- 类型:
Float
- 默认值:
0.85
提示
如果某些 OSD 接近满,但其他 OSD 有足够的容量,则可能是为接近满的 OSD 设置的 CRUSH 权重不准确。
提示
这些设置仅在集群创建期间应用。之后,需要使用 ceph osd set-nearfull-ratio 和 ceph osd set-full-ratio 在 OSDMap 中更改它们。
心跳
Ceph Monitors 通过要求每个 OSD 报告以及接收 OSD 关于其相邻 OSD 状态的报告来了解集群。Ceph 为 Monitor/OSD 交互提供了合理的默认设置;但是,您可以根据需要修改它们。有关详细信息,请参阅 Monitor/OSD 交互。
Monitor 存储同步
当您运行具有多个 Monitors 的生产集群时(推荐),每个 Monitor 都会检查相邻 Monitor 是否具有集群映射的最新版本(例如,相邻 Monitor 中的映射具有比即时 Monitor 映射中的当前纪元高一个或多个纪元的纪元号)。定期地,集群中的一个 Monitor 可能会落后于其他 Monitors,以至于它必须离开仲裁,同步以检索有关集群的最新信息,然后重新加入仲裁。出于同步目的,Monitors 可以承担以下三种角色之一
Leader:Leader 是第一个达到集群映射最新 Paxos 版本的 Monitor。
Provider:Provider 是具有集群映射最新版本的 Monitor,但不是第一个达到最新版本的 Monitor。
Requester: Requester 是落后于 Leader 的 Monitor,必须同步才能检索有关集群的最新信息,然后才能重新加入仲裁。
这些角色使 Leader 能够将同步职责委托给 Provider,这可以防止同步请求使 Leader 过载——从而提高性能。在下图中,Requester 了解到它落后于其他 Monitors。Requester 要求 Leader 同步,Leader 告诉 Requester 与 Provider 同步。
当新 Monitor 加入集群时,始终会发生同步。在运行时操作期间,Monitors 可能会在不同的时间接收到集群映射的更新。这意味着 Leader 和 Provider 角色可能会从一个 Monitor 迁移到另一个 Monitor。如果这在同步期间发生(例如 Provider 落后于 Leader),Provider 可以终止与 Requester 的同步。
同步完成后,Ceph 会在整个集群中执行修剪。修剪要求放置组处于 active+clean 状态。
- mon_sync_timeout
Monitor 将等待其同步 Provider 的下一个更新消息的秒数,然后放弃并再次引导。
- 类型:
float- 默认值:
1 minute
- mon_sync_max_payload_size
同步有效负载的最大大小(以字节为单位)。
- 类型:
大小- 默认值:
1Mi
- paxos_max_join_drift
在必须首先同步 Monitor 数据存储之前,Paxos 的最大迭代次数。当 Monitor 发现其对等方领先于它太远时,它会首先与数据存储同步,然后再继续。
- 类型:
int- 默认值:
10
- paxos_stash_full_interval
存储 PaxosService 状态完整副本的频率(以提交次数计)。当前此设置仅影响
mds、mon、auth和mgrPaxosServices。- 类型:
int- 默认值:
25
- paxos_propose_interval
在此时间间隔内收集更新,然后建议进行地图更新。
- 类型:
float- 默认值:
1.0
- paxos_min
要保留的 Paxos 状态的最小数量
- 类型:
int- 默认值:
500
- paxos_min_wait
在一段时间不活动后收集更新的最短时间。
- 类型:
float- 默认值:
0.05
- paxos_trim_min
在修剪之前容忍的额外提议数量
- 类型:
int- 默认值:
250
- paxos_trim_max
一次修剪的额外提议的最大数量
- 类型:
int- 默认值:
500
- paxos_service_trim_min
触发修剪的最小版本数量(0 禁用它)
- 类型:
uint- 默认值:
250
- paxos_service_trim_max
在单个提议期间修剪的最大版本数量(0 禁用它)
- 类型:
uint- 默认值:
500
- paxos_service_trim_max_multiplier
当修剪大小时,paxos_service_trim_max 将乘以的因子,以获得新的上限(0 禁用它)
- 类型:
uint- 默认值:
20- min:
0
- mon_mds_force_trim_to
强制 Monitor 修剪 mdsmaps,直到但不包括此 FSMap 纪元。值为 0 禁用此配置(默认值)。此命令可能很危险,请谨慎使用。
- 类型:
int- 默认值:
0
- mon_osd_force_trim_to
强制 Monitor 将 osdmaps 修剪到此点,即使在指定纪元有 PGs 不干净(0 禁用,这很危险,必须谨慎使用)。
- 类型:
int- 默认值:
0
- mon_osd_cache_size
osdmaps 缓存的大小,不依赖于底层存储的缓存
- 类型:
int- 默认值:
500
- mon_election_timeout
在选举提议者上,等待所有 ACK 的最大时间(以秒为单位)。
- 类型:
float- 默认值:
5.0
- mon_lease
Monitor 版本的租约长度(以秒为单位)。
- 类型:
float- 默认值:
5.0
- mon_lease_renew_interval_factor
mon_lease*mon_lease_renew_interval_factor将是 Leader 续订其他 Monitor 租约的时间间隔。该因子应小于1.0。- 类型:
float- 默认值:
0.6- 允许范围:
[0, 0.9999999]- 另请参阅:
- mon_lease_ack_timeout_factor
Leader 将等待
mon_lease*mon_lease_ack_timeout_factor让 Providers 确认租约延长。- 类型:
float- 默认值:
2.0- 允许范围:
[1.0001, 100]- 另请参阅:
- mon_accept_timeout_factor
Leader 将等待
mon_lease*mon_accept_timeout_factor让 Requester(s) 接受 Paxos 更新。它也用于 Paxos 恢复阶段,用于类似目的。- 类型:
float- 默认值:
2.0- 另请参阅:
- mon_min_osdmap_epochs
始终保留的 OSD 映射纪元的最小数量。
- 类型:
int- 默认值:
500
- mon_max_log_epochs
Monitor 应保留的 Log 纪元的最大数量。
- 类型:
int- 默认值:
500
时钟
Ceph daemons 相互传递关键消息,这些消息必须在 daemons 达到超时阈值之前进行处理。如果 Ceph Monitors 中的时钟未同步,可能会导致许多异常。例如
Daemons 忽略收到的消息(例如,时间戳已过时)
当未及时收到消息时,超时触发得太早/太晚。
有关详细信息,请参阅 Monitor Store Synchronization。
提示
您必须在 Ceph Monitor 主机上配置 NTP 或 PTP daemons,以确保 Monitor 集群以同步时钟运行。让 Monitor 主机相互同步以及与多个高质量的上游时间源同步可能是有利的。
即使 NTP 保持合理的同步水平,时钟漂移仍然可能很明显,尽管这种差异尚未造成损害。Ceph 的时钟漂移/时钟偏差警告可能会被触发,即使 NTP 保持合理的同步水平。在这些情况下增加时钟漂移可能是可以容忍的;但是,许多因素,例如工作负载、网络延迟、配置覆盖默认超时和 Monitor Store Synchronization 设置,可能会影响可接受的时钟漂移水平,而不会危及 Paxos 保证。
Ceph 提供以下可调选项,允许您找到可接受的值。
- mon_tick_interval
Monitor 的滴答间隔(以秒为单位)。
- 类型:
int- 默认值:
5
- mon_clock_drift_allowed
在发出健康警告之前允许的 Monitors 之间的时钟漂移(以秒为单位)
- 类型:
float- 默认值:
0.05
- mon_clock_drift_warn_backoff
在集群日志中记录时钟漂移警告的指数退避因子
- 类型:
float- 默认值:
5.0
- mon_timecheck_interval
Leader 的时间检查间隔(时钟漂移检查)(以秒为单位)。
- 类型:
float- 默认值:
5 minutes
- mon_timecheck_skew_interval
存在 Leader 偏差(以秒为单位)时的时间检查间隔(时钟漂移检查)(以秒为单位)。
- 类型:
float- 默认值:
30.0- 另请参阅:
客户端
- mon_client_hunt_interval
客户端将每隔
N秒尝试连接到不同的 Monitor,直到建立连接。- 类型:
float- 默认值:
3.0
- mon_client_ping_interval
客户端将每隔这么多秒 ping Monitors。
- 类型:
float- 默认值:
10.0
- mon_client_max_log_entries_per_message
Monitor 为每个客户端消息生成的最大日志条目数。
- 类型:
int- 默认值:
1000
- mon_client_bytes
允许在内存中的客户端消息数据量(以字节为单位)。
- 类型:
大小- 默认值:
100Mi
Pool settings
从 v0.94 版本开始,支持池标志,允许或禁止对池进行更改。如果配置得当,Monitors 还可以禁止删除池。这种保护措施带来的不便远远超过了它防止意外删除池(以及数据)的数量。
- mon_allow_pool_delete
Monitors 是否允许删除池,无论池标志如何?
- 类型:
bool- 默认值:
false
- osd_pool_default_ec_fast_read
是否在池上启用快速读取。如果创建时未指定
fast_read,它将用作新创建的纠删码池的默认设置。- 类型:
bool- 默认值:
false
- osd_pool_default_flag_hashpspool
在新池上设置 hashpspool(更好的哈希方案)标志
- 类型:
bool- 默认值:
true
- osd_pool_default_flag_nodelete
在新池上设置
nodelete标志,以防止删除池。- 类型:
bool- 默认值:
false
- osd_pool_default_flag_nopgchange
在新池上设置
nopgchange标志。不允许更改 PG 数量。- 类型:
bool- 默认值:
false
- osd_pool_default_flag_nosizechange
在新池上设置
nosizechange标志。不允许更改size。- 类型:
bool- 默认值:
false
有关池标志的更多信息,请参阅 Pool values。
杂项
- mon_max_osd
集群中允许的最大 OSD 数量。
- 类型:
int- 默认值:
10000
- mon_globalid_prealloc
为集群中的客户端和 daemons 预分配的全局 ID 数量。
- 类型:
uint- 默认值:
10000
- mon_subscribe_interval
订阅的刷新间隔(以秒为单位)。订阅机制使能够获取集群映射和日志信息。
- 类型:
float- 默认值:
1 day
- mon_stat_smooth_intervals
Ceph 将平滑最近
N个 PG 映射上的统计数据。- 类型:
uint- 默认值:
6- min:
1
- mon_probe_timeout
Monitor 在引导之前等待查找对等方的时间(以秒为单位)。
- 类型:
float- 默认值:
2.0
- mon_daemon_bytes
元数据服务器和 OSD 消息的消息内存上限(以字节为单位)。
- 类型:
大小- 默认值:
400Mi
- mon_max_log_entries_per_event
每个事件的最大日志条目数。
- 类型:
int- 默认值:
4096
- mon_osd_prime_pg_temp
当一个
outOSD 返回集群时,启用或禁用使用以前的 OSD 填充 PGMap。设置为true时,客户端将继续使用以前的 OSD,直到 PG 的新inOSD 已配对。- 类型:
bool- 默认值:
true
- mon_osd_prime_pg_temp_max_time
当一个 out OSD 返回集群时,Monitor 应该花多少时间(以秒为单位)尝试填充 PGMap。
- 类型:
float- 默认值:
0.5
- mon_osd_prime_pg_temp_max_estimate
在并行填充所有 PG 之前,对每个 PG 花费的时间的最大估计。
- 类型:
float- 默认值:
0.25
- mon_mds_skip_sanity
跳过 FSMap 上的安全断言(以防出现我们仍想继续的错误)。如果 FSMap 健全性检查失败,Monitor 将终止,但我们可以通过启用此选项来禁用它。
- 类型:
bool- 默认值:
false
- mon_max_mdsmap_epochs
在单个提议期间修剪的最大 mdsmap 纪元数。
- 类型:
int- 默认值:
500
- mon_config_key_max_entry_size
config-key 条目的最大大小(以字节为单位)
- 类型:
大小- 默认值:
64Ki
- mon_scrub_interval
Monitor 通过比较存储的校验和与所有存储密钥的计算校验和来擦洗其存储的频率。(0 禁用,这很危险,必须谨慎使用,以免众神降怒于你。)
- 类型:
秒- 默认值:
1 day
- mon_scrub_max_keys
每次擦洗的最大密钥数。
- 类型:
int- 默认值:
100
- mon_compact_on_start
在
ceph-mon启动时压缩用作 Ceph Monitor 存储的数据库。如果常规压缩失败,手动压缩有助于缩小 Monitor 数据库并提高其性能。- 类型:
bool- 默认值:
false
- mon_compact_on_bootstrap
在引导时压缩用作 Ceph Monitor 存储的数据库。Monitors 在引导后相互探测以建立仲裁。如果 Monitor 在加入仲裁之前超时,它将重新开始并再次引导。
- 类型:
bool- 默认值:
false
- mon_compact_on_trim
当我们修剪其旧状态时,压缩某个前缀(包括 paxos)。
- 类型:
bool- 默认值:
true
- mon_cpu_threads
在 Monitor 上执行 CPU 密集型工作的线程数。
- 类型:
int- 默认值:
4
- mon_osd_mapping_pgs_per_chunk
我们分块计算从放置组到 OSD 的映射。此选项指定每个块的放置组数量。
- 类型:
int- 默认值:
4096
- mon_session_timeout
Monitor 将终止在此时间限制内保持空闲状态的非活动会话。
- 类型:
int- 默认值:
5 minutes
- mon_osd_cache_size_min
OSD Monitor 缓存中保持映射在内存中的最小字节数。
- 类型:
大小- 默认值:
128Mi
- mon_memory_target
在启用缓存自动调整的情况下,OSD Monitor 缓存和 KV 缓存中保持映射在内存中的字节数。
- 类型:
大小- 默认值:
2Gi
- mon_memory_autotune
自动调整用于 OSD Monitors 和 KV 数据库的缓存内存。
- 类型:
bool- 默认值:
true
- enable_availability_tracking
定期计算和存储集群中每个池的可用性得分
- 类型:
bool- 默认值:
false
- pool_availability_update_interval
按此间隔更新数据可用性得分。默认情况下,间隔与 paxos_propose_interval 配置相同。
- 类型:
float- 默认值:
1.0
NVMe-oF Monitor Client
- nvmeof_mon_client_disconnect_panic
NVMeof 网关如果失去与 Monitor 的连接,应在多少秒后触发 panic 的持续时间(以秒为单位)
- 类型:
秒- 默认值:
100
- nvmeof_mon_client_connect_panic
NVMeof 网关如果未收到 Monitor 的初始映射,应在多少秒后触发 panic 的持续时间(以秒为单位)
- 类型:
秒- 默认值:
30
- nvmeof_mon_client_tick_period
NVMeof 网关信标消息发送给 Monitor 的周期(以秒为单位)
- 类型:
秒- 默认值:
2