Ceph 18(Reef)生产级调优手册

文章目录

  • [一、Ceph RBD 调优(详细说明)](#一、Ceph RBD 调优(详细说明))
  • [二、RBD Feature(镜像特性)](#二、RBD Feature(镜像特性))
    • [1 layering](#1 layering)
    • [2 exclusive-lock](#2 exclusive-lock)
    • [3 object-map](#3 object-map)
    • [4 fast-diff](#4 fast-diff)
    • [5 deep-flatten](#5 deep-flatten)
    • [推荐 RBD feature](#推荐 RBD feature)
  • [三、RBD Client Cache](#三、RBD Client Cache)
  • [四、RBD Object Size](#四、RBD Object Size)
    • [object size 影响](#object size 影响)
      • [小 object](#小 object)
      • [大 object](#大 object)
    • 推荐值
  • [五、Ceph Recovery / Backfill 调优(重点)](#五、Ceph Recovery / Backfill 调优(重点))
  • [六、Recovery 的问题](#六、Recovery 的问题)
  • [七、核心 Recovery 参数](#七、核心 Recovery 参数)
  • 八、动态控制重构
  • [九、BlueStore + RocksDB 原理](#九、BlueStore + RocksDB 原理)
    • [BlueStore 结构](#BlueStore 结构)
    • [为什么 block.db 要 SSD](#为什么 block.db 要 SSD)
  • 十、生产环境调优建议
      • [1 block.db 必须 SSD](#1 block.db 必须 SSD)
      • [2 recovery 必须限速](#2 recovery 必须限速)
      • [3 PG 不要太多](#3 PG 不要太多)
      • [4 RBD cache 必须开启](#4 RBD cache 必须开启)

一、Ceph RBD 调优(详细说明)

在 Ceph 集群中,RBD(RADOS Block Device) 是最常见的块存储接口,广泛用于:

  • OpenStack 虚拟机磁盘
  • Kubernetes CSI
  • 数据库块存储
  • 云盘系统

官方文档:
https://docs.ceph.com/en/reef/rbd/

RBD 的性能主要受到以下几类配置影响:

复制代码
RBD Feature
RBD Client Cache
RBD Object Size
Client 并发
OSD 调度

二、RBD Feature(镜像特性)

RBD image 创建时会启用一些 feature,这些特性会影响:

  • snapshot性能
  • clone效率
  • backup效率
  • metadata维护

官方文档:
https://docs.ceph.com/en/reef/rbd/rbd-config-ref/

查看:

复制代码
rbd feature ls

查看镜像:

复制代码
rbd info image

1 layering

复制代码
layering

作用:

允许 snapshot + clone

原理:

复制代码
image
 └── snapshot
      └── clone image

clone 只保存差异数据,因此:

  • 创建速度极快
  • 节省存储空间

典型场景:

复制代码
OpenStack 虚拟机模板

官方说明:
https://docs.ceph.com/en/reef/rbd/rbd-layering/

推荐:

复制代码
必须开启

2 exclusive-lock

复制代码
exclusive-lock

作用:

保证 一个 RBD image 只被一个 client 写入

为什么重要:

RBD 是分布式块设备,如果多个 client 同时写入:

复制代码
数据一致性风险

exclusive-lock 的机制:

复制代码
client A -> lock image
client B -> 只能 read

另外它是以下 feature 的依赖:

复制代码
object-map
fast-diff

官方文档:
https://docs.ceph.com/en/reef/rbd/rbd-config-ref/#rbd-exclusive-lock

推荐:

复制代码
开启

3 object-map

复制代码
object-map

作用:

记录 RBD object 的存在状态。

RBD image 实际结构:

复制代码
image -> many objects

如果没有 object-map:

每次 snapshot 或 diff 都要:

复制代码
扫描所有 object

性能很差。

开启 object-map 后:

复制代码
metadata记录 object状态

优势:

复制代码
snapshot更快
clone更快
diff更快

官方文档:
https://docs.ceph.com/en/reef/rbd/rbd-config-ref/#rbd-object-map

推荐:

复制代码
开启

4 fast-diff

复制代码
fast-diff

作用:

加速:

复制代码
rbd diff

常见场景:

复制代码
备份系统
增量备份
灾备复制

没有 fast-diff:

复制代码
扫描 entire image

有 fast-diff:

复制代码
直接读取 metadata

官方文档:
https://docs.ceph.com/en/reef/rbd/rbd-config-ref/#rbd-fast-diff

推荐:

复制代码
开启

5 deep-flatten

复制代码
deep-flatten

作用:

clone image flatten。

如果 clone 依赖 parent:

复制代码
parent 删除 -> clone 失效

deep-flatten 可以:

复制代码
clone 完全独立

官方文档:
https://docs.ceph.com/en/reef/rbd/rbd-config-ref/#rbd-deep-flatten

推荐:

复制代码
开启

推荐 RBD feature

生产环境推荐:

复制代码
rbd_default_features = 125

对应:

复制代码
layering
exclusive-lock
object-map
fast-diff
deep-flatten

官方文档:
https://docs.ceph.com/en/reef/rbd/rbd-config-ref/#rbd-default-features


三、RBD Client Cache

RBD client 默认支持 write-back cache

缓存位置:

复制代码
client memory

作用:

减少网络 IO。

官方文档:
https://docs.ceph.com/en/reef/rbd/rbd-config-ref/#cache-settings


rbd_cache

复制代码
rbd_cache = true

作用:

开启客户端缓存。

默认:

复制代码
true

如果关闭:

复制代码
所有IO直达Ceph

性能会下降。


rbd_cache_size

客户端缓存大小。

默认:

复制代码
32MB

在现代服务器环境中明显偏小。

推荐:

复制代码
128MB
256MB

示例:

复制代码
rbd_cache_size = 256M

rbd_cache_max_dirty

最大 dirty data。

默认:

复制代码
24MB

如果写入超过这个值:

复制代码
触发 flush

推荐:

复制代码
64MB

rbd_cache_target_dirty

目标 dirty 数据。

作用:

复制代码
提前 flush

推荐:

复制代码
32MB

rbd_cache_max_dirty_age

最大 flush 延迟。

默认:

复制代码
1秒

推荐:

复制代码
5秒

原因:

减少:

复制代码
小 IO flush

示例:

复制代码
rbd_cache_max_dirty_age = 5

四、RBD Object Size

RBD image 实际由 多个 object 组成。

结构:

复制代码
image
 ├── object1
 ├── object2
 ├── object3

默认:

复制代码
4MB

官方文档:
https://docs.ceph.com/en/reef/rbd/rbd-config-ref/#rbd-object-size


object size 影响

影响:

复制代码
IO放大
metadata数量
recovery效率

对比:

小 object

优点:

复制代码
随机IO好

缺点:

复制代码
metadata多

大 object

优点:

复制代码
顺序IO高

缺点:

复制代码
随机IO差

推荐值

场景 size
VM 4MB
数据库 8MB
大文件 16MB

创建:

复制代码
rbd create image --size 1T --object-size 8M

五、Ceph Recovery / Backfill 调优(重点)

当 OSD 发生以下事件:

复制代码
OSD down
OSD add
CRUSH change

Ceph 会触发:

复制代码
recovery
backfill
rebalance

官方文档:
https://docs.ceph.com/en/reef/rados/operations/recovery/


六、Recovery 的问题

Recovery 可能导致:

复制代码
IO延迟增加
业务卡顿

原因:

复制代码
recovery 与 client IO 竞争

Ceph 必须控制 recovery。


七、核心 Recovery 参数


osd_max_backfills

每个 OSD 同时执行的 backfill 数。

默认:

复制代码
1

官方文档:
https://docs.ceph.com/en/reef/rados/configuration/osd-config-ref/#osd-max-backfills

如果过高:

复制代码
IO 被 recovery 占用

推荐:

复制代码
1~2

osd_recovery_max_active

每个 OSD 同时执行的 recovery 操作。

默认:

复制代码
3

推荐:

复制代码
2

官方文档:
https://docs.ceph.com/en/reef/rados/configuration/osd-config-ref/#osd-recovery-max-active


osd_recovery_op_priority

恢复优先级。

默认:

复制代码
3

推荐:

复制代码
1

原因:

复制代码
client IO > recovery

官方文档:
https://docs.ceph.com/en/reef/rados/configuration/osd-config-ref/#osd-recovery-op-priority


osd_client_op_priority

客户端优先级。

默认:

复制代码
63

建议:

复制代码
不要修改

八、动态控制重构

生产环境非常常见。

暂停 recovery:

复制代码
ceph osd set norecover

恢复:

复制代码
ceph osd unset norecover

暂停 backfill:

复制代码
ceph osd set nobackfill

恢复:

复制代码
ceph osd unset nobackfill

九、BlueStore + RocksDB 原理

Ceph 18 默认使用:

  • BlueStore
  • RocksDB

官方文档:

BlueStore
https://docs.ceph.com/en/reef/rados/configuration/bluestore-config-ref/


BlueStore 结构

复制代码
block
block.db
block.wal

作用:

复制代码
block -> data
block.db -> metadata
block.wal -> journal

为什么 block.db 要 SSD

metadata 非常频繁:

复制代码
omap
object map
PG log

如果在 HDD:

复制代码
延迟很高

最佳结构:

复制代码
NVMe
 ├── block.db
 └── block.wal

HDD
 └── block

性能提升:

复制代码
3~10倍

十、生产环境调优建议

真实运维经验:

1 block.db 必须 SSD

否则:

复制代码
slow request

2 recovery 必须限速

否则:

复制代码
业务IO下降

3 PG 不要太多

PG 太多会导致:

复制代码
OSD 内存压力
recovery慢

4 RBD cache 必须开启

否则:

复制代码
性能下降

相关推荐
汤愈韬2 小时前
各类LSA的解析(一二三类LSA)
网络·网络协议·网络安全·security
observe1012 小时前
网络编程之UDP
网络
天赐学c语言2 小时前
Linux - windows作为client访问linux服务端
linux·网络·c++
希赛网2 小时前
2026年华为HCIE数通认证考试,可以在哪里看课程?
网络·华为·华为认证数通学习答疑·hcie数通疑问·hcie-datacom·2026ie数通学习·hcie考试内容
2401_865721334 小时前
WEEK 3 刷题&学习记录
网络·学习·ctf
小小小米粒6 小时前
NAT 模式, 仅主机模式 Host-Only ,桥接模式 Bridge
linux·服务器·网络
头疼的程序员10 小时前
计算机网络:自顶向下方法(第七版)第三章 学习分享(二)
网络·学习·计算机网络
Blurpath住宅代理10 小时前
代理协议深度解析:HTTP与SOCKS5如何科学选型?
网络·静态ip·动态代理·住宅代理
小二·11 小时前
Go 语言系统编程与云原生开发实战(第38篇)
网络·云原生·golang