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
四、执行约定¶
- 每节学习产物:原理释义 + 可执行脚本/命令 + 真实执行输出 + 适用场景 + 配置释义 + 故障排查(六段式闭环)。
- 文件归档:相关 MD 文档与脚本统一归组至本目录
slurm_study_plan/或对应阶段子目录。 - 真实性保证:所有命令优先在真实集群执行取证;GPU/HA 等无硬件场景由 Trae 模拟并明确标注。
- 高危操作:变更 slurm.conf / munge 等,先
cp xxx xxx.bak.$(date +%Y%m%d)备份并附回滚步骤。 - 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同步,请勿在站点侧修改)