注意
本文档适用于 Ceph 的开发版本。
升级 MDS 集群
目前,MDS 集群没有内置版本控制或文件系统标志来支持 MDS 的无缝升级,这可能会因为不兼容的消息或其他功能差异而导致断言或其他故障。因此,在任何集群升级过程中,有必要首先将文件系统的活动 MDS 数量减少到 1 个,以防止两个活动 MDS 使用不同版本进行通信。
升级 MDS 集群的正确顺序是:
对于每个文件系统,禁用并停止 standby-replay 守护程序。
ceph fs set <fs_name> allow_standby_replay false
在 Pacific 版本中,运行此命令后会为您停止 standby-replay 守护程序。较旧版本的 Ceph 需要您手动停止这些守护程序。
ceph fs dump # find standby-replay daemons
ceph mds fail mds.<X>
对于每个文件系统,将 rank 数量减少到 1
ceph fs set <fs_name> max_mds 1
等待集群停止非零 rank,此时只有 rank 0 处于活动状态,其余为 standby。
ceph status # wait for MDS to finish stopping
对于每个 MDS,升级软件包并重启。注意:为了减少故障转移,建议(但不是严格要求)首先升级 standby 守护程序。
# use package manager to update cluster
systemctl restart ceph-mds.target
对于每个文件系统,恢复集群中之前的 max_mds 和 allow_standby_replay 设置
ceph fs set <fs_name> max_mds <old_max_mds>
ceph fs set <fs_name> allow_standby_replay <old_allow_standby_replay>
将早于 Firefly 版本的文件系统升级到 Jewel 之后
提示
此建议仅适用于使用早于 Firefly (0.80) 版本的 Ceph 创建文件系统的用户。创建新文件的用户可以忽略此建议。
Firefly 之前版本的 Ceph 使用了一种现已弃用的格式来存储 CephFS 目录对象,称为 TMAP。在 Jewel 版本的 Ceph 发布后,对在 RADOS 中读取这些对象的支持将被移除,因此对于升级 CephFS 的用户来说,确保任何旧的目录对象已转换非常重要。
在所有 MDS 和 OSD 服务器上安装 Jewel 并重启服务后,运行以下命令:
cephfs-data-scan tmap_upgrade <metadata pool name>
这只需要运行一次,并且在运行时不需要停止任何其他服务。该命令可能需要一些时间来执行,因为它会迭代元数据池中的所有对象。在它执行时,可以安全地照常使用文件系统。如果该命令因任何原因中止,只需再次运行即可。
如果您正在将早于 Firefly 版本的 CephFS 文件系统升级到比 Jewel 更新版本的 Ceph,您必须首先升级到 Jewel 并运行 tmap_upgrade 命令,然后才能完成升级到最新版本。