问题说明
本文用于排查 ZStone 4.3.6 中,对象存储 bucket 分片数量不足,导致每个分片的 omap key 数量超过默认阈值并触发 LARGE_OMAP_OBJECTS 告警的问题。
现象
- 集群存储告警显示
N large omap objects。 ceph -s显示LARGE_OMAP_OBJECTS告警。
适用环境
- 产品线:ZCF
- 组件:ZStone
- 版本:4.3.6
可能原因
对象存储 bucket 的分片数量过少。随着 bucket 内对象数量增加,每个分片的 omap key 数量超过默认阈值 osd_deep_scrub_large_omap_object_key_threshold=200000,在 deep-scrub 检测时触发 large omap objects 告警。
排查步骤
1. 定位告警 bucket
- 命令:
ceph health detail
radosgw-admin bucket stats
- 检查项:从告警对象名称中获取 bucket ID,再确认对应的 bucket 名称。
2. 计算目标分片数
- 计算方式:按每 10 万个对象对应一个分片的原则估算,并取素数作为目标分片数。
3. 备份 bucket 索引
- 命令:
radosgw-admin bi list --bucket=<bucket_name> > <bucket_name>.list.backup
- 检查项:确认原始索引数据已经写入备份文件。
4. 执行 reshard
- 命令:
radosgw-admin bucket reshard --bucket=<bucket_name> --num-shards=<num>
- 检查项:使用根据对象数量计算得到的目标分片数执行 reshard。
5. 查看 reshard 进度
- 命令:
radosgw-admin reshard status --bucket <bucket_name>
- 检查项:确认 reshard 任务执行状态。
6. 等待告警消除
- 预期结果:reshard 完成后,等待下一次或多次 deep-scrub,告警会随检测结果更新而消除。
- 可选操作:如需立即静音告警,执行:
ceph health mute LARGE_OMAP_OBJECTS --sticky
