f user upgrades the cluster from a prior release to v0.94.7 or up by following the steps:
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
对于已经升级的了集群解决办法是: 先降低到之前的版本
如果准备计划升级的集群
目前社区准备解决这个问题(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
已经没有提示了