上次把集群节点的pve版本从v5升级到v6,这次把分布式存储ceph的版本从Luminous(v12)升级到Nautilus(v14)。
本来不想升级存储的,但是扩容新加入的节点安装的是v6,会强制安装Nautilus,如果你也有pve v5集群要扩容节点,如果你不想升级ceph,记得新的节点安装v5而不是v6。
参考:
https://pve.proxmox.com/wiki/Ceph_Luminous_to_Nautilus
状态ceph检测
必须包含下面标志(recovery_deletes,purged_snapdirs)才可以升级,如果没有就等一天再来。
# ceph osd dump | grep ^flags
flags sortbitwise,recovery_deletes,purged_snapdirs
调整配置文件
# cp /etc/pve/ceph.conf ceph.conf.bak
从Nautilus开始,所有守护进程的keyring使用'keyring'项,最简单的办法是移动全局'keyring'项到'client'段(如果没有client段就创建),删除其他段的'keyring'
如
[global]
...
keyring = /etc/pve/priv/$cluster.$name.keyring
[osd]
keyring = /var/lib/ceph/osd/ceph-$id/keyring
修改为:
[global]
...
[client]
keyring = /etc/pve/priv/$cluster.$name.keyring
更新源
用nautilus替换luminous
# cat /etc/apt/sources.list.d/ceph.list
deb http://download.proxmox.com/debian/ceph-luminous buster main
# sed -i 's/luminous/nautilus/' /etc/apt/sources.list.d/ceph.list
# cat /etc/apt/sources.list.d/ceph.list
deb http://download.proxmox.com/debian/ceph-nautilus buster main
暂停osd检测
一个节点执行即可
# ceph osd set noout
或者在web界面的osd管理执行
所有节点升级ceph
这里说明一下,因为下载速度很慢,所以建议在一个节点下载所有升级需要的deb包,然后拷贝到其他节点
在一个节点执行
apt update
apt upgrade -d
下面命令的node$i代表其他节点名
rsync -avz /var/cache/apt/archives/ node$i:/var/cache/apt/archives/
然后所有节点执行
apt update
apt upgrade -y
升级后运行的依然是Luminous
在所有节点重启monitor守护进程
# systemctl restart ceph-mon.target
在所有节点重启manager守护进程
# systemctl restart ceph-mgr.target
在所有节点重启OSD守护进程
重启前后对比osd版本
# ceph osd versions
{
"ceph version 12.2.13 (8308e379909er32mr89adfd1c3d48ds3d2sb7d) luminous (stable)": 29
}
# systemctl restart ceph-osd.target
在所有节点通知ceph-volume调整用ceph-disk创建的OSDs
# ceph-volume simple scan
# ceph-volume simple activate --all
再查看osd版本
# ceph osd versions
{
"ceph version 14.2.16 (5d5ae8873ewr8ce40d46b337485dfe35b7efe04) nautilus (stable)": 29
}
升级所有CephFS MDS守护进程
如果使用cephfs参考官网执行,注意首先把max_mds设置为1(默认是3),停止其他备用的MDS守护进程,主MDS升级完成后再恢复max_mds
强制使用Nautilus
ceph osd require-osd-release nautilus
恢复osd检测
ceph osd unset noout
问题
升级完成后执行ceph -s可能有些报错信息
1. insufficient standby MDS daemons available
设置冗余预期
ceph fs set cephfs1 standby_count_wanted 0
2. monitors have not enabled msgr2
开启msgr2
ceph mon enable-msgr2
ceph mon dump
3. crush map has legacy tunables (require firefly, min is hammer)
这种情况一般出自多次升级,比如我从更老的v10升级上来就遇到了。
查看版本配置,可见要求是luminous:
# ceph features
{
"mon": [
{
...,
"release": "luminous",
...
}
],
"osd": [
{
...,
"release": "luminous",
...
}
],
"client": [
{
...,
"release": "luminous",
...
},
{
...,
"release": "luminous",
...
}
],
"mgr": [
{
...,
"release": "luminous",
...
}
]
}
修改配置(需要几个钟头再平衡数据)
ceph osd set-require-min-compat-client luminous
ceph osd crush tunables optimal