H版本ceph修改superblock中oldest_map字段工具




基于H版本ceph修改:

改动原因,查询线上环境OSD使用容量信息,发现osdmap占用了大量空间:
OLDEST MAP: 16986
NEWEST MAP: 235999

可以看到osd保存了235999-16986=219013左右的osdmap,占用了大量空间,200~300G可能

社区相关的tracker:

http://tracker.ceph.com/issues/13990

临时清理方案:
清理方案
1.ceph pg query $pgid确认osd上的最老的pg epoch版本

2.停止osd

3.find和读取superblock

find $OSDPATH/current/meta -name “osd\usuperblock*”

ceph-dencoder import $superblock type OSDSuperblock decode dump_json

确认oldestmap和newestmap

4.使用修改过的ceph-dencoder工具修改oldestmap

5.更新superblock,启动osd

6.观察一会儿无问题,清理老的osdmap

完整解决方案:合入社区修复补丁