Ceph用户邮件列表Vol45-Issue4



ceph Vol 45 Issue 4

1.upgrade from v0.94.6 or lower and ‘failed to encode map X with expected crc’

f user upgrades the cluster from a prior release to v0.94.7 or up by
following the steps:

  1. upgrade the monitors first,
  2. and then the OSDs.

It is expected that the cluster log will be flooded with messages like:

2016-07-12 08:42:42.1234567 osd.1234 [WRN] failed to encode map e4321
with expected crc

这个是开发者kefu chai发出来的邮件,是提醒用户注意一个升级的问题的,先介绍下这个问题

因为在ceph的hammer的0.94.7版本开始采用了一种新的osdmap的编码方式,在更新了以后,mon会用新的编码方式发送新的增量osdmap到其他osd,但是老的osd上还是老的编码方式,就会产生CRC错误,提示不匹配,然后OSD就会向MON请求全量的osdmap
对于一个很大的ceph集群就会有下面的问题

1、mon会因为这个clog产生大量消息flood
2、mon因为需要发送全量的osdmap增加负载
3、网络会被大量的osdmap的全量的消息占用
4、因为osdmap更新和网络的大量请求,客户端出现slow request

对于已经升级的了集群解决办法是:
先降低到之前的版本

  • 升级OSD的机器到新的版本
  • 升级MON的机器到新的版本

如果准备计划升级的集群

  • 先升级OSD的机器到新的版本
  • 再升级MON的机器到新的版本

目前社区准备解决这个问题(Issue

目前可以用上面的方法避免

问题重现方法

配置一个0.94.6或者以下的集群

yum install ceph-0.94.6-0.el7

配置好了后升级

yum install ceph-0.94.7-0.el7

升级以后如果不重启进程实际上是没更新的,根据官方的建议先重启mon

/etc/init.d/ceph restart mon

然后重启osd,然后查看ceph -w

/etc/init.d/ceph restart osd

可以看到failed to encode map e4321 with expected crc

换一种升级方式

先降级,这里用yum的方式

yum history list

找到刚刚upgrade的编号

yum history undo 289

就可以降级到0.94.6了

新的操作

yum install ceph-0.94.7-0.el7

先重启OSD

/etc/init.d/ceph restart osd

再重启mon

/etc/init.d/ceph restart mon

再观察

ceph -w

已经没有提示了

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-11-09