SOP — 部署器可观测性补齐与交付文档复核(2026-10-08)¶
主题目录:
lsf_ins/probe_batch4_20261008/|执行日期:2026-10-08|类型:C 类(改实现体 + 改文档)
一、背景¶
三件事同批收尾,均来自 2026-10-07 探测批量化四轮改造的遗留清单与 HANDOFF §3 #4:
- 效率不可观测:
deployment-tool-engineering要求「运行结束输出本次远端命令数与建连数」, 共享库connection_pool.shutdown()已能打印建连数,但工程编排层从未调用,画不出「每台只建连一次」; derive_system_disks()(共享库precheck_module.py)是四轮批量化后唯一未审查的逐主机探测项;- 交付文档复核:HANDOFF §3 #4 要求复核
docs/三件套 +submit_node/, 并给出「INCIDENT 是否单列」的结论。
二、目标¶
| 项 | 目标态 |
|---|---|
| 5.1 连接数自报 | 任一子命令收尾打印 SSH连接池已关闭 | 本任务共新建连接 N 次,且 N ≤ 主机数 |
| 5.2 disks 批量化 | 有据可依的结论(做 / 不做),不做须留证 |
| 5.3 文档复核 | 相对链接 0 broken;CLI 取值与文档一致;节点口径与实机一致;INCIDENT 单列落地 |
三、前置条件¶
- 部署器 venv 可用、root 免密到 6 台节点可用;
- 复核为只读(
grep/ 文档读取 /bhosts只读查询)。
四、影响范围¶
- 5.1:
deploy/lsf/main.py一处(流程收尾)。 - 5.2:不改动(复核结论为不做)。
- 5.3:
docs/RUNBOOK.md(6 处口径校正)、docs/SOP.md(附录 A 压成指针 + 附录 B/C)、 新增docs/INCIDENT-20260924-部署期故障排障台账.md。不改任何系统状态。
五、分步操作¶
5.1 连接数自报(改 main.py)¶
原 main() 在 try 内直接 return orch.cmd_*(),进程退出不经过连接池收尾。
改为「rc 变量 + finally 调 connection_pool.shutdown()」:
rc = 0
try:
...
rc = orch.cmd_precheck() # 各子命令统一赋给 rc
...
except DeployError as exc:
rc = 1
finally:
try:
connection_pool.shutdown() # 打印「本任务共新建连接 N 次」
except Exception:
pass
return rc
坑:return 写在 try 内会跳过 finally 之前的收尾语义(此处靠 finally 兜住);
退出码语义必须保持(0 成功 / 1 业务失败 / 2 参数错误)。
5.2 derive_system_disks() 批量化 —— 复核后不做(留证)¶
| 事实 | 证据 |
|---|---|
| 已有进程内缓存,每主机最多一次 | precheck_module.py 的 system_disks():if host not in self._system_disks_cache |
| 位于受保护目标判定红线路径 | 该函数是「危险目标由实机推导」的唯一实现,deployment-tool-engineering 列为阻断项 |
| 改动落共享库,影响面 8 个挂载工程 | 共享库改动须逐工程回归(同一 skill 明令) |
| 收益 < 0.5 s | 上一轮 SOP 附录 B 已按停手判据判定「不再动」 |
结论:不做。剩余可优化面仅为「把 lsblk 调用并入 static_probes 批量」,与红线风险、
跨工程回归成本不成比例。若日后确需,须单独出方案并按共享库变更流程回归全部挂载工程。
5.3 交付文档复核(只读 + 文档编辑)¶
① 机检(一条命令跑完,含坏样本自检)
# 遍历 lsf_ins 下 *.md(排除 .venv/backup/IBM_Spectrum_LSF),校验相对链接可达;
# 同一逻辑在含坏链接的临时目录上必须判失败(反例自检);再核 CLI --stage 取值与文档一致
实测:md 13 个 / 相对链接 38 条 / BROKEN 0;坏样本 broken=1 PASS;
--stage 取值 {prepare,nfs,node-env,install,up,tune,health,user-sync,failover,cgroup,submit,local-scratch}
与文档引用一致(未定义取值 none)。
② 实机口径核对
ssh root@192.168.31.23 'source /data/nfs/lsf/lsf/conf/profile.lsf; bhosts -w'
实测:3 台 work ok + 2 master 与 hpc-submit closed_Full/MAX=0。
③ 由此发现的文档漂移(submit 节点接入后未同步)
| 文件 | 原表述 | 校正为 |
|---|---|---|
docs/RUNBOOK.md §4 |
启动/停止/重启 LSF「5 台都要」+ 循环 23..27 |
6 台(含 hpc-submit)+ 循环 23..28 |
| §8 场景2 | dnf install -y libnsl(5 台) |
6 台 |
| §8 场景3 | 核对循环 23..27、「预期 5 行摘要」、hostsetup --setuid + 5 台 sudoers、验证 5 台 |
23..28、6 行、6 台 |
| §8 场景4 | 重启循环 23..27 |
23..28 |
| §9 安全与权限 | 凭据/eauth 轮换「5 台」 | 6 台 |
| §10 容量 | 「5 台 / 30 核」 | 3 台执行节点(8 核/台 = 24 核) |
④ INCIDENT 单列
新增 docs/INCIDENT-20260924-部署期故障排障台账.md:按 writing-ops-change-sop 的 INCIDENT
八章组织(概要 / 影响范围 / 时间线 / 根因 / 处置过程 / 恢复验证 / 复盘 / 行动项),迁入原
docs/SOP.md 附录 A 的 25 条根因(含证据与跨轮索引),并把 SOP 附录 A 压成指针 —— 此后
事故与排障记录按 INCIDENT-YYYYMMDD-<主题>.md 追加,不再写回 SOP 正文。
⑤ 两个决策项的结论(用户裁定)
- git 纳管:暂缓(
lsf_ins当前不是 git 仓库); - INCIDENT 单列:是(已按 ④ 落地)。
六、验证¶
| 判据 | 命令 | 期望(实测) |
|---|---|---|
| 建连数可观测 | main.py -c config/lsf_deploy.yaml --precheck(跑两遍) |
两遍均含「本任务共新建连接 6 次」、rc=0 |
| 编译 | python -m py_compile main.py |
通过 |
| 链接可达 | 5.3 ① 的检查脚本 | BROKEN 0 + 坏样本自检 PASS |
| CLI 一致 | 5.3 ① 的检查脚本 | 未定义取值 none |
| 节点口径 | bhosts -w |
3 ok + 3 closed_Full |
| 部署器未受影响 | main.py --drift |
rc=0、全阶段无漂移 |
七、回滚¶
# 代码与文档均按备份台账还原(见 backup/README.md)
cp -a backup/lsf_ins/deploy/lsf/main.py.bak.<时间戳> deploy/lsf/main.py
cp -a backup/lsf_ins/docs/{RUNBOOK.md,HANDOFF.md,SOP.md}.bak.<时间戳> docs/
# INCIDENT 文件为新增:删除该文件并还原 SOP 附录 A(用上面的 SOP.md.bak)
回滚后验证:--precheck 不再打印建连数行;--drift rc=0。
八、风险说明¶
| 风险 | 说明与缓解 |
|---|---|
finally 中调用收尾抛错影响退出码 |
已 try/except 包裹,异常不影响 rc |
| 复核结论「不做」被视为漏做 | 已在本 SOP 与 HANDOFF §3 留证(缓存证据 + 红线归属 + 停手判据) |
| 文档口径校正引入新错误 | 每处均以实机 bhosts -w 输出为准;改动前整份备份 |
| INCIDENT 迁移丢内容 | 25 条根因逐条迁入(原 22 条 + 索引补充 3 条),SOP 侧改为指针并保留链接 |
附录 A:交付物清单¶
| 文件 | 说明 |
|---|---|
deploy/lsf/main.py |
收尾调 connection_pool.shutdown(),打印本任务建连数 |
docs/RUNBOOK.md |
6 处节点口径校正(5 台 → 6 台;容量 3 台执行节点) |
docs/SOP.md |
附录 A 压成指针(指向 INCIDENT);附录 B/C 同步 |
docs/INCIDENT-20260924-部署期故障排障台账.md |
新建:事故与排障独立台账 |
probe_batch4_20261008/SOP.md |
本文件 |
probe_batch4_20261008/backup/README.md |
备份台账 |
来源:
/home/rain/Documents/LSF/lsf_ins/probe_batch4_20261008/SOP.md| 最后更新:2026-10-08 03:48(由build/sync.py同步,请勿在站点侧修改)