Ceph 存储集群2-配置:心跳选项OSD选项存储池归置组和 CRUSH 选项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ceph 存储集群2-配置:心跳选项OSD选项存储池归置组和 CRUSH 选项相关的知识,希望对你有一定的参考价值。
一、心跳选项
完成基本配置后就可以部署、运行 Ceph 了。执行 ceph health 或 ceph -s 命令时,监视器会报告 Ceph 存储集群的当前状态。监视器通过让各 OSD 自己报告、并接收 OSD 关于邻居状态的报告来掌握集群动态。如果监视器没收到报告,或者它只收到集群的变更报告,那它就要更新集群运行图。
关于监视器与 OSD 的交互 Ceph 提供了合理的默认值,然而你可以覆盖它们。下面几段从集群监控角度描述了 Ceph 监视器与 OSD 如何交互。
OSD 验证心跳
各 OSD 每 6 秒会与其他 OSD 进行心跳检查,用 [osd] 下的 osd heartbeat interval 可更改此间隔、或运行时更改。如果一个 OSD 20 秒都没有心跳,集群就认为它 down 了,用 [osd] 下的 osd heartbeat grace 可更改宽限期、或者运行时更改。
OSD 报告死亡 OSD
默认情况下,一个 OSD 必须向监视器报告三次另一个 OSD down 的消息,监视器才会认为那个被报告的 OSD down 了;配置文件里 [mon] 段下的 mon osd min down reports 选项( v0.62 之前是 osd min down reports )可更改这个最少 osd down 消息次数,或者运行时设置。默认情况下,只要有一个 OSD 报告另一个 OSD 挂的消息即可,配置文件里 [mon] 段下的 mon osd min down reporters 可用来更改必需 OSD 数( v0.62 之前的 osd min down reporters ),或者运行时更改。
OSD 报告互联失败
如果一 OSD 守护进程不能和配置文件中定义的任何 OSD 建立连接,它会每 30 秒向监视器索要一次最新集群运行图,你可以在 [osd] 下设置 osd mon heartbeat interval 来更改这个心跳间隔,或者运行时更改。
OSD 报告自己的状态
如果一 OSD 在 mon osd report timeout 时间内没向监视器报告过,监视器就认为它 down 了。在 OSD 守护进程会向监视器报告某些事件,如某次操作失败、归置组状态变更、 up_thru 变更、或它将在 5 秒内启动。你可以设置 [osd] 下的 osd mon report interval min 来更改最小报告间隔,或在运行时更改。 OSD 守护进程每 120 秒会向监视器报告其状态,不论是否有值得报告的事件。在 [osd] 段下设置 osd mon report interval max 可更改OSD报告间隔,或运行时更改。
配置选项
心跳选项应该置于配置文件的 [global] 段下。
监视器选项
mon osd min up ratio 描述: 在把 OSD 标记为 down 前,保持处于 up 状态的 OSD 最小比例。 类型: Double 默认值: .3 mon osd min in ratio 描述: 在把 OSD 标记为 out 前,保持处于 in 状态的 OSD 最小比例。 类型: Double 默认值: .3 mon osd laggy halflife 描述: 滞后量消退时间,秒。 类型: Integer 默认值: 60*60 mon osd laggy weight 描述: 滞后量消退时新样本的权重。 类型: Double 默认值: 0.3 mon osd adjust heartbeat grace 描述: 设置为 true 时, Ceph 将根据滞后量伸缩。 类型: Boolean 默认值: true mon osd adjust down out interval 描述: 设置为 true 时, Ceph 将根据滞后量伸缩。 类型: Boolean 默认值: true mon osd auto mark in 描述: Ceph 将把任何启动中的 OSD 标记为在集群中( in )。 类型: Boolean 默认值: false mon osd auto mark auto out in 描述: 把正在启动、且被自动标记为 out 状态的 OSD 标记为 in 。 类型: Boolean 默认值: true mon osd auto mark new in 描述: 把正在启动的新 OSD 标记为 in 。 类型: Boolean 默认值: true mon osd down out interval 描述: 在 OSD 停止响应多少秒后把它标记为 down 且 out 。 类型: 32-bit Integer 默认值: 300 mon osd downout subtree limit 描述: Ceph 可以把最大为多少的 CRUSH 单元自动标记为 out 。 类型: String 默认值: rack mon osd report timeout 描述: 宣布无响应 OSD down 前的宽限期,秒。 类型: 32-bit Integer 默认值: 900 mon osd min down reporters 描述: 确定一 OSD 状态为 down 的最少报告来源 OSD 数。 类型: 32-bit Integer 默认值: 1 mon osd min down reports 描述: 一 OSD 必须重复报告另一个 down 的次数。 类型: 32-bit Integer 默认值: 3
OSD 选项
osd heartbeat address 描述: OSD 用于心跳的网络地址。 类型: Address 默认值: 此主机的地址。 osd heartbeat interval 描述: 一 OSD 探测邻居的频率,秒。 类型: 32-bit Integer 默认值: 6 osd heartbeat grace 描述: OSD 多久没心跳就会被集群认为它挂( down )了。 类型: 32-bit Integer 默认值: 20 osd mon heartbeat interval 描述: OSD 没有邻居时多久探测一次监视器。 类型: 32-bit Integer 默认值: 30 osd mon report interval max 描述: 监视器允许 OSD 报告的最大间隔,超时将认为 OSD 挂了( down )。 类型: 32-bit Integer 默认值: 120 osd mon report interval min 描述: 从一 OSD 启动或其它可报告事件发生以来,多长时间内必须向监视器报告一次。 类型: 32-bit Integer 默认值: 5 有效范围: 要小于 osd mon report interval max 。 osd mon ack timeout 描述: OSD 等待监视器提供统计信息的时间,秒。 类型: 32-bit Integer 默认值: 30
二、OSD选项
你可以通过配置文件调整 OSD ,但靠默认值和极少的配置 OSD 守护进程就能运行。最简 OSD 配置需设置 osd journal size 和 host ,其他几乎都能用默认值。
Ceph 的 OSD 守护进程用递增的数字作标识,按惯例以 0 开始,如下:
osd.0 osd.1 osd.2
在配置文件里, [osd] 段下的配置适用于所有 OSD ;要添加针对特定 OSD 的选项(如 host ),把它放到那个 OSD 段下即可,如:
[osd] osd journal size = 1024 [osd.0] host = osd-host-a [osd.1] host = osd-host-b
常规配置
下列选项可配置一 OSD 的唯一标识符、以及数据和日志的路径。 Ceph 部署脚本通常会自动生成 UUID 。我们不建议更改数据和日志的默认路径,因为这样会增加后续的排障难度。
日志尺寸应该大于期望的驱动器速度和 filestore max sync interval 之乘积的两倍;最常见的方法是为日志驱动器(通常是 SSD )分区并挂载好,这样 Ceph 就可以用整个分区做日志。
sd uuid 描述: OSD 的全局唯一标识符( UUID )。 类型: UUID 默认值: The UUID. 备注: osd uuid 适用于单个 OSD , fsid 适用于整个集群。 osd data 描述: OSD 数据存储位置,你得创建并把数据盘挂载到其下。我们不推荐更改默认值。 类型: String 默认值: /var/lib/ceph/osd/$cluster-$id osd max write size 描述: 一次写入的最大尺寸,MB。 类型: 32-bit Integer 默认值: 90 osd client message size cap 描述: 内存里允许的最大客户端数据消息。 类型: 64-bit Integer Unsigned 默认值: 默认为 500MB 。 500*1024L*1024L osd class dir 描述: RADOS 类插件的路径。 类型: String 默认值: $libdir/rados-classes
文件系统选项
Ceph 可自动创建并挂载所需的文件系统。
osd mkfs options {fs-type} 描述: 为 OSD 新建 {fs-type} 类型的文件系统时使用的选项。 类型: String xfs 默认值: -f -i 2048 其余文件系统默认值: {empty string} 实例: osd mkfs options xfs = -f -d agcount=24 osd mount options {fs-type} 描述: 挂载 {fs-type} 类型的文件系统作为 OSD 数据目录时所用的选项。 类型: String xfs 默认值: rw,noatime,inode64 其余文件系统默认值: rw, noatime 实例: osd mount options xfs = rw, noatime, inode64, logbufs=8
日志选项
默认情况下, Ceph 觉得你会把 OSD 日志存储于下列路径:
/var/lib/ceph/osd/$cluster-$id/journal
未做性能优化时, Ceph 会把日志存储在与 OSD 数据相同的硬盘上。追求高性能的 OSD 可用单独的硬盘存储日志数据,如固态硬盘能提供高性能日志。
osd journal size 默认值是 0 ,所以你得在 ceph.conf 里设置。日志尺寸应该是 filestore max sync interval 与期望吞吐量的乘积再乘以 2。
osd journal size = {2 * (expected throughput * filestore max sync interval)}
期望吞吐量应考虑期望的硬盘吞吐量(即持续数据传输速率)、和网络吞吐量,例如一个 7200 转硬盘的速度大致是 100MB/s 。硬盘和网络吞吐量中较小的( min() )一个是相对合理的吞吐量,有的用户则以 10GB 日志尺寸起步,例如:
osd journal size = 10000
osd journal 描述: OSD 日志路径,可以是一个文件或块设备( SSD 的一个分区)的路径。如果是文件,要先创建相应目录。我们建议用 osd data 以外的独立驱动器。 类型: String 默认值: /var/lib/ceph/osd/$cluster-$id/journal osd journal size 描述: 日志尺寸( MB )。如果是 0 且日志文件是块设备,它会使用整个块设备。从 v0.54 起,如果日志文件是块设备,这个选项会被忽略,且使用整个块设备。 类型: 32-bit Integer 默认值: 5120 推荐值: 最少 1G ,应该是期望的驱动器速度和 filestore max sync interval 的乘积。
监视器和 OSD 的交互
OSD 周期性地相互检查心跳并报告给监视器。 Ceph 默认配置可满足多数情况,但是如果你的网络延时大,就得用较长间隔。
洗刷
除了为对象复制多个副本外, Ceph 还要洗刷归置组以确保数据完整性。这种洗刷类似对象存储层的 fsck ,对每个归置组, Ceph 生成一个所有对象的目录,并比对每个主对象及其副本以确保没有对象丢失或错配。轻微洗刷(每天)检查对象尺寸和属性,深层洗刷(每周)会读出数据并用校验和方法确认数据完整性。
洗刷对维护数据完整性很重要,但会影响性能;你可以用下列选项来增加或减少洗刷操作。
osd max scrubs 描述: 一 OSD 的最大并发洗刷操作数。 类型: 32-bit Int 默认值: 1 osd scrub begin hour 描述: 被调度的洗刷操作在一天中可以运行的时间下限。 类型: 0 到 24 之间的整数 默认值: 0 osd scrub end hour 描述: 被调度的洗刷操作在一天中可以运行的时间上限。本选项与 osd scrub begin hour 一起定义了一个时间窗口,在此期间可以进行洗刷操作。但是,在某个归置组的洗刷间隔超过 osd scrub max interval 时,不管这个时间窗口是否合适都会执行。 类型: 0 到 24 之间的整数 默认值: 24 osd scrub thread timeout 描述: 洗刷线程最大死亡时值。 类型: 32-bit Integer 默认值: 60 osd scrub finalize thread timeout 描述: 洗刷终结线程最大超时值。 类型: 32-bit Integer 默认值: 60*10 osd scrub load threshold 描述: 最大负载,当前系统负载( getloadavg() 所定义的)高于此值时 Ceph 不会洗刷。默认 0.5 。 类型: Float 默认值: 0.5 osd scrub min interval 描述: 集群负载低的时候,洗刷的最大间隔时间,秒。 类型: Float 默认值: 每天一次。 60*60*24 osd scrub max interval 描述: 不论集群负载如何,都要进行洗刷的时间间隔。 类型: Float 默认值: 每周一次。 7*60*60*24 osd deep scrub interval 描述: 深层洗刷的间隔(完整地读所有数据)。 osd scrub load threshold 不会影响此选项。 类型: Float 默认值: 每周一次。 60*60*24*7 osd scrub interval randomize ratio 描述: 在给某一归置组调度下一个洗刷作业时,给 osd scrub min interval 增加个随机延时,这个延时是个小于 osd scrub min interval * osd scrub interval randomized ratio 的随机值。所以在实践中,这个默认设置会把洗刷操作随机地散布到允许的时间窗口内,即 [1, 1.5] * osd scrub min interval 。 类型: Float 默认值: 0.5 osd deep scrub stride 描述: 深层洗刷时的读取尺寸。 类型: 32-bit Integer 默认值: 512 KB. 524288
操作数
操作数选项允许你设置用于服务的线程数,如果把 osd op threads 设置为 0 就禁用了多线程。默认情况下, Ceph 用 30 秒超时和 30 秒抗议时间来把握 2 个线程的运行情况。你可以调整客户端操作和恢复操作的优先程度来优化恢复期间的性能。
osd op threads 描述: OSD 操作线程数, 0 为禁用。增大数量可以增加请求处理速度。 类型: 32-bit Integer 默认值: 2 osd client op priority 描述: 设置客户端操作优先级,它相对于 osd recovery op priority 。 类型: 32-bit Integer 默认值: 63 有效范围: 1-63 osd recovery op priority 描述: 设置恢复优先级,其值相对于 osd client op priority 。 类型: 32-bit Integer 默认值: 10 有效范围: 1-63 osd op thread timeout 描述: OSD 线程超时秒数。 类型: 32-bit Integer 默认值: 30 osd op complaint time 描述: 一个操作进行多久后开始抱怨。 类型: Float 默认值: 30 osd disk threads 描述: 硬盘线程数,用于在后台执行磁盘密集型操作,像数据洗刷和快照修复。 类型: 32-bit Integer 默认值: 1 osd disk thread ioprio class 描述: 警告:只有 osd disk thread ioprio class 和 osd disk thread ioprio priority 同时改为非默认值时此配置才生效。 OSD 用 ioprio_set(2) 为磁盘线程设置 I/O 调度分类( class ),当前支持 idle 、 be 或 rt 。 idle 类意味着磁盘线程的优先级在 OSD 中是最低的,适合需延缓洗刷操作的情形,如 OSD 正忙于处理客户端操作。 be 是默认值,将设置与其它 OSD 线程相同的优先级。 rt 意为磁盘线程的优先级将高于其它任何 OSD 线程;适用于急需洗刷、并且即使牺牲客户端操作也要进行时。注:只能与 Linux 内核的 CFQ 调度器配合使用。 类型: String 默认值: 空字符串 osd disk thread ioprio priority 描述: 警告:只有 osd disk thread ioprio class 和 osd disk thread ioprio priority 同时改为非默认值时此配置才生效。它通过 ioprio_set(2) 设置磁盘线程的 I/O 调度优先级( priority ),优先级从最高的 0 到最低的 7 。如果某主机上的所有 OSD 都在 idle 类中竞争 I/O 资源(即控制器拥塞了),那么你就可以用此选项把某 OSD 的磁盘线程优先级调低为 7 ,其它优先级为 0 的 OSD 就有可能洗刷得快一点。注:只能与 Linux 内核的 CFQ 调度器配合使用。 类型: 0 到 7 间的整数, -1 禁用此功能。 默认值: -1 osd op history size 描述: 要跟踪的最大已完成操作数量。 类型: 32-bit Unsigned Integer 默认值: 20 osd op history duration 描述: 要跟踪的最老已完成操作。 类型: 32-bit Unsigned Integer 默认值: 600 osd op log threshold 描述: 一次显示多少操作日志。 类型: 32-bit Integer 默认值: 5
回填
当集群新增或移除 OSD 时,按照 CRUSH 算法应该重新均衡集群,它会把一些归置组移出或移入多个 OSD 以回到均衡状态。归置组和对象的迁移会导致集群运营性能显著降低,为维持运营性能, Ceph 用 backfilling 来执行此迁移,它可以使得 Ceph 的回填操作优先级低于用户读写请求。
osd max backfills 描述: 单个 OSD 允许的最大回填操作数。 类型: 64-bit Unsigned Integer 默认值: 10 osd backfill scan min 描述: 集群负载低时,回填操作时扫描间隔。 类型: 32-bit Integer 默认值: 64 osd backfill scan max 描述: 回填操作时最大扫描间隔。 类型: 32-bit Integer 默认值: 512 osd backfill full ratio 描述: OSD 的占满率达到多少时拒绝接受回填请求。 类型: Float 默认值: 0.85 osd backfill retry interval 描述: 重试回填请求前等待秒数。 类型: Double 默认值: 10.0
OSD 运行图
OSD 运行图反映集群中运行的 OSD 守护进程,斗转星移,图元增加。 Ceph 用一些选项来确保 OSD 运行图增大时仍运行良好。
osd map dedup 描述: 允许删除 OSD 图里的重复项。 类型: Boolean 默认值: true osd map cache size 描述: 缓存的 OSD 图个数。 类型: 32-bit Integer 默认值: 500 osd map cache bl size 描述: OSD 进程中,驻留内存的 OSD 图缓存尺寸。 类型: 32-bit Integer 默认值: 50 osd map cache bl inc size 描述: OSD 进程中,驻留内存的 OSD 图缓存增量尺寸。 类型: 32-bit Integer 默认值: 100 osd map message max 描述: 每个 MOSDMap 图消息允许的最大条目数量。 类型: 32-bit Integer 默认值: 100
恢复
当集群启动、或某 OSD 守护进程崩溃后重启时,此 OSD 开始与其它 OSD 们建立连接,这样才能正常工作。详情见监控 OSD 和归置组。
如果某 OSD 崩溃并重生,通常会落后于其他 OSD ,也就是没有同归置组内最新版本的对象。这时, OSD 守护进程进入恢复模式并检索最新数据副本,并更新运行图。根据 OSD 挂的时间长短, OSD 的对象和归置组可能落后得厉害,另外,如果挂的是一个失效域(如一个机柜),多个 OSD 会同时重生,这样恢复时间更长、更耗资源。
为保持运营性能, Ceph 进行恢复时会限制恢复请求数、线程数、对象块尺寸,这样在降级状态下也能保持良好的性能。
osd recovery delay start 描述: 对等关系建立完毕后, Ceph 开始对象恢复前等待的时间(秒)。 类型: Float 默认值: 0 osd recovery max active 描述: 每个 OSD 一次处理的活跃恢复请求数量,增大此值能加速恢复,但它们会增加集群负载。 类型: 32-bit Integer 默认值: 15 osd recovery max chunk 描述: 一次推送的数据块的最大尺寸。 类型: 64-bit Integer Unsigned 默认值: 8 << 20 osd recovery threads 描述: 数据恢复时的线程数。 类型: 32-bit Integer 默认值: 1 osd recovery thread timeout 描述: 恢复线程最大死亡时值。 类型: 32-bit Integer 默认值: 30 osd recover clone overlap 描述: 在数据恢复期间保留重叠副本。应该总是 true 。 类型: Boolean 默认值: true
杂项
osd snap trim thread timeout 描述: 快照修复线程最大死亡时值。 类型: 32-bit Integer 默认值: 60*60*1 osd backlog thread timeout 描述: 积压线程最大死亡时值。 类型: 32-bit Integer 默认值: 60*60*1 osd default notify timeout 描述: OSD 默认通告超时,秒。 类型: 32-bit Integer Unsigned 默认值: 30 osd check for log corruption 描述: 根据日志文件查找数据损坏,会耗费大量计算时间。 类型: Boolean 默认值: false osd remove thread timeout 描述: OSD 删除线程的最大死亡时值。 类型: 32-bit Integer 默认值: 60*60 osd command thread timeout 描述: 命令线程最大超时值。 类型: 32-bit Integer 默认值: 10*60 osd command max records 描述: 限制返回的丢失对象数量。 类型: 32-bit Integer 默认值: 256 osd auto upgrade tmap 描述: 在旧对象上给 omap 使用 tmap 。 类型: Boolean 默认值: true osd tmapput sets users tmap 描述: 只在调试时使用 tmap 。 类型: Boolean 默认值: false osd preserve trimmed log 描述: 保留本该修剪掉的日志文件,但是会占用更多磁盘空间。 类型: Boolean 默认值: false
三、存储池、归置组和 CRUSH 选项
当你创建存储池并给它设置归置组数量时,如果你没指定 Ceph 就用默认值。我们建议更改某些默认值,特别是存储池的副本数和默认归置组数量,可以在运行 pool 命令的时候设置这些值。你也可以把配置写入 Ceph 配置文件的 [global] 段来覆盖默认值。
mon max pool pg num 描述: 每个存储的最大归置组数量。 类型: Integer 默认值: 65536 mon pg create interval 描述: 在同一个 OSD 里创建 PG 的间隔秒数。 类型: Float 默认值: 30.0 mon pg stuck threshold 描述: 多长时间无响应的 PG 才认为它卡住了。 类型: 32-bit Integer 默认值: 300 osd pg bits 描述: 每个 OSD 的归置组位数。 类型: 32-bit Integer 默认值: 6 osd pgp bits 描述: 每个 OSD 为 PGP 留的位数。 类型: 32-bit Integer 默认值: 6 osd crush chooseleaf type 描述: 在一个 CRUSH 规则内用于 chooseleaf 的桶类型。用序列号而不是名字。 类型: 32-bit Integer 默认值: 1 ,通常一台主机包含一或多个 OSD 。 osd pool default crush replicated ruleset 描述: 创建多副本存储池时用哪个默认 CRUSH 规则集。 类型: 8-bit Integer 默认值: CEPH_DEFAULT_CRUSH_REPLICATED_RULESET ,也就是说,“挑选数字 ID 最小的规则集”。这样,没有规则集 0 时也能成功创建存储池。 osd pool erasure code stripe width 描述: 设置每个已编码池内的对象条带尺寸(单位为字节)。尺寸为 S 的各对象将存储为 N 个条带,且各条带将分别编码/解码。 类型: Unsigned 32-bit Integer 默认值: 4096 osd pool default size 描述: 设置一存储池的对象副本数,默认值等同于 ceph osd pool set {pool-name} size {size} 。 类型: 32-bit Integer 默认值: 3 osd pool default min size 描述: 设置存储池中已写副本的最小数量,以向客户端确认写操作。如果未达到最小值, Ceph 就不会向客户端回复已写确认。此选项可确保降级( degraded )模式下的最小副本数。 类型: 32-bit Integer 默认值: 0 ,意思是没有最小值。如果为 0 ,最小值是 size - (size / 2) 。 osd pool default pg num 描述: 一个存储池的默认归置组数量,默认值即是 mkpool 的 pg_num 参数。 类型: 32-bit Integer 默认值: 8 osd pool default pgp num 描述: 一个存储池里,为归置使用的归置组数量,默认值等同于 mkpool 的 pgp_num 参数。当前 PG 和 PGP 应该相同。 类型: 32-bit Integer 默认值: 8 osd pool default flags 描述: 新存储池的默认标志。 类型: 32-bit Integer 默认值: 0 osd max pgls 描述: 将列出的最大归置组数量,一客户端请求量大时会影响 OSD 。 类型: Unsigned 64-bit Integer 默认值: 1024 Note: 默认值应该没问题。 osd min pg log entries 描述: 清理日志文件的时候保留的归置组日志量。 类型: 32-bit Int Unsigned 默认值: 1000 osd default data pool replay window 描述: 一 OSD 等待客户端重播请求的时间,秒。 类型: 32-bit Integer 默认值: 45
四、常规选项
fsid 描述: 文件系统 ID ,每集群一个。 类型: UUID 是否必需: No. 默认值: 无。通常由部署工具生成。 admin socket 描述: 在某个守护进程上执行管理命令的套接字,不管 Ceph 监视器团体是否已建立。 类型: String 是否必需: No 默认值: /var/run/ceph/$cluster-$name.asok pid file 描述: mon 、 osd 、 mds 将把它们的 PID 写入此文件,其名为 /var/run/$cluster/$type.$id.pid 。如名为 Ceph 的集群,其 ID 为 a 的 mon 进程将创建 /var/run/ceph/mon.a.pid 。如果是正常停止的, pid file 就会被守护进程删除;如果进程未进入后台运行(即启动时加了 -f 或 -d 选项),它就不会创建 pid file 。 类型: String 是否必需: No 默认值: No chdir 描述: Ceph 进程一旦启动、运行就进入这个目录,默认推荐 / 。 类型: String 是否必需: No 默认值: / max open files 描述: 如果设置了, Ceph 存储集群启动时会设置操作系统级的 max open fds (即文件描述符最大允许值),这有助于防止耗尽文件描述符。 类型: 64-bit Integer 是否必需: No 默认值: 0 fatal signal handlers 描述: 如果设置了,将安装 SEGV 、 ABRT 、 BUS 、 ILL 、 FPE 、 XCPU 、 XFSZ 、 SYS 信号处理器,用于产生有用的日志信息。 类型: Boolean 默认值: true
以上是关于Ceph 存储集群2-配置:心跳选项OSD选项存储池归置组和 CRUSH 选项的主要内容,如果未能解决你的问题,请参考以下文章