Slurm集群sbatch任务启动失败(返回码-1)问题求助
问题:Slurm 25.05.0任务提交失败(launch failed requeued held)但srun可正常执行
环境信息
- Slurm版本:25.05.0
- 集群架构:1个管理节点 + 2个计算节点(仅1个处于idle状态,目标使用该节点)
- 基础配置:chrony时间同步,Munge身份认证(已分发munge.key)
- 运行权限:slurm用户启动slurmd,munge用户启动munge,相关目录/文件权限配置正确
问题现象
使用sbatch提交任务到空闲计算节点时,squeue显示任务状态为(launch failed requeued held);但直接执行srun --nodes=1 --nodelist=computenode /shared/slurm_jobs/minimal_test.sh可正常运行脚本。
相关日志
计算节点slurmd.log
[2025-06-02T11:54:36.940] error: slurmstepd return code -1: Unspecified error [2025-06-02T12:16:47.004] error: Munge decode failed: Invalid credential [2025-06-02T12:16:47.004] auth/munge: _print_cred: ENCODED: Thu Jan 01 00:00:00 1970 [2025-06-02T12:16:47.004] auth/munge: _print_cred: DECODED: Thu Jan 01 00:00:00 1970 [2025-06-02T12:16:47.008] error: slurm_unpack_msg_and_forward: [10.64.60.31:54872] auth_g_verify: REQUEST_NODE_REGISTRATION_STATUS has authentication error: Invalid authentication credential
管理节点slurmctld.log
[2025-06-03T11:21:37.038] debug: _job_requeue_op: Holding JobId=32 due to prolog failure [2025-06-03T11:21:37.038] debug: _job_requeue_op: JobId=32 state 0x8000 reason 16 priority 0 [2025-06-03T11:21:37.038] debug2: Spawning RPC agent for msg_type REQUEST_TERMINATE_JOB [2025-06-03T11:21:37.038] debug2: Tree head got back 0 looking for 1 [2025-06-03T11:21:37.040] debug2: Tree head got back 1 [2025-06-03T11:21:37.040] Requeuing JobId=32
已尝试操作
- 注释
slurm.conf中的prolog及相关配置,日志仍提示prolog failure - 添加
AuthInfo=cred_expire=3600到配置,无改善
解决方案
根本原因
核心问题是Munge凭证时间戳验证失败:日志中编码/解码时间显示为1970年,说明凭证生成或验证时时间同步异常,导致Slurm身份认证环节出错。而prolog failure是认证失败后的归类错误——Slurm将任务启动前的认证失败统一标记为prolog阶段问题,并非实际prolog脚本执行错误。
srun能正常执行的原因是:它直接在当前会话生成Munge凭证,而sbatch由slurmctld生成凭证后传递给计算节点,若集群存在隐性时间同步问题(如chrony未完全同步、时区不一致),就会触发凭证时间戳验证失败。
修复步骤
彻底验证时间同步
- 所有节点执行
chronyc tracking,确认Leap status为Normal,System time与NTP服务器偏差≤10ms - 执行
timedatectl检查所有节点的时区、本地时间完全一致 - 若存在偏差,重启chronyd:
systemctl restart chronyd,等待同步完成后再验证
- 所有节点执行
重新校验Munge服务
- 确认所有节点
/etc/munge/munge.key权限为400,属主/属组为munge:munge - 计算节点本地验证:
munge -n | unmunge,检查输出的Encode time和Decode time为当前时间 - 跨节点验证:管理节点执行
munge -n | ssh computenode unmunge,确保返回Success且时间戳正常 - 重启所有节点munge服务:
systemctl restart munge
- 确认所有节点
调整Slurm认证配置
- 在
slurm.conf中添加/修改:AuthInfo=cred_expire=86400 SlurmctldTimeout=300 SlurmdTimeout=300 - 重启Slurm服务:
systemctl restart slurmctld systemctl restart slurmd
- 在
清理异常任务状态
- 取消所有挂起/held状态任务:
scancel -t PENDING,HELD - 重新注册计算节点:
scontrol update nodename=computenode state=RESUME
- 取消所有挂起/held状态任务:
内容的提问来源于stack exchange,提问作者Jean Paul
相关产品推荐
相关产品推荐

