跳转至

Slurm 学习规划(精简版)

基于 inventory.yaml 真实集群资产,依托 Trae 全真模拟规范执行。 后续按阶段逐一拓展,每阶段输出六段式:核心原理 → 关键配置/参数 → 可执行 Demo → 真实执行效果与日志 → 适用业务场景 → 常见故障与排查。


一、集群 Slurm 资源摘要(来自 inventory.yaml)

角色 节点 IP 说明
控制+记账节点 k8s-master-01 192.168.0.2 slurmctld + slurmdbd 同机
计算节点 k8s-node-01/02/03 192.168.0.5/6/7 3 台真实计算节点
作业提交节点 IDE 192.168.0.9 slurm_submit
运维操作入口 rian 192.168.0.11 trae_remote_ssh,已免密登录全部主机

关键特征: - 操作系统:CentOS7(HP-R620 虚拟化),rian 为 ubuntu - 共存调度系统:LSF(master=k8s-master-01,backup=k8s-master-02,3 compute 节点同时是 lsf_compute_node)→ 可做 Slurm vs LSF 对比 - 并行文件系统:lustre(MGS=harbor、MDS=nfs、OSS=k8s-master-03) - 无 GPU 节点:GPU 场景由 Trae 模拟推演 - 公网堡垒机:VM-4-4-centos(129.226.138.204),海外下载慢可经此跳转


二、六阶段学习路径

阶段 1:架构与原理(认知奠基)

  • 核心组件职责:slurmctld / slurmd / slurmdbd / munge / cgroup
  • 启动依赖顺序与通信链路
  • 作业完整生命周期:提交 → 校验 → 排队(PD) → 调度(R) → 结束/失败(CD/F)
  • 调度核心逻辑:资源匹配 / 队列优先级 / QOS / 资源抢占 / 节点状态流转

阶段 2:核心命令(日常运维)

按"查询 → 提交 → 管控"三组演练,每条命令六段式输出: - 查询类:sinfo / squeue / sacct - 提交类:sbatch(批量脚本)/ srun(实时任务)/ salloc(交互式)— 重点区分三者业务场景 - 作业管控:scancel - 集群管控:scontrol / sacctmgr

阶段 3:配置文件(逐参数解析 + 模拟生效)

阶段拓展时再展开每族参数的 默认值 / 取值范围 / 含义 / 适用场景 / 本集群实操锚点。

  • slurm.conf:按 20 个语义族分组学习(集群标识、认证安全、路径日志、资源选择模型 SelectType、进程跟踪、调度器 SchedulerType、抢占、优先级公平份额、记账配额、超时生命周期、Prolog/Epilog、资源默认值上限、节点定义、分区定义、拓扑交换机、电源管理、Gres/容器/MPI、通信拓扑 TreeWidth、Job 生命周期插件、杂项)
  • gres.conf:GPU/异构资源绑定(本集群无 GPU,Trae 模拟)
  • cgroup.conf:CPU/内存资源隔离、超限策略
  • slurmdbd.conf:记账、日志、数据库联动
  • 闭环:修改配置 → 模拟重启服务 → 验证生效/报错

阶段 4:场景化 Demo(真实集群可跑)

  • 基础单任务 / 多核并行
  • 多节点分布式作业(k8s-node-01/02/03)
  • GPU 资源调度作业(Trae 模拟)
  • 作业超时 / 内存超限 / 资源不足排队
  • 作业依赖 / 批量任务并发调度
  • 共享存储作业(lustre 挂载点)

阶段 5:故障排查(核心重点,Trae 主动注入)

故障类别 复现手段
节点异常(DOWN/DRAIN/slurmd 挂掉/注册失败) scontrol drain + 杀 slurmd 进程
作业异常(长期 PD/运行闪退/超时/OOM) 构造资源不足/超时/内存越界
认证异常(munge 密钥不一致) 改 munge key 重启验证
配置异常(参数非法/分区冲突/限额冲突) 改 slurm.conf 触发报错
性能异常(资源浪费/绑定异常/效率低) cgroup 绑定验证

每类故障输出 xx故障报告.md:故障时间、现象、影响范围、根因原理、证据摘要、解决方案、验证结果、预防建议。

阶段 6:进阶与对比

  • Slurm vs LSF 对比(基于共存集群真实可考)
  • QOS / 资源抢占 / 优先级深度实操
  • 记账与配额(sacctmgr 实操)
  • 生产最佳实践与容量规划

三、实操锚点(落到 inventory.yaml 节点)

  • slurm.conf 实操主战场:k8s-master-01(192.168.0.2)
  • 节点字段验证:k8s-node-01/02/03 — nproc/free -m/lscpu 对照 NodeName 字段
  • 提交节点:IDE(192.168.0.9)— 客户端读取 slurm.conf 行为
  • 无硬件项(Trae 模拟):GPU(Gres)、HA(SlurmctldHost 多行)、电源管理、专网 SwitchType

四、执行约定

  1. 每节学习产物:原理释义 + 可执行脚本/命令 + 真实执行输出 + 适用场景 + 配置释义 + 故障排查(六段式闭环)。
  2. 文件归档:相关 MD 文档与脚本统一归组至本目录 slurm_study_plan/ 或对应阶段子目录。
  3. 真实性保证:所有命令优先在真实集群执行取证;GPU/HA 等无硬件场景由 Trae 模拟并明确标注。
  4. 高危操作:变更 slurm.conf / munge 等,先 cp xxx xxx.bak.$(date +%Y%m%d) 备份并附回滚步骤。
  5. shell 脚本规范:默认 set -euo pipefail,变量双引号包裹。

五、阶段产出索引(学习推进时回填)

阶段 子目录 / 文档 状态
阶段 1 阶段1_架构与原理/(阶段1_架构与原理.md + slurm_arch_inspect.sh) ✅ 完成(2026-09-03;2026-09-11 补充强化:新增协议链路/cgroup 隔离/状态持久化/插件体系/Prolog 钩子/HA 推演,修正 ClusterName 与 SlurmctldTimeout)
阶段 2 阶段2_核心命令/ ✅ 完成(2026-09-04)
阶段 3 阶段3_配置文件/ ✅ 完成(EDA规范版重做 2026-09-08)
阶段 4 阶段4_场景化Demo/(阶段4_场景化Demo.md + slurm_scenarios_demo.sh) ✅ 完成(2026-09-09,11场景实测)
阶段 5 阶段5_故障排查/(阶段5_故障排查.md + 5类故障报告.md + fault_injection_repro.sh) ✅ 完成(2026-09-10,F1~F7 七场景实测闭环)
阶段 6 阶段6_进阶与对比/(阶段6_进阶与对比.md + Slurm与LSF对比实测.md + QOS抢占与优先级实操.md + 记账配额与容量规划.md + phase6_lab.sh) ✅ 完成(2026-09-11,双调度器对照 + 优先级/抢占/配额实操,新发现 4 个真实缺陷)

每完成一阶段,在本表回填文档路径,便于后续对照执行。


六、运维变更记录(落地实操,区别于学习阶段)

日期 变更主题 子目录 / 文档 状态
2026-09-12 日志分离(syslog → /var/log/slurm/*.log)+ MpiDefault=pmi2 运维变更_日志分离与MPI默认/(SOP_日志分离与MPI默认.md + MPI与OpenMPI集成实测报告.md + apply_slurm_log_mpi.sh + rollback_slurm_log_mpi.sh) ✅ 完成(journald 中 Slurm 日志归零,端到端作业验证通过)

运维变更与学习阶段的区别:变更会修改集群状态,必须附带备份、回滚脚本与 SOP; 本次变更已同步回写阶段 1 文档中受影响的配置事实(日志路径、MpiDefault、-D/-s 语义纠正)。


来源:/home/rain/Documents/slurm/slurm_study/slurm_study_plan/学习规划.md | 最后更新:2026-09-12 12:31(由 build/sync.py 同步,请勿在站点侧修改)