概括。。。。

下面给你一个面向 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 的分层方案"用更贴近你现网的方式归纳成一段可直接写进升级文档的建议(仍然只引用官方口径,不给危险操作指令)。

相关推荐
yyyyy_abc13 小时前
ceph学习笔记
笔记·ceph·学习
自由且自律2 天前
ceph实战,基于docker部署
运维·ceph·docker·容器·云计算
老wang你好4 天前
Ceph存储全攻略:RBD、CephFS与RGW详解
ceph
珂玥c6 天前
Ceph集群新增osd
ceph
老wang你好7 天前
Ceph分布式存储系统全解析
ceph
一个行走的民20 天前
分布式系统中 Map 增量(Delta)是否需要持久化
ceph
一个行走的民22 天前
BlueStore 核心原理与关键机制
ceph
奋斗的小青年I24 天前
Proxmox VE Ceph 超融合集群落地实战
windows·ceph·vmware·pve·超融合·proxmox
一个行走的民24 天前
深度剖析 Ceph PG 分裂机制:原理、底层、实操、影响、线上避坑(最全完整版)
ceph·算法
一个行走的民24 天前
Ceph 核心概念精讲:彻底搞懂 PG、PGP、pg_num、pgp_num
ceph