跳转至

README — --submit-node --rollback 真实演练

主题:rollback_drill_20261007|类型:C 类(演练,真实变更)|状态:已完成 对应 HANDOFF §3 #2 的前半(后半「本地 scratch 演练」因不可逆待确认)

1. 目的

submit_node_onboarding 的回滚路径此前从未真实执行过(只跑过 dry-run,而 dry-run 下 rollback() 直接 return、不输出计划)。本次验证它真能执行、且重部署可完整恢复。

2. 窗口与前置(演练前核实)

项 实测
运行作业 squeue = 0
交互会话 仅 1 个 pts/2 的空 -bash(cwd=/root,已挂 2 天)→ 卸载挂载不会中断
目标 hpc-submit(.28),仅此一台

3. 执行与结果

cd /home/rain/Documents/slurm/slurm_ins
.venv/bin/python main.py --config config/slurm_deploy.yaml --submit-node --rollback   # rc=0
.venv/bin/python main.py --config config/slurm_deploy.yaml --submit-node              # rc=0,恢复
.venv/bin/python main.py --config config/slurm_deploy.yaml --submit-node --dry-run     # 幂等复验
检查项 回滚前 回滚后 重部署后
tier1 挂载数(/projects+/tools+/pdk) 3 2(EBUSY 2 个 + 成功 1 个,预期) 3 ✓
/etc/profile.d/slurm_configless.{sh,csh} 2 个 已移除 ✓ 2 个 ✓
/usr/local/slurm 软链 存在 已摘 ✓ 已重建 ✓
产物目录 /usr/local/slurm-26.05 存在 保留 ✓(设计如此) 存在 ✓
部署器待执行变更 — — 重部署 57(重建);幂等复跑 0 / 跳过 31 ✓

回滚日志原文(关键行):

⚠️ 回滚不删除任何数据:共享盘内容与节点上已分发的 Slurm 产物目录均保留,如需彻底移除请人工确认后处理

4. 结论

  1. 回滚路径可用:rc=0,按设计移除「软链 + configless profile」,保留产物目录与数据(安全)。
  2. 重部署可完整恢复:所有被移除项均回到回滚前状态;幂等复跑 待执行 0。
  3. 已查因:tier1 3 → 2 属预期行为,非缺陷。回滚日志显示 umount 三连: /projects RET=16、/tools RET=16(EBUSY —— 有进程占用该挂载),/pdk RET=0 成功。 即只卸得掉无人使用的挂载,不会强行中断在用目录 —— 这正是期望的安全行为。重部署后回到 3 ✓。

5. 备份与回滚

  • 本演练未改配置源,仅执行部署器自身的回滚/重部署;产物目录全程保留。
  • 演练产生的日志:run1.log(rollback)、run2.log(重部署)、run3.log(幂等复验)。
  • 若重部署失败需人工恢复:产物目录仍在,重跑 --submit-node 即可(本次已验证该路径可用)。

来源:/home/rain/Documents/slurm/slurm_ins/rollback_drill_20261007/README.md | 最后更新:2026-10-07 03:43(由 build/sync.py 同步,请勿在站点侧修改)