变电站边缘 AI 盒:备份与灾备恢复手册(可执行)
调研日期:约 2026-10-25(Asia/Shanghai)
落盘:/workspace/research/edge-ai-backup-disaster-recovery.md
定位:配置 / 密钥策略 / 模型指针 / 证据索引 / MQTT 离线缓冲的备份分层;换盘、换盒 runbook;与 Mender A/B、签名仓、安全启动、证据仓、VLAN 隔离衔接;不进保护网。
衔接:edge-ai-secure-boot-runtime-integrity.md、edge-ai-model-signstore-mender-cookbook.md、edge-ai-model-canary-rollback.md、edge-ai-evidence-store-snapshot-retention.md、edge-ai-mqtt-hardening-offline-buffer.md、edge-ai-vlan-network-isolation.md、edge-ai-observability-logging-metrics.md、edge-ai-d60-d90-acceptance-checklist.md、edge-ai-substation-gateway-bom.md。
声明:本文为边缘 AI 工程灾备基线,不替代继电保护二次安规或业主未公开站规。不确定处标 unknown。
0. 一句话结论与红线
结论:系统根用 Mender 已签名 Artifact / 黄金镜像重建;业务状态用 /data 分层快照恢复;模型权重以 仓侧内容寻址 + current/previous 指针为准,本地只保指针与已验签副本;设备身份私钥默认不外备(仅公钥/证书指纹进台账);证据允许丢近期环形缓冲,站配置与相机清单不可丢;恢复后必须 验签 + Secure Boot 自检 + VLAN/ACL 自检 才进 prod 推理。
| 红线 ID |
禁止项 |
说明 |
| B1 |
设备身份私钥禁止明文外备 |
mTLS/MQTT 设备私钥、SSH 主机私钥、TEE/TPM 密封密钥:禁止进飞书、Git、证据仓、未加密 U 盘、聊天;仅允许站内 PKI 重签新证或 TPM 密封备份(若有,流程 unknown) |
| B2 |
模型/OTA 签名私钥禁止落设备、禁止当「盒备份」带走 |
签名钥只在离线 HSM/隔离 CI;设备仅 model-verify.pub;换盒不迁私钥 |
| B3 |
证据可丢近期,配置不可丢 |
热盘环形证据允许 RPO=数小时~数天;site.yaml / 相机清单 / 围栏 / VLAN 角色 / ACL / authorized_keys 目标 RPO≤24h,换盘后必须可恢复 |
| B4 |
恢复后未验签 / 未 VLAN 自检禁止进 prod |
无 MODEL_VERIFY 通过、current 错链、CAM/AI/MQ/MGMT 口别错、出现 PROT 路由 → 仅 degraded/maintenance,禁止金标准告警 |
| B5 |
备份通道永不进保护二层 |
快照、rclone、USB 导入、MinIO 温盘均在 AI/MGMT/EVD VLAN;对齐 N1/N5、证据仓 R2 |
| B6 |
禁止用「整盘 dd 含私钥」当标准灾备 |
整盘镜像仅实验室;生产以「签名系统轨 + /data 白名单目录 + 仓侧重拉」为准,避免密钥扩散面 |
1. 备份对象分层与 RPO/RTO
1.1 目标(试点默认,可按业主改)
| 类别 |
示例对象 |
目标 RPO |
目标 RTO(换盘/换盒到可推理) |
丢失后果 |
| C0 不可丢配置 |
site_id、相机 RTSP/ONVIF 清单、电子围栏、任务绑定、防抖参数版本、VLAN/口别角色、MQTT ACL 摘要、authorized_keys 指纹、model-verify.pub 指纹 |
≤ 24 h(建议日备 + 变更即备) |
≤ 4 h(备件+镜像齐) |
站不可用或误报 |
| C1 模型指针 |
/data/models/current→sha、previous、可选 canary 拆除态;manifest 指纹 |
≤ 24 h;仓侧持有完整权重 |
≤ 2 h(仓可达则重拉) |
可回 previous 或仓侧重拉 |
| C2 MQTT 缓冲 |
离线 SQLite / 环形队列未上传事件 |
≤ 1~6 h(有界;满则按 P 丢) |
恢复后补传;不堵 RTO |
可丢低优 telemetry/frames |
| C3 证据索引 |
index.sqlite、retention.json、近期 meta.json |
索引 ≤ 24 h;媒体按热保留 |
索引优先;媒体可从温盘补 |
近期帧可丢(B3) |
| C4 证据媒体 |
JPEG/clip 环形缓冲 |
允许丢未同步部分 |
不阻塞推理恢复 |
审计缺口,记 evidence_gap |
| C5 系统根 |
rootfs / FIT / Agent 二进制 |
以 最后成功 Mender Artifact 为准 |
≤ 2~4 h刷槽+首次启动 |
用黄金 Artifact 重建 |
1.2 三层落存:镜像 vs /data 快照 vs 仓侧
| 层 |
放什么 |
不放什么 |
手段 |
| L-镜像(系统轨) |
已签名 rootfs/FIT、Agent、GStreamer 插件、公钥、默认 Schema、只读基线配置模板 |
权重、现场相机密码、设备私钥、证据媒体、MQTT 队列 |
Mender Artifact;出厂黄金镜像台账(版本+签名) |
L-/data 快照 |
config/(站配置)、models/(store 可选精简 + 指针)、mqtt_buffer/、evidence/index.sqlite + 近 N 日 meta、审计日志尾、证书公钥/设备证(私钥见 B1) |
签名私钥、PROT 任何路由、未脱敏人脸长留 |
rsync/btrfs send/zfs send 或「tar+SHA-256」日备到 EVD/MGMT NAS;加密卷口令站内保管 |
| L-仓侧权威 |
模型 store/<sha> 全量、Mender Artifact 仓库、站配置 Git/CMDB(脱敏)、相机资产台账、PKI 证书序列号台账 |
设备私钥材料 |
MinIO/签名仓 + 配置仓;换盒优先「仓 → 盒」 |
/data/ # 独立于 A/B rootfs;系统回滚不删
config/
site.yaml # 站/间隔/任务
cameras.yaml # RTSP/ONVIF;密钥用 file ref 或 vault id
fences/ # 电子围栏多边形
debounce.json # 防抖参数版本
network-role.json # 口别→VLAN 角色(自检用)
models/
store/<sha>/ … # 可 GC;权威在仓
current -> store/<sha>
previous -> store/<sha>
keys/model-verify.pub
mqtt_buffer/queue.sqlite
evidence/
index.sqlite
…/event_id/meta.json # 媒体可按保留删;索引优先备
audit/
identity/ # 仅证书与公钥指纹清单;私钥权限 600 且默认不进外备包
快照白名单原则:只备「可声明清单」内路径;禁止整盘盲拷。每日作业产出 BACKUP_MANIFEST.sha256(路径+哈希+utc),与可观测性 backup_last_ok_ts 对齐。
1.3 与既有分轨的关系
| 轨 |
灾备动作 |
禁止 |
| Mender 系统轨 |
坏根 → 刷上一成功 Artifact / A/B 回滚;不指望从证据盘还原 rootfs |
为救系统关闭 Secure Boot;未签名 Artifact |
| 模型轨 |
丢权重 → 仓按 model.ver 重拉 → 验签 → 挂 current;本地有 previous 则先切回 |
手工 cp 未签名引擎冒充恢复 |
| 证据轨 |
索引从日备恢复;媒体温盘 rclone 补;缺口标 suspect |
把证据盘挂到 PROT;恢复时开全站静音掩盖缺口 |
| MQTT 缓冲 |
恢复 SQLite 后异步补传;推理先起 |
阻塞 NPU 等补传完成 |
2. 换盘 / 换盒 Runbook
2.1 场景判定
| 场景 |
典型症状 |
首选路径 |
| S1 仅数据盘坏 |
rootfs 仍启动;/data mount 失败 |
换 SSD → 建文件系统 → 恢复 L-/data 白名单 → 仓补模型 |
| S2 系统盘坏 / 变砖 |
不开机或 verity 循环 |
备件刷黄金 FIT/Artifact → 挂原 /data(若健康)或恢复快照 |
| S3 整盒更换 |
硬件报废 |
新盒出厂 Secure Boot 镜像 → 新发 设备证书(旧私钥作废)→ 恢复配置快照 → 仓拉模型 → 全量自检 |
| S4 误删配置 |
推理在、相机/围栏错 |
只回滚 config/ 日备;不动 current 除非台账要求 |
2.2 换盘(S1)步骤
- 隔离:MGMT 登录;将推理切
maintenance;确认无 PROT 线缆误接(目视+口别标签)。
- 取证:导出最近
BACKUP_MANIFEST、journal 尾、model current 读链结果(只读)。
- 换盘:工业 SSD 同容量档或更大;分区:独立
/data;可选 LUKS(业主 unknown)。
- 恢复:按白名单
rsync/解密 tar;核 BACKUP_MANIFEST.sha256。
- 模型:若
store 不完整 → 仅保留指针文件,Agent pull+verify 仓侧;失败则挂 previous 或停在 degraded。
- MQTT:恢复
queue.sqlite 后启动补传线程;确认有界、不堵推理。
- 自检(§3)通过后切回
prod;上报 DEVICE_RESTORE_OK(ops 事件,非保护点)。
2.3 换盒(S3)步骤
- 台账:新
device_id、MAC、口别照片、Secure Boot / 公钥指纹录入。
- 刷机:仅已签名黄金镜像;首次启动确认 verified boot / 只读根。
- 身份:站内 CA 新签 mTLS 证;旧证吊销;禁止从坏盒拷私钥到新盒(B1)。
- 配置:下发最近
config/ 快照;相机口令从站内保险柜/密码器取,不写进 Git 明文。
- 模型:仓拉台账指定
model.ver → 验签 → current;previous 可同拉次稳版。
- 网络:按
network-role.json 接 CAM/AI/MQ/MGMT;跑 VLAN/ACL 自检。
- 演练门禁:故意错签包一次 → 必须
MODEL_VERIFY_FAIL 且不激活。
2.4 USB / 离线包(无仓可达时)
- 仅允许:签名模型包 + 加密配置包 + 公钥;介质登记编号与保管人。
- 导入路径:MGMT 口或本地 console;校验 SHA + Ed25519 后再落
/data。
- 禁止经 CAM VLAN 灌包;禁止未登记 U 盘。
3. 恢复后检查单(必须全绿才 prod)
| # |
检查项 |
通过标准 |
失败处置 |
| R-01 |
Secure Boot / 只读根 |
verified boot 或 ro/verity;/data 可写 |
停在 maintenance;禁关验签「先跑起来」 |
| R-02 |
公钥指纹 |
model-verify.pub sha 与台账一致 |
停;从黄金镜像重置公钥 |
| R-03 |
current 模型 |
manifest 验签通过;model.ver=主权重 SHA;compat 板卡匹配 |
切 previous 或仓重拉;上报 MODEL_VERIFY_FAIL |
| R-04 |
相机清单 |
cameras.yaml 路数/URI 与台账一致;RTSP TCP 拉流 OK |
只修配置;不改保护侧 |
| R-05 |
围栏/任务 |
fences 哈希与变更单一致;防抖参数版本可读 |
回滚昨日 config |
| R-06 |
口别与 VLAN |
CAM 仅相机;SSH 仅 MGMT;无默认路由进 PROT 网段 |
拔错线/改 ACL 后再测 |
| R-07 |
ACL / Broker |
设备只能写本 device_id topic;匿名关闭 |
对照 MQTT 手册重放 ACL |
| R-08 |
MQTT 缓冲 |
队列有界;断 Broker 推理 FPS 跌落≤5%(抽测) |
修发布路径后再 prod |
| R-09 |
证据索引 |
index.sqlite 可查;媒体缺口记 evidence_gap 不伪造 |
温盘补齐可选 |
| R-10 |
审计 |
恢复工单号、操作者、前后 Artifact/model.ver 写入 audit |
缺审计视为未完成恢复 |
一键自检建议(开机/restore-complete 钩子):串行跑 R-01~R-07;任一项红 → Agent 保持 degraded,MQTT status=degraded,不发金标准告警。
4. 两周落地 + 验收门禁
4.1 两周排期(可与 D60 并行)
| 日 |
动作 |
产出 |
| D1–2 |
冻结白名单目录与 RPO 表;登记黄金 Artifact / 公钥指纹 |
backup-policy.md + 台账行 |
| D3–4 |
实现日备作业:/data 白名单 → 加密落 EVD/NAS;BACKUP_MANIFEST |
cron/systemd timer;失败告警 |
| D5 |
配置变更钩子:改 cameras/fences 触发一次增量备 |
变更即备证明 |
| D6–7 |
实验室 S1 换盘 演练(可写盘) |
录像 + 检查单勾选 |
| D8–9 |
S3 换盒 演练:新证+仓拉模型+VLAN 自检 |
吊销旧证记录 |
| D10 |
错签包 / 无公钥指纹不匹配拒 prod |
否决证据 |
| D11 |
断 Broker + 恢复后补传;证据缺口标记 |
对齐 MQTT/证据红线 |
| D12–14 |
写进 D60/D90:备份失败告警、季度复演日历 |
门禁签字 |
4.2 验收门禁(建议写入 D60/D90)
| 门禁 |
否决条件 |
| G1 |
无日备成功记录连续 ≥48h 仍标「已上线灾备」 |
| G2 |
外备包中检出设备私钥或模型签名私钥 |
| G3 |
换盘/换盒演练跳过 R-01~R-07 任一仍切 prod |
| G4 |
恢复通道穿越 PROT VLAN 或经未过滤 CAM 灌包 |
| G5 |
恢复后 current 未验签或 model.ver 与权重 SHA 不一致 |
| G6 |
以「证据全丢可接受」为由不备 config/ / 相机清单 |
5. 运维速查
| 问题 |
先做 |
禁止 |
| 盒无法启动 |
备件刷签名镜像;保留原数据盘只读取配置 |
关闭 Secure Boot;随便下个论坛镜像 |
| 模型目录空 |
仓拉台账 model.ver;验签后挂链 |
U 盘拷未签名 .rknn |
| 恢复后狂误报 |
核围栏/相机预置位是否漂移;重校双光 |
全站静音当恢复完成 |
| 备份作业失败 |
查 NAS/EVD 空间与 MGMT 路由;保留上次好包 |
把备份改指办公网公盘明文 |
| 换盒后 MQTT 拒连 |
新证 CN=device_id;ACL 换名;旧证吊销 |
临时 allow_anonymous true |
6. 参考与未知项
- Mender A/B 与
/data 独立、Artifact 签名:对齐签名仓 / Secure Boot 手册;板级刷机工具名 unknown(BSP)。
- TPM 密封备份设备钥:若板载 TPM/fTPM,流程与 PCR 策略 unknown,默认仍走「吊销+重签」。
- 业主对证据法定保留期、盘级加密审批:unknown,以安监批复覆盖 B3 媒体侧。
- 公开思路:内容寻址制品(模型仓)+ 配置即代码日备 + 不可变基础设施(签名镜像)——实施以站内 VLAN 与密钥红线为先,不照搬云上整机快照。
文档结束。