概括。。。。

下面给你一个面向 RBD 块存储生产环境 、按"可用性 / 易维护性 / 监控与遥测 / 数据一致性 / 集群可靠性"归纳的 Ceph16(Pacific)→Ceph18(Reef)期间 最重要、且有明确官方依据的改进点(同时标注发生在哪个版本段:多数关键能力是在 Ceph17(Quincy)引入,你从 16 升到 18 会一并获得)。


1) 可用性(Availability)------直接影响业务不中断与恢复能力

1.1 rbd-nbd 支持"安全重挂载/重连"(降低升级与进程重启带来的中断风险)

  • 变化 :新增 rbd device attach / rbd device detach,用于在 rbd-nbd 进程重启后安全地重新关联 NBD 设备(要求 Linux 内核 5.14+)。(Ceph Documentation)

  • 为什么重要(RBD 场景) :在使用 rbd-nbd 做块设备映射时,进程重启/异常是典型可用性风险源;这项改进降低了"进程重启导致设备瞬断"的概率(前提是满足内核条件)。(Ceph Documentation)

  • 依据链接

1.2 rbd-nbd 新增 notrim 映射选项(避免 TRIM 行为差异引发的不可预期)


2) 易维护性(Maintainability)------减少历史包袱、降低运维复杂度

2.1 LevelDB 支持在 Ceph17 被移除(统一 RocksDB,降低维护与升级风险)

2.2 FileStore 在 Ceph18(Reef)"弃用且不再支持"(OSD 后端收敛为 BlueStore)

2.3 cephadm:OSD 移除支持 --zap(把"移除+清盘"固化到同一运维路径)


3) 监控与遥测(Monitoring & Telemetry)------更快发现问题、更易定位

3.1 新增 43 个默认告警 + 支持 SNMP Trap 外发(监控"开箱即用"能力提升)

3.2 慢操作日志"聚合化/简化"(减少刷屏,提升排障效率)


4) 数据一致性(Data Consistency)------防止"悄悄错"、提升运维回退能力

4.1 修复 fast-diff/whole-object 路径下的 diff 计算问题(极端情况下可导致错误的 rbd export

4.2 ceph osd rm-pg-upmap-primary-all("一键回到 CRUSH 默认"的运维回退能力)

  • 变化 :Reef 18.2.5 引入命令 ceph osd rm-pg-upmap-primary-all,可清理所有 pg-upmap-primary 映射。(Ceph Documentation)

  • 为什么重要 :当你在调优/干预主 OSD 分布后需要"撤销干预、回归 CRUSH 默认"时,这是非常明确的回退工具,降低长期残留配置造成的隐性风险。(Ceph Documentation)

  • 依据链接


5) 集群可靠性(Reliability)------减少不稳定特性与"无法启动"级故障风险

5.1 Cache Tiering 在 Reef 被弃用(官方明确不建议新部署,并建议迁移存量)

  • 变化 :官方文档明确:Cache tiering 在 Reef 被 deprecated,并说明缺少维护者,社区强烈建议不要新部署并建议迁移存量。(Ceph Documentation)

  • 为什么重要(RBD 块存储) :cache tiering 历史上运维复杂且稳定性收益不确定;弃用信号意味着应避免在生产继续押注该路径,改用更可控的硬件分层/CRUSH 规则等方案。(Ceph Documentation)

  • 依据链接

5.2 ceph-objectstore-tool trim-pg-log-dups 离线急救能力(解决"OSD 无法启动"的特定故障类)


建议你在"Ceph16→Ceph18(RBD生产)改进清单"里优先写入的 8 个点

  1. rbd-nbd 安全重挂载(attach/detach)(Ceph Documentation)
  2. rbd-nbd notrim 选项(Ceph Documentation)
  3. fast-diff 相关 diff/export 正确性修复(Ceph Documentation)
  4. LevelDB 移除、统一 RocksDB(升级前置)(Ceph)
  5. FileStore 在 Reef 不再支持(后端收敛)(Ceph Documentation)
  6. 43 个新增告警 + SNMP Trap 外发(Ceph)
  7. 慢操作日志聚合化(降低日志风暴)(Ceph Documentation)
  8. trim-pg-log-dups 离线修复(OSD 无法启动类故障)(Ceph)

如果你希望我进一步把这 8 点扩写成"可以直接进你文档的一章"(每点含:背景、变更、收益、风险边界、落地检查清单/命令示例),我可以按你之前的固定模板输出。

不是让你"在崩溃前手动输入 detach"。你这个疑问非常关键------安全重连这件事,解决的是"崩溃发生后"的失效形态

1) rbd-nbd 崩溃时,/dev/nbdX 能不能"不掉盘"?

更准确的说法是:

  • 不能保证"完全不受影响"
  • 但在 Linux 内核 ≥ 5.14 且使用了对应机制时,内核可以在一段时间内保留 /dev/nbdX,并让 I/O 进入等待窗口 ,给你机会把新的 rbd-nbd 进程拉起来并"重新 attach 回来"。这就是所谓 "safe reattach after rbd-nbd daemon is restarted"。(Ceph)

这时业务侧看到的往往是:

  • I/O 短暂卡住(stall),而不是立刻报 "设备没了/I/O error"。

是否能达到这个效果,关键取决于 NBD 的 reattach 等待机制,以及你设置的等待时间。

2) 你说的"我怎么在崩溃前输入 detach?"------不需要,也做不到

崩溃是不可预期事件,你当然不可能提前 detach。

这里的逻辑是:

  • detach 是计划内操作:比如你要维护、升级、主动停止映射时才用。
  • 崩溃属于计划外事件:你不执行 detach,内核会发现"用户态 rbd-nbd 进程没了",然后根据机制进入"等待新进程接管"的窗口。

Ceph 的 rbd-nbd manpage 直接给出了这个"等待窗口"参数:

  • --reattach-timeout seconds:指定内核等待新的 rbd-nbd 进程重新附着(attached)的超时时间,默认 30 秒 。(Ceph Documentation)

这句话本质上就在回答你的问题:不是让你提前 detach,而是让内核在旧进程消失后"等一等"新进程回来。 (Ceph Documentation)

3) 那 attach/detach 到底在里面扮演什么角色?

Quincy 引入的改进点是:新增 rbd device attach / rbd device detach,用于支持 rbd-nbd daemon 重启后的安全重连 (Linux 5.14+)。(Ceph)

你可以把它理解为两类场景:

场景 A:计划内维护(你知道要重启/升级 rbd-nbd)

  • 你可以用 "detach → 做维护 → attach" 的方式,让映射生命周期更可控、可脚本化。

场景 B:计划外崩溃(你没法提前做任何事)

  • 你做的动作是:尽快把 rbd-nbd 重新拉起,并执行 attach
  • 只要在 reattach-timeout 之内完成,内核有机会把原来的 /dev/nbdX 继续接上,让影响从"掉盘"变成"短暂 I/O 挂起"。(Ceph Documentation)

4) 这个改进对什么场景"最有影响"?

只对你真的在生产用 rbd-nbd 映射出 /dev/nbdX 来跑业务的场景有意义,例如:

  • /dev/nbd0 上有文件系统并挂载到 /data
  • 数据库/应用直接在 /data 上做读写

在这种场景里,过去 rbd-nbd 的痛点是:进程一挂,块设备立刻不可靠 。这次改进让你可以把故障形态尽量变成"短暂卡住,能重连回来"。(Ceph)

5) 需要你记住的两个现实边界

  1. 它不是"零影响" :I/O 很可能会在等待窗口内卡住;应用能否容忍取决于你的超时设置与业务特性。(Ceph Documentation)
  2. 窗口是有限的 :默认 30 秒(--reattach-timeout),超时之后仍可能演变为 I/O error / 文件系统只读等更严重后果。(Ceph Documentation)

如果你告诉我两件事,我可以把"是否值得写成你现网的 Top 改进点"下结论,并给出更贴近生产的建议(但不需要你再补概念):

  1. 你现网 RBD 客户端到底是不是 rbd-nbd (是否存在 /dev/nbdX 承载业务)
  2. 你的内核版本是否 ≥ 5.14 (这是该改进成立的硬前提)(Ceph)

Cache tiering 在 Ceph 里指的是一种"两层存储池分层"机制:把一个业务池(base tier)和一个更快的缓存池(cache tier,通常是 SSD/NVMe)叠在一起,通过策略把"热数据"临时放到缓存池,从而加速访问。官方文档把它称为 Cache Tiering,并在 Reef 标记为弃用。


1) Cache tiering 的作用到底是什么?

它主要想解决的就是:同一份数据里有冷热分布,如果能把热数据放到更快介质,就能提升读写性能。

典型做法是:

  • base pool:大容量、慢介质(HDD)
  • cache pool:小容量、快介质(SSD/NVMe)
  • 系统按策略把部分对象复制/迁移到 cache pool,让后续访问命中更快介质。

这是一种"在 Ceph 内部做缓存/分层"的尝试,属于系统层面的自动化。


2) 不做 cache tiering,性能会不会下降?

**不一定,甚至在很多生产场景里不会下降,可能更稳定。**原因分三类:

2.1 cache tiering 并不是"必然增益",而是"强依赖数据访问模式"

只有在满足以下条件时,它才可能带来明显收益:

  • 热点明显、热数据能被 cache 容量装下
  • 热点持续时间足够长(否则会频繁搬运)
  • 策略参数调得合适
    如果访问模式是随机、热点变化快、或者工作集远大于 cache 容量,就会出现频繁搬运(thrashing),导致后台迁移 I/O 抢资源,性能反而抖动甚至下降。

2.2 现代 Ceph 的主流性能来源已转向"硬件分层 + 明确策略"

对 RBD 块存储来说,你获得性能通常靠:

  • 直接用更快介质的 pool(NVMe/SSD)承载高性能业务;
  • 用 CRUSH 规则把不同 pool 映射到不同设备类/故障域
  • 对 HDD 场景,优化 BlueStore 的 DB/WAL 放置(在更快盘上)等。
    这些方式的好处是:性能边界清晰、可预测、易排障,而不是把性能交给复杂的自动搬运策略。

2.3 官方弃用信号本身意味着:继续依赖它的长期收益不确定

官方明确写了:该功能在 Reef 弃用、缺少维护者、强烈建议不要新部署并建议迁移存量。

这通常意味着:即使它在少数场景能加速,但综合工程质量与可运维性,社区认为不值得继续作为主推路径。


3) 对"用户感觉的性能"更真实的结论(RBD 块存储)

  • 如果你的 RBD 业务本来就在 SSD/NVMe pool 上:不做 cache tiering 基本不会影响性能,因为你已经在快介质上跑了。

  • 如果你的 RBD 在 HDD pool 上且希望"用一点 SSD 给热数据加速":

    cache tiering 理论上能做到,但在现实里经常带来复杂度与抖动。更主流、可控的做法是:

    • 把真正需要性能的卷/租户放到 SSD/NVMe pool;
    • 其余留在 HDD pool;
    • 用业务级策略(QoS、分级存储策略、卷迁移)实现"谁用快盘"。

这类方式对用户体验通常是"更稳定"的性能,而不是偶尔很快、偶尔很慢。


4) 你可以怎么在文档里写"不会降低性能"的解释

建议用这种口径(更容易被评审接受):

  • Cache tiering 的目标是用快速缓存池加速冷热混合工作负载;
  • 但其收益强依赖访问模式与参数,且引入额外后台迁移 I/O,可能导致性能抖动;
  • 因此社区在 Reef 将其弃用并不建议新部署,建议用更可控的硬件分层/CRUSH 规则/按业务拆分 pool 的方式获得稳定性能。

如果你告诉我你当前 RBD pool 主要落在 HDD 还是 SSD/NVMe,以及是否做了 DB/WAL 分离(BlueStore),我可以把"替代 cache tiering 的分层方案"用更贴近你现网的方式归纳成一段可直接写进升级文档的建议(仍然只引用官方口径,不给危险操作指令)。

相关推荐
JNU freshman6 小时前
使用 cephadm + Docker 镜像在三台服务器上部署 Ceph 集群(含网络规划与 OSD DB/WAL 分离)
服务器·ceph·docker
JNU freshman9 小时前
Ceph RBD:一个镜像能否被多客户端同时映射?如何避免“多端同时写入”风险
ceph
wniuniu_1 天前
ceph16-18差异
ceph
腾讯数据架构师2 天前
cube studio 存储资源对接ceph
ceph·kubernetes·cube-studio·ai平台
哼了个哈2 天前
[Ceph 14.2.22] 使用Ceph原生命令部署单机集群
ceph
lisanmengmeng13 天前
cephfs rbd应用
linux·运维·服务器·ceph
oMcLin14 天前
如何在 Manjaro Linux 上实现高效的 Ceph 存储集群,提升大规模文件存储的冗余性与性能?
linux·运维·ceph
wniuniu_16 天前
ceph的osd
java·前端·ceph
mixboot17 天前
Ceph PG 不一致问题排查与修复 scrub errors
ceph·scrub