跳转至

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 -n

来源:/home/rain/Documents/slurm/slurm_ins/docs/troubleshoot.md | 最后更新:2026-09-24 21:30(由 build/sync.py 同步,请勿在站点侧修改)