ceph如何修改 CRUSH tunables?

将 osd.1 设置为 out 后,集群并没有开始做 recovery,部分 PG 保持在 remapped 状态:

[root@ceph1]# ceph -s
    cluster 5ccdcb2d-961d-4dcb-a9ed-e8034c56cf71
     health HEALTH_WARN 88 pgs stuck unclean
     monmap e2: 1 mons at {ceph1=192.168.56.102:6789/0}, election epoch 1, quorum 0 ceph1
     osdmap e71: 4 osds: 4 up, 3 in
      pgmap v442: 256 pgs, 4 pools, 285 MB data, 8 objects
            690 MB used, 14636 MB / 15326 MB avail
                  88 active+remapped
                 168 active+clean
参与4

1同行回答

月光满楼月光满楼  数据库管理员 , 南车青岛四方
原因分析-> 查看 ceph health detail[root@ceph1]# ceph health detail HEALTH_WARN 88 pgs stuck unclean pg 1.23 is stuck unclean for 337.342290, current state active+remapped, last acting [0,1] pg 0.1f is stuck unclean for 336.838743, current state ac...显示全部

原因分析

-> 查看 ceph health detail

[root@ceph1]# ceph health detail
HEALTH_WARN 88 pgs stuck unclean
pg 1.23 is stuck unclean for 337.342290, current state active+remapped, last acting [0,1]
pg 0.1f is stuck unclean for 336.838743, current state active+remapped, last acting [0,1]
pg 1.1f is stuck unclean for 337.355851, current state active+remapped, last acting [0,1]

Remapped(重映射):当 PG 的 acting set 变化后,数据将会从旧 acting set 迁移到新 action set。新主 OSD 需要过一段时间后才能提供服务。因此,它会让老的主 OSD 继续提供服务,直到 PG 迁移完成。数据迁移完成后,PG map 将使用新 acting set 中的主OSD。

以 PG 为例,比较在 osd.1 out 前后的 PG map:

state           state_stamp                     v       reported        up      up_primary      acting      acting_primary
active+clean    2016-06-03 00:31:44.220896      0'0     57:74           [0,1]    0              [0,1]       0               #osd.1 out 之前
active+remapped 2016-06-03 00:47:12.703537      0'0     71:109          [0]      0              [0,1]       0               #osd.1 out 之后

解决办法

将 OSD 的 reweight 修改为 0 而不是使用 out 命令
Ceph 官方的这篇文章给出了另一个思路。它认为在主机数目很小的集群中,当一个 OSD 被 out 后,部分 PG 限于 active+remapped 状态是经常出现的。解决办法是先运行 ceph osd in {osd-num} 将集群状态恢复到初始状态,然后运行 ceph osd crush reweight osd.{osd-num} 0 来将这个 osd 的 crush weight 修改为 0,然后集群会开始数据迁移。对小集群来说,reweight 命令甚至更好些。

当集群中 PG 限于 active + remapped 状态时,可以通过 reweight 命令来使得集群恢复正常。当往集群中新加入 OSD 时,为了减少数据移动对集群性能的影响,Ceph 官方建议逐渐地增加 OSD 的 crush weight,比如起始值为0,先设置为 0.2,等数据迁移结束,再设置为 0.4,依此类推,逐渐增加为 0.6,0.8 和 1 甚至更高。在要停用一个 OSD 时,建议采用相反操作,逐渐减少 OSD 的 crush weight 直至 0.

收起
汽车 · 2020-01-14
浏览2082

提问者

老赵
老赵1715
系统工程师某保险
擅长领域: 存储灾备网络

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-01-13
  • 关注会员:2 人
  • 问题浏览:3222
  • 最近回答:2020-01-14
  • X社区推广