文档目录

问题说明

本文用于排查 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
对象存储 bucket 分片过少导致 large omap objects 告警,如何处理? | 故障排查 · KB | ZStack 资源中心