首页 > ceph-osd无法获取osd map导致osd down掉的解决办法

ceph-osd无法获取osd map导致osd down掉的解决办法

环境:ceph-12.2.1 3节点测试性能集群 60块osd

最近ceph集群中有两个osd在重启之后遇到如下问题,osd获取不到集群osdmap产生coredump:

 ceph version 12.2.1.06 (3e7492b9ada8bdc9a5cd0feafd42fbca27f9c38e) luminous (stable)1: (()+0xa2bf21) [0x7fcd91627f21]2: (()+0xf6d0) [0x7fcd8e42d6d0]3: (gsignal()+0x37) [0x7fcd8d44e277]4: (abort()+0x148) [0x7fcd8d44f968]5: (__gnu_cxx::__verbose_terminate_handler()+0x165) [0x7fcd8dd5d9d5]6: (()+0x5e946) [0x7fcd8dd5b946]7: (()+0x5e973) [0x7fcd8dd5b973]8: (()+0x5eb9f) [0x7fcd8dd5bb9f]9: (entity_addr_t::decode(ceph::buffer::list::iterator&)+0x31d) [0x7fcd9111f1bd]10: (void decode > >(std::vector, mempool::pool_allocator<(mempool::pool_index_t)15, std::shared_ptr > >&, ceph::buffer::list::iterator&)+0xfc) [0x7fcd91743ddc]11: (OSDMap::decode_classic(ceph::buffer::list::iterator&)+0x66a) [0x7fcd9172daca]12: (OSDMap::decode(ceph::buffer::list::iterator&)+0x8c) [0x7fcd9173ae5c]13: (OSDMap::decode(ceph::buffer::list&)+0x2e) [0x7fcd9173c41e]14: (OSDService::try_get_map(unsigned int)+0x664) [0x7fcd910ea6a4]15: (OSD::load_pgs()+0x1209) [0x7fcd910ee909]16: (OSD::init()+0x2186) [0x7fcd91106606]17: (main()+0x2e05) [0x7fcd9100bd75]18: (__libc_start_main()+0xf5) [0x7fcd8d43a445]19: (()+0x4ae306) [0x7fcd910aa306]NOTE: a copy of the executable, or `objdump -rdS ` is needed to interpret this.

解决办法:将正常osd上的osdmap取出写回故障osd中

  • 设置故障osd的debug等级为20,查看出现coredump问题时osdmap的版本号,例如214

    ceph daemon osd.58 config set debug_osd 20
  • 使用ceph-objectstore-tool工具从正常osd上获取对应版本号的osdmap

    systemctl stop ceph-osd@id(正常) 该工具需要先停止osd

    ceph-objectstore-tool --op get-osdmap --epoch 314 --data-path /var/lib/ceph/osd/ceph-id --type bluestore --file osdmap314
  • 将获取到的osdmap写回故障osd里

    ceph-objectstore-tool --op set-osdmap --epoch 314 --data-path /var/lib/ceph/osd/ceph-58 --type bluestore --file osdmap314
  • 启动故障osd即可

    systemctl start ceph-osd@58

更多相关:

  • 文章目录1. 解决问题2. 应用场景3. 实现方式C++实现C语言实现4. 缺点5. 和其他三种创建模式的对比(单例,工厂,建造者) 1. 解决问题 如果对象的创建成本较大,而同一个类的不同对象之间的差别不大(大部分字段相同),在这种情况下,我们可以利用已有对象(原型)进行赋值(拷贝)的方式,创建新的对象,从而达到节省对象创...

  • 混合osd的部署 先部署所有的ssd 在/etc/ceph.conf中最后添加ssd做osd的block大小如下: 比如部署中有两个ssd,则添加 [osd.0] bluestore_block_size = xxxx [osd.1] bluestore_block_size = xxx 如上的size大小计算如下,如ssd容量...

  • 文章目录Pool创建ec pool创建副本pool创建Pool参数创建根故障域及添加osd其他命令Tier相关 Pool创建 ec pool创建 创建profile ceph osd erasure-code-profile set $profile_name k=$k m=$m crush-failure-domain...

  • 文章目录简介使用OSD相关操作PG相关操作对象相关操作总结 简介 ceph-objectstore-tool工具,能够操作到ceph最底层的数据,包括pg,对象层级。它能够对底层pg以及对象相关数据进行获取、修改。并能够对一些问题pg和对象进行简单修复。所以使用该工具进行操作的时候需要谨慎(涉及到修改的操作最好备份一份数据)...

  • 文章目录ceph版本:环境配置:异常问题:问题解决:总结 ceph版本: ceph 12.2.1 环境配置: tier_pool 16个分区大小800G 的osd容量 3副本 data_pool 32个4T盘 3副本 异常问题: ps:在分布式存储中遇到任何问题都不要先去通过重设存储节点,清除磁盘数据来解决,一定要...

  • 本文主要是在梳理cephfs内核方式挂载的内核代码逻辑所做的准备 环境:Centos 7.5 内核源码版本:3.10.0-862.el7.x86_64 打开ceph模块的debug信息 单独编译ceph模块的.ko文件 ceph在内核的通用模块主要有三个: ceph.ko 模块路径:/usr/src/kernels/3.10....

  • 文章目录安装使用使用`ceph tell`产生堆栈信息文使用`pprof`工具分析内存及`ceph tell`释放内存火焰图`FlameGraph`可视化进程堆栈信息 pprof是一个google开发的支持可视化、且可分析profile文件而达到对内存的分析。并且能够输出文本和图像来支持分析过程,pprof源码 安装...

  • 目前有两种动态修改的方式来让ceph中各个组件的配置生效,所以介绍如下两种方式方便我们进行功能或者代码的调试 使用ceph daemon方式修改 ceph daemon osd.0 help用于osd的daemon服务ceph daemon mon.ceph-node1 help用于mon的admin socket命令、ceph...

  • 我们内核挂载的前提是:看到centos7.5 中默认内核3.10.0-862.11.6.el7.x86_64的挂载fs执行文件读写性能更优良,所以尝试将3.10.0-862.11.6.el7.x86_64模块中与ceph fs挂载相关的ceph.ko,libceph.ko,dns_resolver.ko,libcrc32c.ko拷贝...