将试验集群从16.2.5版本升级到16.2.6。升级的步骤比较粗暴:
1、直接安装了ceph相关的最新包;
2、逐步重启了ceph相关的服务。
重启MDS服务之后,文件系统服务全部处于standby的状态,没有active。文件系统直接降级不可用。如图所示:
集群显示文件系统降级
问题解决
通过查找邮件列表,发现有该问题的讨论:和升级之后mdsmap的版本兼容性有关系。当前mds版本兼容性中不支持7 "mds uses inline data"。要在mdsmap中明确不支持,这样可以和升级之后的mds匹配。否则,由于mdsmap的不一致,mds将不会标记成active的状态。
ceph fs dump
查看到mdsmap不兼容的内容,其中少了7 “mds uses inline data”。
ceph fs status
设置mdsmap的incompat,集群恢复正常。
ceph fs compat add_incompat 7 "mds uses inline data"
附:规范的升级之路
官方说明MDS服务升级应该遵循的步骤:
- 1、设置standby不进行回放;
- 2、关闭standby的MDS服务;
- 3、缩减max_mds至1,避免多MDS版本不同造成通信问题;
- 4、在只有rank0的情况下,升级和重启其他mds服务;
- 5、在全部升级之后,重新调整max_mds的值,放开standby允许回放。
不多赘述,详见
Upgrading the MDS Cluster — Ceph Documentation