Ceph Pacific to Quincy版本升级

Hanze | Dec 10, 2023 min read

简介

ceph 升级有多种方法,apt 软件包更新、cephadm 升级等,本次实践是根据 pve 官网的 Ceph Pacific to Quincy 升级指南采用的是 apt 软件包更新的方式升级。如果有其他更好用的升级方法欢迎交流。

重要版本内容

  • Filestore OSDs 被弃用。在继续之前销毁你的 Filestore OSDs 并且一个个的重建他们到 Bluestore OSDs。
  • Quincy 已放弃对 LevelDB 的支持。Bluestore OSD 应始终使用 RocksDB,但在 Luminous (v 12) 之前设置的旧监视器仍然可以使用 LevelDB。通过在监控主机上运行 head /var/lib/ceph/mon/*/kv_backend 如下命令验证它。结果应该是“rocksdb”。如果不是,则销毁并重新创建该监视器。
  • device_health_metrics pool 被重命名为 . Mgr. 它现在用作所有 ceph-mgr 模块的公共存储。升级到 Quincy 后,现有集群上的 device_health_metrics 池将重命名为 . Mgr
  • 现在如果在集群升级后未将 require-osd-release 标志设置为适当的版本,则会报告运行状况警告。

更多有关信息,请参阅 Release Notes

前提

我们假设所有的 node 版本为最新的 Proxmox VE 7.2(or higher),ceph 版本为 Pacific (16.2.9-pve1 or higher),如果不是请参阅Ceph Octopus to Pacific升级。

  • 阅读 Known Issues 部分避免遇到已知问题。例如执行本指南中未描述的步骤时。

虽然理论上可以直接从 Ceph Octopus 升级到 Quincy,但我们强烈建议首先升级到 Pacific

集群必须健康且工作!

开始更新~

启用 msgrv2 协议并更新 Ceph 配置

如果您在升级到 Nautilus、Octopus 或 Pacific 时尚未执行此操作,则必须启用新的 v2 网络协议。输入以下命令:

ceph mon enable-msgr2

这将指示所有绑定到旧版 v1 协议的旧默认端口 6789 的监视器也绑定到新的 3300 v2 协议端口。要查看所有监视器是否已更新,请运行

ceph mon dump

并验证每个监视器是否都列出了 v2: 和 v1: 地址。

每个 Ceph 集群节点上的准备工作

将当前 Ceph repo 从 Pacific 更改为 Quincy。

sed -i 's/pacific/quincy/' /etc/apt/sources.list.d/ceph.list

检查:/etc/apt/sources.list.d/ceph.list 应该像下面一样

#download.proxmox.com应该已经被替换成国内的源
deb [http://download.proxmox.com/debian/ceph-quincy](http://download.proxmox.com/debian/ceph-quincy) bullseye main

设置“noout”标志

在升级期间设置 noout 标志(可选,但是推荐)

ceph osd set noout

或者通过 OSD 选项卡中的 GUI(管理全局标志)。

在每个 Ceph 集群节点上升级

用如下命令升级所有节点,或者通过 GUI 安装最新更新。它将把节点上的 Ceph 升级到 Quincy。

apt update && apt full-upgrade

更新后,您的设置仍将运行旧的 Pacific 二进制文件。

重启 Monitor Daemon

您可以使用 Web 界面或命令行来重新启动 ceph 服务。

在升级完所有节点之后,你必须在每个节点上重启 monitor 服务

systemctl restart ceph-mon.target

启动所有 monitors 后,验证 monitor 是否更新完成。在 mon map 中查找 Quincy 字符串。

ceph mon dump | grep min_mon_release

更新完成后应当报告:

min_mon_release 17 (quincy)

如果没有,这意味着一个或多多个的 monitor 尚未升级成功和重新启动,并且/或者 quorum 并没有包含所有 monitor。

重新启动所有节点上的管理器守护进程

如果管理器没有被 monitor 自动重新启动,请立即在所有节点上重新启动它们。

systemctl restart ceph-mgr.target

通过 ceph -s 验证 ceph-mgr 守护进程是否正在运行:

ceph -s

#...
# services:
# mon: 3 daemons, quorum foo,bar,baz
# mgr: foo(active), standbys: bar, baz
#...

在所有节点上重新启动 OSD 守护进程

重新启动所有 OSD。一次仅在一个节点上重新启动 OSD,以避免数据冗余丢失。要重新启动节点上的所有 OSD,请运行以下命令

systemctl restart ceph-osd.target

每次重启后等待并定期检查集群状态:

ceph status

它应该处于 HEALTH_OK 或

HEALTH_WARN
noout flag(s) set

所有 OSD 以最新版本运行后,可能会出现以下警告:

all OSDs are running quincy or later but require_osd_release < quincy

禁止 pre-QuincyOSD 并启用 Quincy-only 功能

ceph osd require-osd-release quincy

升级所有的 CephFS MDS Daemons

对于每个 CephFS 文件系统

  1. 禁用 standby_replay
  2. 将 Rank 数量减少到 1(如果您打算稍后恢复,请先记下 MDS 守护进程的原始数量):
  3. 通过定期检查 Ceph 的状态,等待集群停用任何非零等级:
  4. 使用以下命令使相应主机上的所有备用 MDS 守护程序脱机:
  5. 确认只有一个 MDS 在线并且您的 FS 的等级为 0:
  6. 通过重新启动守护程序来升级最后剩余的 MDS 守护程序:
  7. 重新启动所有脱机的备用 MDS 守护进程
  8. 恢复卷的 max_mds 的原始值
ceph fs set <fs_name> allow_standby_replay false

ceph status
ceph fs get <fs_name> | grep max_mds
ceph fs set <fs_name> max_mds 1

ceph status
#The number of active MDS should go down to the number of file systems you have
#Alternatively, check in the CephFS panel in the GUI that each Ceph filesystem has only one active MDS

systemctl stop ceph-mds.target

ceph status

systemctl restart ceph-mds.target

systemctl start ceph-mds.target

ceph fs set <fs_name> max_mds <original_max_mds>

取消设置“noout”标志

升级过程完成后,不要忘记取消设置 noout 标志

ceph osd unset noout

或者通过 OSD 选项卡中的 GUI(管理全局标志)。

注意

重新启动 MGR 时,可以忽略包含“缺少 NOTIFY_TYPES 成员”的日志行

comments powered by Disqus