ceph集群reweight调整各osd权重使各osd pg数均衡

ceph中各osd的pg数量是近似均匀的,可以认为各pg下的数据容量大致相等,因此从原理上来说保证各osd pg相等,则各osd上的磁盘使用量也差不多相同,但是由于算法做不到绝对均匀的原因某些osd上的pg数会相差比较大,这样某些osd上的空间使用量就会比较多。建议是ceph部署完成,各pool也创建完成后,主动手工观察,通过命令调整osd的权重来调整osd上的pg数


网上找的命令统计各osd上所有pg数: 

ceph pg dump | awk ' 

 /^pg_stat/ { col=1; while($col!="up") {col++}; col++ } 

 /^[0-9a-f]+\.[0-9a-f]+/ { match($0,/^[0-9a-f]+/); pool=substr($0, RSTART, RLENGTH); poollist[pool]=0; 

 up=$col; i=0; RSTART=0; RLENGTH=0; delete osds; while(match(up,/[0-9]+/)>0) { osds[++i]=substr(up,RSTART,RLENGTH); up = substr(up, RSTART+RLENGTH) } 

 for(i in osds) {array[osds[i],pool]++; osdlist[osds[i]];} 

END { 

 printf("\n"); 

 printf("pool :\t"); for (i in poollist) printf("%s\t",i); printf("| SUM \n&

<think>嗯,用户问的是关于Ceph OSD reweight手动进行据平衡,有没有官方推荐的操作。首先,我需要回想一下Ceph的文档和相关的最佳实践。 首先,OSD reweight是用来调整据分布的工具,当某些OSD上的据过多时,可以通过调整权重来让CRUSH算法重新分布据。不过,手动调整可能会有风险,比如据迁移过程中影响集群性能或者导致不稳定性。 接下来,用户可能想知道官方推荐的具体步骤。记得Ceph官方建议谨慎使用手动reweight,优先考虑自动平衡选项,比如使用`balancer`模式。但有时候手动调整也是必要的,比如在替换OSD或者临时解决不均衡问题时。 需要提到`ceph osd reweight`命令的正确用法,以及可能的替代命令如`ceph osd crush reweight`的区别。同时,应该强调在操作前检查集群状态,确保健康,备份CRUSH map,还有逐步调整而非一次性大幅改动的重要性。 另外,用户可能关心操作后的监控,比如使用`ceph -w`或`ceph osd df`来观察据迁移情况和集群状态的变化。还要提醒他们注意IO性能影响,最好在业务低峰期操作。 可能还需要提到`noout`标志的设置,防止OSD被标记为out,导致意外据迁移。以及使用`ceph osd test-reweight`来模拟调整后的影响,避免直接操作带来的风险。 最后,确保用户明白这些步骤是基于官方文档的建议,但具体情况可能需要根据集群的实际情况调整,建议参考最新文档或社区支持。</think>Ceph 官方在手动调整 OSD 的 `reweight` 值时,确实提供了一些推荐的操作方法和注意事项,目的是在据平衡过程中最小化对集群性能的影响,并确保操作的安全性。以下是基于官方文档和最佳实践的推荐步骤: --- ### **1. 优先使用自动平衡器(Balancer)** **官方推荐优先使用内置的 `balancer` 工具**(较新版本默认启用),它能自动优化据分布,避免手动干预的风险: ```bash # 启用并配置 balancer ceph balancer on ceph balancer mode <upmap/crush-compat> # 选择模式(通常用 crush-compat) ceph balancer optimize <plan-name> # 生成优化计划 ceph balancer execute <plan-name> # 执行计划 ``` 自动平衡器通过小步调整逐步优化,比手动 `reweight` 更安全。 --- ### **2. 手动 `reweight` 的适用场景** 仅当自动平衡器无法解决严重不均衡(如硬件故障、快速扩容后)时,才考虑手动调整 `osd reweight`。典型场景: - 某个 OSD 使用率远高于集群平均(如超过 15%)。 - 需要临时降低某 OSD 的写入压力。 --- ### **3. 手动 `reweight` 操作步骤** #### **(1) 检查当前 OSD 使用率** ```bash ceph osd df # 查看 OSD 使用率排序 ceph osd df tree ``` #### **(2) 逐步调整权重** **避免一次性大幅调整**(如从 1.0 直接降到 0.5),建议每次调整不超过 0.1-0.2,允许集群逐步迁移据: ```bash ceph osd reweight <osd.id> <new_weight> # new_weight 范围 0.0~1.0 ``` 例如: ```bash ceph osd reweight osd.12 0.8 # 将 osd.12 的权重降至 0.8 ``` #### **(3) 监控据迁移状态** ```bash ceph -w # 实时观察 PG 状态和迁移进度 ceph osd df # 检查 OSD 使用率变化 ceph health detail # 确保集群保持 HEALTH_OK/WARN ``` #### **(4) 调整间隔与稳定性** - 每次调整后等待集群稳定(迁移完成)再继续下一步操作。 - 迁移速度可通过 `osd_max_backfills` 和 `osd_recovery_max_active` 参限制,避免影响业务 IO。 --- ### **4. 替代命令:`crush reweight`** 如果需要永久调整 OSD 在 CRUSH 算法中的权重(影响新写入据分布),使用: ```bash ceph osd crush reweight <osd.id> <new_weight> ``` 此命令修改 CRUSH Map 中的权重,需谨慎操作。 --- ### **5. 关键注意事项** 1. **避免 `reweight 0.0`** 直接将权重设为 0 会导致所有 PG 立即迁移,可能引发性能抖动。建议逐步降低权重或先标记 OSD `out`: ```bash ceph osd out osd.<id> # 安全移除 OSD,触发自动迁移 ``` 2. **预防 `noout` 干扰** 若集群设置了 `noout` 标志(防止 OSD 被标记为 down),需先解除: ```bash ceph osd unset noout ``` 3. **备份 CRUSH Map** 修改前备份 CRUSH Map,防止误操作: ```bash ceph osd getcrushmap -o backup.crush ``` 4. **业务低峰期操作** 据迁移会占用网络和磁盘资源,建议在低负载时段执行。 --- ### **6. 官方参考** - [Ceph 文档 - 手动调整 OSD 权重](https://docs.ceph.com/en/latest/rados/operations/operating/#changing-an-osd-s-crush-weight) - [Ceph 平衡器文档](https://docs.ceph.com/en/latest/rados/operations/balancer/) 建议始终优先使用自动化工具,手动操作仅作为最后手段,并严格遵循小步调整、实时监控的原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值