Slurm 26.05 部署故障排查¶
一、常见故障¶
1.1 编译失败¶
现象:configure 或 make 报错退出
排查:
# 查看编译节点实时日志
ssh root@192.168.0.5 'tail -100 /root/slurm-build/slurm-26.05/config.log'
ssh root@192.168.0.5 'journalctl -u slurm-deploy --since "10 min ago"'
常见根因:
- gcc module 未加载:module load gcc/12.1.0
- 缺依赖:yum install openssl-devel pam-devel mariadb-devel numactl-devel hwloc-devel json-c-devel
- 磁盘满:df -h /
1.2 服务启动失败¶
现象:systemctl is-active slurmctld 返回 inactive/failed
排查:
systemctl status slurmctld
journalctl -u slurmctld --since "5 min ago" --no-pager | tail -50
/usr/local/slurm/sbin/slurmctld -D -vvvv # 前台调试
常见根因:
- munge 未运行:systemctl status munge
- slurm.conf 语法错误:/usr/local/slurm/sbin/slurmctld -c
- StateSaveLocation 目录不存在:mkdir -p /var/spool/slurmctld && chown slurm:slurm /var/spool/slurmctld
- 权限问题:chown -R slurm:slurm /usr/local/slurm-26.05/var
1.3 slurmdbd 连不上 DB¶
现象:slurmdbd 日志报 mysql_real_connect failed
排查:
# 在 192.168.0.2 测试 DB 连接
mysql -h 192.168.0.2 -P 3306 -u slurm -p slurm_acct_db -e 'SELECT 1'
# 检查 slurmdbd.conf
cat /usr/local/slurm/etc/slurmdbd.conf | grep -E 'Storage'
根因:
- DB 容器未就绪:kubectl get pod -n <ns> | grep mariadb
- 凭据错误:核对 yaml database 段
- 防火墙:firewall-cmd --list-ports
1.4 submit 节点无法提交作业¶
现象:在 192.168.0.9 执行 sbatch 报 slurm_persist_conn_open: Connection refused
排查:
# 检查 munge key 一致性
ssh root@192.168.0.9 'md5sum /etc/munge/munge.key'
ssh root@192.168.0.2 'md5sum /etc/munge/munge.key'
# 两个 md5 必须一致,不一致则:
scp 192.168.0.2:/etc/munge/munge.key 192.168.0.9:/etc/munge/munge.key
ssh root@192.168.0.9 'systemctl restart munge'
1.5 cgroup 路径变更导致监控失效¶
现象:prometheus 抓取的 slurm job cpu/mem 指标为空
根因:Slurm 23.11+ 起 cgroup 路径从 /sys/fs/cgroup/slurm/<jobid> 变为 /sys/fs/cgroup/slurm.slice/slurm-<jobid>
解决方案二选一:
方案A(保留旧路径风格):
# 在 slurm.conf 添加
echo "CgroupJobIdPaths=yes" >> /usr/local/slurm/etc/slurm.conf
# 重启 slurmctld slurmd
方案B(推荐,升级 exporter):
# 升级 prometheus-slurm-exporter 到支持 26.05 的版本
1.6 slurmd 启动失败 — cgroup 内存权限被拒¶
现象:
error: unable to open '/sys/fs/cgroup/memory/system.slice/slurmd.service/memory.limit_in_bytes' for writing: Permission denied
error: Cannot reset slurmd memory limits
根因:CentOS 7 cgroup v1 + slurmd 以 slurm 用户运行,无权写 systemd 控制的 cgroup 文件。
解决:slurmd 必须以 root 运行(管理 cgroup、创建 slurmstepd、切换作业用户):
# 备份后修改 service
cp /etc/systemd/system/slurmd.service{,.bak.$(date +%Y%m%d)}
sed -i 's/^User=slurm$/User=root/; s/^Group=slurm$/Group=root/' /etc/systemd/system/slurmd.service
systemctl daemon-reload && systemctl restart slurmd
部署脚本 v2 已修复:slurmd 和 slurmdbd 均以 root 运行,仅 slurmctld 以 slurm 用户运行。
1.7 slurmdbd 启动失败 — 配置文件权限或 schema 不兼容¶
现象A:fatal: slurmdbd.conf file should be 600 or 640 but is 644
解决:chmod 600 /usr/local/slurm/etc/slurmdbd.conf
现象B:fatal: Database schema is too old for this version of Slurm to upgrade
根因:跨大版本(如 21.08→26.05)数据库 schema 不兼容,无法自动迁移。
解决(高危,必须先备份):
# 1. 备份数据库
mysqldump -h <db_host> -u slurm -p<password> slurm_acct_db > /var/backups/slurm/slurm_acct_db_backup_$(date +%Y%m%d).sql
# 2. 重建空库(26.05 slurmdbd 首次连接自动建表)
mysql -h <db_host> -u slurm -p<password> -e 'DROP DATABASE slurm_acct_db; CREATE DATABASE slurm_acct_db;'
# 3. 重启 slurmdbd
systemctl restart slurmdbd
现象C:error: Unable to open pidfile '/var/run/slurmdbd.pid': Permission denied
解决:slurmdbd 以 root 运行(同 1.6)。
1.8 slurmctld 启动失败 — jobcomp 插件不存在或 state 不兼容¶
现象A:fatal: Failed to initialize jobcomp plugin / cannot create jobcomp context for jobcomp/slurmdbd
根因:Slurm 26.05 已移除 jobcomp/slurmdbd 插件,作业完成信息由 accounting_storage/slurmdbd 直接记录。
解决:
sed -i 's/^JobCompType=jobcomp\/slurmdbd$/JobCompType=jobcomp\/none/' /usr/local/slurm/etc/slurm.conf
systemctl restart slurmctld
现象B:fatal: No Assoc usage file to recover 或 Can not recover assoc_usage state, incompatible version
根因:全新安装首次启动时 state 目录为空,或旧版本 state 文件格式不兼容。
解决:首次启动用 -i 参数(忽略 state 错误),创建初始 state 后恢复正常启动:
# 1. 清理旧 state(先备份!)
cp -a /var/spool/slurmctld/* /var/backups/slurm/slurmctld_state_bak_$(date +%Y%m%d)/
rm -rf /var/spool/slurmctld/*
# 2. 临时加 -i 启动一次
sed -i 's/-D -s/-D -i -s/' /etc/systemd/system/slurmctld.service
systemctl daemon-reload && systemctl start slurmctld && sleep 5 && systemctl stop slurmctld
# 3. 恢复正常启动
sed -i 's/-D -i -s/-D -s/' /etc/systemd/system/slurmctld.service
systemctl daemon-reload && systemctl start slurmctld
1.9 submit 节点版本不匹配¶
现象:Incompatible versions of client and server code / Zero Bytes were transmitted
根因:submit 节点 PATH 中旧版本 slurm 命令(如 /usr/local/munge/bin/sinfo)优先于 26.05。
排查:
which -a sinfo # 查看所有 sinfo 路径
sinfo --version # 确认当前版本
解决:删除旧版本命令(已备份):
for cmd in sacct sacctmgr salloc sbatch scancel scontrol sinfo squeue srun; do
[ -f /usr/local/munge/bin/$cmd ] && mv /usr/local/munge/bin/$cmd /var/backups/slurm/
done
二、回滚验证清单¶
回滚后需逐项验证:
- [ ] sinfo 能正常返回节点列表
- [ ] squeue 无异常作业
- [ ] sacct 能查询历史作业
- [ ] systemctl is-active slurmctld slurmdbd slurmd 全 active
- [ ] prometheus slurm 指标正常抓取
三、日志位置¶
| 节点 | 日志路径 |
|---|---|
| 部署机 | logs/slurm_deploy.log |
| 各节点 | journalctl -u slurmctld/slurmdbd/slurmd |
| DB 容器 | kubectl logs |
来源:
/home/rain/Documents/slurm/slurm_ins/docs/troubleshoot.md| 最后更新:2026-09-24 21:30(由build/sync.py同步,请勿在站点侧修改)