企业级特性

双端口 SSD 的故障切换:x2+x2 链路、预留语义与整机联调

作者:军航科工半导体双端口SSD / NVMe预留 / 故障切换

带 D 尾缀的型号把 U.2/U.3 的 x4 拆成两组 x2。本文讨论带宽减半换取路径冗余的取舍、NVMe 预留状态为何必须持久化,以及切换瞬间在飞命令的处理边界。

一块盘,两条互不相干的路径

TITAN 7 的 J760D、J780D 与 Q7/Q9 的 J760QD、J960QD 在型号尾缀上带 D,含义是把 U.2/U.3 连接器上的 PCIe x4 拆成两组 x2,分别引到两个独立的控制器域。代价很直白:单路径带宽减半。收益是任一路径上的 HBA、线缆或上游控制器故障都不会让这块盘离线。这类配置服务的是双控存储阵列和高可用数据库节点,它们对连续可用性的要求高于对单盘峰值带宽的要求。

写入仲裁靠 NVMe 预留,而预留必须扛得住掉电

两个主机同时可见同一个命名空间,必须有机制阻止双写。NVMe Reservation 提供了注册、获取、抢占与释放这一整套语义,上层集群软件在切换时先抢占对端的预留,再接管 IO。固件侧真正要保证的是预留状态本身持久且原子:如果预留信息在掉电后丢失,重新上电时两端可能同时认为自己持有写权限,后果比单纯的数据丢失更麻烦。因此预留表与 L2P 元数据一样,必须落在受 PLP 覆盖的持久化路径上。

切换时刻最难处理的是“半完成”命令

路径故障通常发生在大量命令在飞的时候,盘上会同时存在已接收未完成的写。接管的新路径需要明确知道哪些命令已经越过持久化点、哪些必须由上层重发。设计上依赖两条约束:一是完成通知只在数据进入掉电保护域之后才发出,二是两个端口共享同一份元数据视图,而不是各自维护缓存副本。共享视图会引入跨域同步开销,这是双端口型号在延迟指标上通常略逊于同系列单端口型号的原因之一。

集成前需要对齐的几件事

双端口不是插上就生效,以下几项要在系统设计阶段确认:

  • 背板拓扑:两组 x2 必须分别接到不同的上游域,都接在同一个交换器件下就失去了冗余意义。
  • 枚举与带外管理:BIOS 与 BMC 要能正确识别同一 NVMe 子系统下的两个控制器,NVMe-MI 通道在单路径故障时仍需可达。
  • 多路径软件:切换策略、超时阈值与集群仲裁逻辑要对齐,避免两侧同时发起接管。
  • 热插拔时序:更换单侧器件时,另一侧的 IO 不应出现可观察的中断。

这些都属于整机联调项。单盘验证全通过并不等于系统可用,这也是双端口型号的验证周期通常长于单端口型号的直接原因。

关键词
双端口SSDNVMe预留故障切换高可用存储多路径U.2 U.3军航科工