当前位置: 首页 > news >正文

ceph集群调整pg数量实战(上)

#作者:闫乾苓

文章目录

  • 1.问题描述
    • 1.1集群报警信息
    • 1.2业务侧虚拟机使用ceph rbd作为虚拟磁盘,io util很高
  • 2.问题分析及排查
    • 2.1 当前环境信息
    • 2.2 集群报警信息解析
    • 2.3 使用 ceph osd df 检查 OSD 分布
    • 2.4 业务侧磁盘IO分析

1.问题描述

1.1集群报警信息

HEALTH_WARN too few PGs per OSD (25 <30 )

1.2业务侧虚拟机使用ceph rbd作为虚拟磁盘,io util很高

  • OpenStack 使用 Ceph RBD 作为虚拟机磁盘
  • 虚拟机部署的是达梦数据库(DMDBMS)
  • 在数据库重启后,从库执行前滚(Redo Apply)速度非常慢
    在虚拟机中使用 iostat 观察到:
    在这里插入图片描述

2.问题分析及排查

2.1 当前环境信息

Ceph 版本:12.2.8(Luminous)
集群节点数:10 个物理节点
每个节点磁盘数:12 块盘
总 OSD 数 = 10 * 12 = 120
pool 数量:1 个
pool 的 PG 数 = 1024

2.2 集群报警信息解析

HEALTH_WARN too few PGs per OSD (25 <30 )
警告含义解析

  • 当前每个 OSD 上平均的 PG 数量是 25。
  • Ceph 推荐每个 OSD 上至少有 30~70 个 PG(具体取决于集群规模和性能需求)。
  • 如果 PG 数量太少,会导致数据分布不均、负载不均衡,影响性能和恢复效率。

2.3 使用 ceph osd df 检查 OSD 分布

(命令出处见第4部分“参考链接” 1 )
ceph osd df 命令提供了关于每个 OSD 的存储使用情况的详细信息,包括已用空间、可用空间、PG 数量等。通过这个命令,可以检查 OSD 之间的负载是否均匀分布,以及是否有某些 OSD 存在过载的情况。
关键字段解释

  • ID: OSD 的唯一标识符。
  • CLASS: OSD 使用的存储介质类型(例如 HDD 或 SSD)。
  • WEIGHT: OSD 的权重,用于确定其在 CRUSH 算法中的相对容量。
  • REWEIGHT: OSD的重新加权值,用于临时调整OSD的权重而不改变其实际容量。
  • SIZE: OSD 的总容量。
  • USE: OSD 当前使用的容量。
  • AVAIL: OSD 当前可用的容量。
  • %USE: OSD 已用容量的百分比。
  • VAR: 相对于平均使用率的变化百分比。
  • PGS: 在该 OSD 上的 PG 数量。
    在这里插入图片描述
    检查容量使用率:
    OSD 的 %USE近平均值 7.00, 表明数据在每个OSD上没有出现明显分布不均的情况

检查 PG 数量
每个 OSD 上的 PG 数量大致相同,平均25个。无显著分布不均的情况。

PG 分程度均衡度
看到的 ceph osd df 命令输出中最后的一行:
MIN/MAX VAR: 0.51/1.37 STDDEV: 1.32
MIN/MAX VAR: 0.51/1.37
最小VAR = 0.51:表示某个OSD上的PG数量只有平均值的 51%,即明显偏少。
最大VAR = 1.37:表示某个OSD上的PG数量达到了平均值的 137%,即明显偏多。
结论:PG 分布存在一定程度的不均衡

STDDEV: 1.32

  • 如果 STDDEV < 1:表示 PG 分布较为均衡。
  • 如果 STDDEV > 1:表示存在一定程度的不均衡。
  • 如果 STDDEV > 2:说明分布严重不均,建议调整 CRUSH 规则或增加 PG 数量来改善
    STDDEV = 1.32,说明PG分布存在一定程度的不均衡的情况

2.4 业务侧磁盘IO分析

openstack 使用此ceph 的rbd块作为虚拟机的虚拟磁盘,虚拟机上部署的应用为达梦数据库,数据库在重启后,从库在执行前滚操作时,发现速度非常慢,并且在虚拟机的操作系统上使用iostat 输出如下:w/s 498.00 wkB/s 13492.00 w_await 27.69 wareq-sz 23.69 f/s 2.00 f_wait 143.00 aqu-sz 15.88 %util 100
iostat 输出说明与性能瓶颈判断:
在这里插入图片描述
存储子系统(Ceph RBD)存在的IO瓶颈,尤其是在 fsync / sync 操作时延迟极高,导致 Redo Apply 前滚效率较低。
可能原因分析:
(1)Ceph PG 数量过少(已知)

  • 当前每个 OSD 上 PG 数量为约 25个,远低于推荐值。
  • PG 少意味着数据分布不均匀、恢复或写入并发能力差。
  • 导致日志重放(Redo Apply)、checkpoint、fsync 性能下降明显。

(2)RBD 缓存配置不当

  • RBD 默认使用 Writeback 模式缓存,如果未开启 flush 或禁用了 cache,则所有 IO 都会同步写入 Ceph。
  • 如果没有启用 writeback 缓存,或者启用了但没有设置 flush 接口,会导致大量小文件写和 fsync 被穿透到底层 Ceph,造成性能下降。
http://www.xdnf.cn/news/962317.html

相关文章:

  • TikTok矩阵养号实战:住宅IP纯净度与设备指纹联动方案
  • 空间注意力机制
  • uniapp开发小程序vendor.js 过大
  • 使用java实现蒙特卡洛模拟风险预测功能
  • AI一周事件(2025年6月3日-6月9日)
  • WHAT - 组件库单入口打包和多入口打包
  • “液态玻璃”难解苹果AI焦虑:WWDC25背后的信任危机
  • 自动化三维扫描检测赋能汽车铸造件高效检测
  • 笔记 操作系统复习
  • 供应链管理-物流:自动驾驶分为几个级别/L0无自动化/L1驾驶辅助/L2部分自动化/L3有条件自动化/L4高度自动化/L5完全自动化
  • 云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
  • SDC命令详解:使用uniquify命令进行唯一化
  • 菲尔斯特传感器,超声波风速风向传感器助力绿色能源发展
  • idea中黄色感叹号打开
  • RPC调用三 使用代理进行服务自动注册
  • CppCon 2015 学习:RapidCheck Property based testing for C++
  • 计算机基础(一):ASCll、GB2312、GBK、Unicode、UTF-32、UTF-16、UTF-8深度解析
  • 记录chrome浏览器的一个bug
  • 零基础入门 线性代数
  • 上位机开发过程中的设计模式体会(2):观察者模式和Qt信号槽机制
  • 经典的多位gpio初始化操作
  • 基于FPGA的PID算法学习———实现PI比例控制算法
  • React Native 基础语法与核心组件:深入指南
  • 篇章三 论坛系统——环境搭建
  • 如何将数据从 iPhone 传输到笔记本电脑
  • ACM70V-701-2PL-TL00
  • CPP基础(2)
  • Linux 删除登录痕迹
  • rapidocr v3.1.0发布
  • 什么样的登录方式才是最安全的?