树和列表回答两件事
osd tree 回答的是设备怎么分层、权重多少、当前是否在线;osd df 回答的是每块盘实际装了多少数据、与平均值差多少。分布是否健康要两者一起看:权重是期望值,使用率是实际结果。
基本信息
| 层级视图 | osd tree 显示主机与机架归属及权重 |
|---|---|
| 状态标记 | up/down 表示进程是否存活,in/out 表示是否参与分布 |
| 容量视图 | osd df 显示每块盘的容量、已用、使用率与偏差 |
| 偏差系数 | 偏差越大说明实际分布与平均值差距越明显 |
| 期望值 | 权重与真实容量成正比时分布才能长期均衡 |
| 调整手段 | 持久调整改 CRUSH 权重,临时微调用 reweight |
典型使用场景
- 扩容后核对:新盘加入后确认迁移是否按权重分配
- 单盘告警定位:某块盘使用率明显高于同层其他盘
- 容量评估:按最紧张的盘判断该池还能写入多少
- 层级核对:确认主机与机架的归属与真实机房一致
- 介质分组:确认不同介质的盘落在各自适用的规则下
查看与调整
查看与调整
ceph osd tree # 层级、权重与状态
ceph osd df # 每块盘的使用率与偏差
ceph osd df tree # 按层级聚合查看容量
ceph osd crush reweight osd.12 1.8 # 持久调整权重
ceph osd reweight osd.12 0.8 # 临时调整,重启后失效
ceph osd df | sort -k8 -n | tail -10 # 找出使用率最高的若干块盘输出逐列读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| ID | OSD 编号 | 定位单盘的唯一标识 |
| CLASS | 设备类别 | 决定该盘参与哪些池 |
| WEIGHT | CRUSH 权重 | 与容量不符是长期不均的主因 |
| REWEIGHT | 临时权重 | 取值为 1 表示未被调整 |
| SIZE 与使用率 | 容量与已用比例 | 同层盘中明显偏高需要关注 |
| VAR | 相对均值的偏差 | 超出合理区间说明分布需要干预 |
| PRI-AFF | 主副本占比 | 长期偏离说明读写分布可能倾斜 |
权重调整是持久的,reweight 是临时的且重启后失效。若需要长期修正分布,应改 CRUSH 权重并等迁移收敛后再评估,而不是反复做临时调整。
调整权重会触发数据迁移。大面积调整相当于主动发起一次全集群重平衡,必须评估带宽占用与业务窗口,必要时配合限流。
不均的三类成因
使用率不均通常来自权重与容量不符、部分 OSD 因规则或设备类别未参与该池、PG 数量过少导致分配粒度粗。按这个顺序排查比直接调权重更有效,原因不明时调权重往往只是把不均换个方向。