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. 结论¶
- 回滚路径可用:rc=0,按设计移除「软链 + configless profile」,保留产物目录与数据(安全)。
- 重部署可完整恢复:所有被移除项均回到回滚前状态;幂等复跑
待执行 0。 - 已查因:tier1 3 → 2 属预期行为,非缺陷。回滚日志显示
umount三连:/projectsRET=16、/toolsRET=16(EBUSY—— 有进程占用该挂载),/pdkRET=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同步,请勿在站点侧修改)