130 lines
6.8 KiB
Markdown
130 lines
6.8 KiB
Markdown
# Calculet NPU 远端恢复原状计划
|
||
|
||
制定时间:2026-08-01
|
||
|
||
状态:已于 2026-08-02 00:54 执行完成并通过独立验收。本文件保留为清理前计划和基线;实际结果见 `Calculet-NPU-远端与本机清理完成记录-20260802.md`。
|
||
|
||
## 恢复目标
|
||
|
||
1. 删除本次在样机生成的全部归档、分片、清单和分析源码。
|
||
2. 删除本次环境盘点写入的 Shell 历史,同时保留对方原有历史和后续新增历史。
|
||
3. 确认没有遗留下载、模型服务、测试程序、端口监听或 NPU 设备占用。
|
||
4. 不修改对方原有容器、镜像、驱动、系统服务和用户配置。
|
||
5. 回收约 90 GiB 磁盘空间,并给出清理前后审计记录。
|
||
|
||
## 当前恢复基线
|
||
|
||
- 远端归档目录:`/home/user2/calculet-analysis-export`
|
||
- 精确占用:`96,590,271,861` 字节,共 4,883 个文件
|
||
- 根文件系统:总计 `982,240,026,624` 字节,已用 `246,533,816,320` 字节,可用 `685,735,694,336` 字节
|
||
- Shell 历史:`/home/user2/.bash_history`
|
||
- Shell 历史当前状态:69 行、权限 `600`、所有者 `user2:user2`
|
||
- 本次新增历史范围:第 53-69 行
|
||
- 第 53-69 行 SHA-256:`a5cc09c89ea56d8c79a1be6da9f402d13d9d74ecace8f25918f19601cac4eb36`
|
||
- 对方原有历史范围:第 1-52 行
|
||
- 历史文件 mtime:`2026-08-01 16:26:26 +0800`
|
||
- 当前没有 NPU 设备占用、8031 监听或模型服务进程
|
||
- 原有命名容器 `calculet-llama-v0.4.8_Qwen` 仍为 `created` 状态
|
||
|
||
## 清理前置条件
|
||
|
||
以下条件必须全部满足:
|
||
|
||
1. 项目负责人明确确认可以开始删除远端暂存资料并处理 shell 历史;全部资料已取回不等于自动授权删除。
|
||
2. 已批准范围内的所有归档都存在本地完成标志,并通过分片、整包和必要的逐文件 SHA-256 校验。
|
||
3. 当前已批准的优先第 1-4 步完成标志存在:`remote-export/PRIORITY-1-4-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt`。
|
||
4. 当前四个优先归档已按 `LOCAL-PRIORITY-1-4-ARCHIVES.sha256` 复核通过。
|
||
5. `llama.cpp` 已通过 `git fsck --full`,HEAD 为 `fd9bd632f346085920d523dd307a3e4c11cc0a05`。
|
||
6. 容器 `/home` 完成标志 `remote-export/STEP-5-CONTAINER-HOME-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt` 存在,整包校验通过。
|
||
7. OCI 完成标志 `remote-export/STEP-6-CONTAINER-OCI-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt` 存在,整包、25 个 blob 和所有描述符引用通过。
|
||
8. 完整模型完成标志 `remote-export/STEP-8-COMPLETE-MODEL-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt` 存在,68 个文件已按 `MODEL-FILES.sha256` 自动和独立复核两次。
|
||
9. 本地输出目录已有至少一份额外备份,或者项目负责人明确接受单副本风险。
|
||
10. 已通知后续测试同事清理时间窗,避免清理时仍有人使用相同账号。
|
||
|
||
任一条件不满足时,不删除远端归档。
|
||
|
||
## 执行阶段
|
||
|
||
### 阶段 1:停止传输并固定状态
|
||
|
||
- 暂停并结束本地 detached screen 下载任务。
|
||
- 确认远端不存在指向 `calculet-analysis-export` 的 rsync sender。
|
||
- 保存清理前 `df`、进程、端口、Podman、驱动参数和 NPU 设备占用快照。
|
||
- 再次记录待删除路径的大小、所有者、权限和文件数。
|
||
|
||
### 阶段 2:安全处理 Shell 历史
|
||
|
||
不能直接截断 `.bash_history`,因为后续同事可能已经追加新命令。应执行以下保护逻辑:
|
||
|
||
1. 重新计算当前第 53-69 行 SHA-256。
|
||
2. 只有指纹仍为 `a5cc09c89ea56d8c79a1be6da9f402d13d9d74ecace8f25918f19601cac4eb36` 时才自动处理。
|
||
3. 原样保留第 1-52 行。
|
||
4. 删除第 53-69 行。
|
||
5. 原样保留第 70 行及之后由其他同事新增的历史。
|
||
6. 通过同目录临时文件和原子重命名更新,恢复 `600` 和 `user2:user2`。
|
||
7. 如果行号或指纹不匹配,立即中止并人工比对,不做猜测性修改。
|
||
|
||
### 阶段 3:删除本次远端持久文件
|
||
|
||
精确清理范围:
|
||
|
||
- `/home/user2/calculet-analysis-export`
|
||
- `/home/user2/llama.cpp-src-fd9bd632.tar.gz`
|
||
- `/home/user2/calrt-focused-src-fd9bd632.tar.gz`
|
||
- `/home/user2/calbin_inspect.cpp`
|
||
|
||
不得使用 `/home/user2`、`/home` 或包含通配符的宽范围删除命令。删除前必须逐项 `stat` 并确认所有者为 `user2`。
|
||
|
||
### 阶段 4:远端恢复验证
|
||
|
||
- 上述四个目标均不存在。
|
||
- 归档相关 rsync、tar、zstd、split 和 sha256sum 进程为 0。
|
||
- `llama-server`、`calrt_smoke`、`calbin_inspect` 进程为 0。
|
||
- 8031 端口未监听。
|
||
- `/dev/calculet0` 无进程占用。
|
||
- 原有命名容器仍为 `created`,镜像 ID 未变化。
|
||
- 驱动参数保持:`poll_mode=0`、`dma_timeout_ms=30000`、`strict_validation=Y`、`calculet_log_level=6`、`max_boards=16`。
|
||
- 用户 crontab 仍为空,系统包数据库未因清理发生变化。
|
||
- 对比清理前后磁盘空间,预期回收约 90 GiB。
|
||
|
||
### 阶段 5:测试方本地凭据与网络清理
|
||
|
||
远端验收完成后,再处理测试方 Mac:
|
||
|
||
- 正常停止 OpenVPN,确认 `utun` 路由消失。
|
||
- 删除临时 VPN 配置、认证文件和日志。
|
||
- 删除包含 SSH 明文密码的本地 Expect 包装器。
|
||
- 删除样机 SSH `known_hosts` 记录前先确认后续不再需要连接。
|
||
- 仅在确认 OpenVPN 是本次专用安装且没有其他项目依赖时,才卸载本地 OpenVPN。
|
||
- 保留已验证的本地分析包、报告和校验记录。
|
||
|
||
## 清理完成记录模板
|
||
|
||
执行时应补充:
|
||
|
||
- 执行人和时间
|
||
- 本地归档验证标志及 SHA-256 结果
|
||
- Shell 历史处理前后行数和指纹
|
||
- 删除的四个精确路径
|
||
- 清理前后磁盘使用量
|
||
- 远端进程、端口、NPU、容器、镜像和驱动参数复核结果
|
||
- VPN 和本地凭据清理结果
|
||
- 对方环境负责人确认结果
|
||
|
||
## 当前下载快照
|
||
|
||
快照时间:2026-08-02 00:35。第 1-8 步已全部完成,8 个本地归档合计 `21,078,519,107` 字节。
|
||
|
||
| 优先步骤 | 本地结果 |
|
||
| --- | ---: |
|
||
| 关键上下文 | 8,942,525 B,整包及 115 个文件通过 |
|
||
| 基线分析归档 | 436,398,080 B,53/53 分片及整包通过 |
|
||
| 无权重模型运行时 | 11,253,912 B,整包及 66 个文件通过,权重计数为 0 |
|
||
| 完整 `llama.cpp` | 264,921,801 B,32/32 分片、整包、HEAD 和 `git fsck --full` 通过 |
|
||
| 容器完整 `/home` | 740,994,223 B,89/89 分片、整包、gzip/tar 结构和解包通过 |
|
||
| 完整 OCI 镜像 | 1,646,166,016 B,197/197 分片、整包、25 个 blob 和描述符引用通过 |
|
||
| 完整 `/home/user2` | 1,684,911,580 B,201/201 分片、整包、结构和查看副本通过 |
|
||
| 完整模型归档 | 16,284,930,970 B,1,942/1,942 分片、整包及 68 个模型文件两轮通过 |
|
||
|
||
最终总标志 `remote-export/ALL-REQUESTED-DATA-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt` 已生成,8 个归档统一清单 `LOCAL-ALL-DOWNLOADED-ARCHIVES.sha256` 全部匹配。当前远端没有 rsync sender 或运行容器,VPN、远端暂存目录和本地凭据继续保留,尚未进入清理阶段。
|