升级窗口是一个预算问题
企业级SSD的固件更新几乎申请不到停机窗口。主机侧的NVMe驱动对管理命令有固定超时,对I/O命令也有自己的重试与故障转移逻辑;固件激活一旦超出这个预算,上层看到的不是“正在升级”,而是一次设备失联。因此工程上真正需要控制的量只有一个:从停止接收新命令到重新可服务之间的时间,必须压在主机能容忍的量级内,而不能按普通重启来对待。
下载与激活是两件事
新固件先按块写入备用Bank,写完后校验签名并与Secure Boot信任链比对。这一阶段当前运行的固件完全不受影响,校验失败只是丢弃一份候选镜像。激活阶段才切换启动指针。NVMe定义了若干种提交动作——只替换不激活、替换并在下次复位后生效、立即生效——它们的差别本质上是把风险放在哪个时刻承担。跨大版本升级通常只允许走复位激活,因为免复位激活要求新旧固件在内部数据结构上二进制兼容。
激活瞬间的状态交接
免复位激活不是“换个程序继续跑”。控制器需要停止入队、排空已提交命令、把受掉电保护的写缓冲落盘,再把映射表、坏块表、SMART与Telemetry计数器以新固件能识别的格式重新装载。最容易出问题的是计数器语义:如果新版本改了某个统计量的定义却沿用旧的持久化槽位,升级后SMART曲线会出现无法解释的跳变,而运维系统往往正是据此告警。
回滚不是无条件的
回滚只在持久化布局未发生不可逆变更时才安全。可行的做法是在映射表与日志区头部写入格式版本号,旧固件启动时若发现版本号高于自身可识别的上限,直接拒绝挂载并保持只读,而不是按旧布局强行解析——静默误读的后果远比明确拒绝严重。这条规则也决定了发布节奏:改变持久化布局的版本必须单独发布,并在说明中标注为单向。
把升级纳入产品基线
在线升级与回滚是军航科工企业级功能基线中的一项,与PLP、端到端保护、NVMe-MI、Telemetry并列。CORE 7系列的J750/J770目前处于产品定义/EVT阶段,升级流程与固件回归用例同步搭建,目标是让每一个对外发布的版本都能追溯到确定的测试集合。
