企業級特性

雙埠 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軍航科工