Linux Ceph 存储集群性能调优

阿婷君_7509

阿婷君_7509

2026-02-25

982人浏览

原创

Ceph性能调优需从OSD线程、BlueStore配置、PG分布、守护进程日志及CPU/IO调度五方面入手:调整rocksdb与OSD线程数、分离DB/WAL设备并启用LZ4压缩、合理设置PG数量与CRUSH权重、降低日志级别并停用非必要服务、绑定CPU核心且SSD/NVMe使用none调度器。

linux ceph 存储集群性能调优

如果您在使用 Linux Ceph 存储集群时观察到读写延迟升高、吞吐量未达预期或 OSD CPU/IO 利用率不均衡,则可能是由于默认配置未适配实际硬件与工作负载。以下是针对该问题的多种性能调优路径:

一、调整 OSD 线程与并发参数

Ceph OSD 进程依赖多个线程池处理不同任务,包括刷写(flush)、提交(commit)、回收(recovery)和清理(scrub)。默认线程数常无法充分利用多核 CPU 或高 IOPS 存储设备,需根据物理核心数与磁盘类型重新分配。

1、编辑 /etc/ceph/ceph.conf,在 [osd] 段下添加或修改以下参数:

2、设置 rocksdb 写入队列深度:rocksdb_max_background_compactions = 8

3、增大 OSD 处理客户端请求的线程数:osd_op_threads = 16

4、提升恢复与回填并发度:osd_recovery_threads = 8 和 osd_backfill_threads = 8

5、重启对应 OSD 服务:systemctl restart ceph-osd@

二、优化 BlueStore 后端配置

BlueStore 是 Ceph 默认对象存储引擎,其性能高度依赖元数据设备(DB/WAL)与数据设备的协同效率。若 DB/WAL 与 data 共享同一物理设备,将引发严重 IO 争抢;若未启用压缩或缓存策略,亦会加剧带宽与内存压力。

1、确认 DB/WAL 设备独立于 data 设备:ceph-volume lvm list 输出中应显示 separate db devices

2、为 BlueStore 启用 LZ4 压缩(低 CPU 开销):bluestore_compression_algorithm = lz4

3、设置压缩阈值以避免小对象压缩开销:bluestore_compression_min_blob_size = 4096

4、增大 BlueStore 缓存总量(按可用内存比例设定):bluestore_cache_size = 10737418240(即 10GB)

5、应用配置后执行:ceph-osd --mkfs --id --cluster ceph --conf /etc/ceph/ceph.conf(仅限新部署或可接受重格式化场景)

三、调优 CRUSH Map 与 PG 分布

PG(Placement Group)数量过少会导致单个 OSD 承载过多 PG,引发锁竞争与元数据瓶颈;分布不均则造成部分 OSD 负载远高于其他节点。CRUSH rule 权重未校准也会放大此效应。

1、计算推荐 PG 数量:pg calc (使用 ceph-tools 中的 pgcalc 工具)

2、批量调整所有 pool 的 PG 数:ceph osd pool set pg_num

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载

3、等待 pg_num 调整完成后再设置 pgp_num:ceph osd pool set pgp_num

4、检查各 OSD 的 PG 分布偏差:ceph osd df tree | head -20,识别权重异常节点

5、对权重偏低的 OSD 执行权重修正:ceph osd crush reweight osd.(例如从 1.0 调至 1.2)

四、禁用非必要守护进程与日志行为

Ceph Monitor 和 MDS 在高负载集群中可能因频繁状态同步或日志刷写引入额外延迟;OSD 默认日志级别过高亦会显著增加磁盘写入量,尤其在 NVMe 设备上易触发写放大。

1、降低 OSD 日志级别(生产环境推荐):osd_debug = 0 与 debug_osd = 0/5(仅记录错误)

2、限制 Monitor 日志刷写频率:mon_commit_timeout = 10.0(默认 0.5s,适度放宽)

3、若未启用 CephFS,停用全部 MDS 实例:systemctl stop ceph-mds.target 并屏蔽启动:systemctl disable ceph-mds.target

4、关闭 Monitor 自动清除旧日志:mon_max_log_epochs = 0

5、重启 Monitor 服务:systemctl restart ceph-mon@

五、绑定 CPU 与调整内核 IO 调度器

OSD 进程在 NUMA 架构服务器上若跨节点访问内存或未绑定专用 CPU 核心,将导致 cache miss 增加与延迟抖动;同时,传统 CFQ 或 BFQ 调度器对 SSD/NVMe 设备支持不佳,应切换为 none 或 kyber。

1、确定 OSD 进程 PID:pgrep -f "ceph-osd.*"

2、将该进程绑定至特定 CPU 核心集(如 0-7):taskset -cp 0-7

3、持久化绑定:修改 systemd service 文件,在 [Service] 下添加:ExecStartPre=/usr/bin/taskset -cp 0-7 /var/run/ceph/ceph-osd..pid

4、确认数据设备类型:lsblk -d -o NAME,ROTA(ROTA=0 表示 SSD/NVMe)

5、对 ROTA=0 的设备设置调度器为 none:echo none > /sys/block//queue/scheduler

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

2023.08.10

4458

6

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

2025.09.05

650

5

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.16

343

7

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

2025.11.17

533

20

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.27

303

6

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4290

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3613

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2873

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7050

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习