前言
本笔记是大致流程,给有一定管理经验的slurm cluster管理员参考,还是建议大家少折腾。
环境
CentOS7, openHPC1.3.9全家桶(附带slurm18.08),xcat集群管理(没有xcat的话,用for循环ssh代替psh和pscp)
slurm版本
Slurm最近的大版本如下(年.月)
18.08, 19.05, 20.02, 20.11, 21.08, 22.05, 23.02, 23.11
Slurm升级时要求不能超过两个大版本,所以策略是:
18.08->20.02->21.08->23.02
软件仓库
本次需要的20.02,21.08,23.02都需要自行下载rpm包
wget --mirror --no-parent https://depot.galaxyproject.org/yum/package/slurm/23.11/7/x86_64/18.08
下载下来就能当仓库,我们只取最后的文件夹,mysql有现成的,应该不需要额外安装
|-- 18.08
| |-- _archive
| |-- index.html
| |-- munge-0.5.14-1.el7.x86_64.rpm
| |-- munge-devel-0.5.14-1.el7.x86_64.rpm
| |-- munge-libs-0.5.14-1.el7.x86_64.rpm
| |-- repodata
| |-- slurm-18.08.9-1.el7.x86_64.rpm
| |-- slurm-contribs-18.08.9-1.el7.x86_64.rpm
| |-- slurm-devel-18.08.9-1.el7.x86_64.rpm
| |-- slurm-slurmd-18.08.9-1.el7.x86_64.rpm
| |-- slurm-slurmdbd-18.08.9-1.el7.x86_64.rpm
...
| `-- _staging
|-- 20.02
| |-- _archive
| |-- index.html
...
|-- 21.08
...
|-- 22.05
...
|-- 23.02
...
升级操作
参考
https://wiki.fysik.dtu.dk/Niflheim_system/Slurm_installation/#upgrading-slurm
首先备份数据库(如果不需要计费,也没有特殊规则,问题不大,正常升级不会损坏数据库)
升级顺序是->slurmdbd -> slurmctld -> slurmd
18.08似乎不能把任务扔下而升级slurm(我这里的bug?),我直接停了全部的slurm服务后开始操作
由于slurm与slurm-openHPC不兼容,所以要先在所有节点上卸载openHPC中slurm和相关软件包(比如munge)
psh compute yum remove -y munge-ohpc munge-libs-ohpc slurm-example-configs-ohpc;
yum remove -y slurmdbd slurmctld
创建一个repo
[slurm20.02]
name=Slurm 20.02 Repository
baseurl=file:///root/slurm20.02/
enabled=1
gpgcheck=0
分发到各个计算节点
psh compute mkdir /etc/yum.repos.d/bak/
psh compute mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
pscp /etc/yum.repos.d/slurm20.02.repo compute:/etc/yum.repos.d/slurm20.02.repo
# 分发软件包,如果有合适的共享存储,放在共享存储也行
pscp ~/slurm20.02 compute:
管理节点安装slurmctld和slurmdbd
#把其他所有repo放在bak中,或者去对应文件夹安装rpm全称
yum install -y slurm-slurmcdbd slurm-slurmctld
不要使用systemd启动slurmdbd,使用命令启动并转化数据库到新版。
slurmdbd -D -vvv
结束后slurmdbd不会结束,看到成功rollup就好,Ctrl+C结束即可。
计算节点安装slurmd和pam(如果需要pam的话)
psh compute yum install slurm-slurmd slurm-pam_slurm
可以启动所有服务了。
下一个版本升级按相似的顺序来。
升级过程中如果遇到数据库升级报错,服务无法启动的情况
也许需要journalctl -xeu service_name
查看日志,排查错误。
距离升级过去了几天才有时间写笔记,有点儿记不清了,有问题再讨论。