You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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未完全同步、时区不一致),就会触发凭证时间戳验证失败。

修复步骤

  1. 彻底验证时间同步

    • 所有节点执行chronyc tracking,确认Leap status为Normal,System time与NTP服务器偏差≤10ms
    • 执行timedatectl检查所有节点的时区、本地时间完全一致
    • 若存在偏差,重启chronyd:systemctl restart chronyd,等待同步完成后再验证
  2. 重新校验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
  3. 调整Slurm认证配置

    • 在slurm.conf中添加/修改:
      AuthInfo=cred_expire=86400
      SlurmctldTimeout=300
      SlurmdTimeout=300
      
    • 重启Slurm服务:
      systemctl restart slurmctld
      systemctl restart slurmd
      
  4. 清理异常任务状态

    • 取消所有挂起/held状态任务:scancel -t PENDING,HELD
    • 重新注册计算节点:scontrol update nodename=computenode state=RESUME

内容的提问来源于stack exchange,提问作者Jean Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:16:18