在線固件升級的市場需求
傳統需要冷重啓服務器才能升級固件的操作,需要用戶停止業務,umount文件系統,冷重啓完成SSD固件升級,然後mount文件系統,重新啓動業務系統的各個模塊。對用戶來說,操作複雜,容易出錯。所以用戶更希望有一種不需要重啓即可完成硬件固件升級的方法。
另一方面,對於可靠性要求很高的存儲系統而言,更會要求SSD必須支持固件在線升級功能,才能保證存儲系統服務的連續性。存儲系統通常有多種方式完成SSD的固件升級,如對目標升級SSD停止IO操作,瞬間完成固件升級後,通過緩存或者RAID機制在目標SSD重建增量數據。
固件升級步驟和激活方式
SSD固件升級主要分爲下載和激活兩個步驟,激活成功,固件升級成功。通過開源命令行工具nvmecli即可執行。
- 在nvmecli版本1.5以下,激活操作通過命令fw-activate實現
- 在nvmecli版本1.5以上,激活操作通過命令fw-commit實現
在NVMe協議標準中(截圖Figure 76取自《NVM Express 1.3b》),對Commit指令所跟參數有詳細定義。其中Commit Action(CA)指明升級固件下載和激活不同執行方式的組合。如:
- 001b:向指定slot下載固件,需要reset後完成激活操作
- 011b:向指定slot下載固件,激活立即生效,固件升級完成
固件升級需要Reset
一般SSD固件升級需要Reset,也就是需要對服務器進行冷重啓
才能完成升級。步驟如下:
- 通過Download命令將固件鏡像文件下載到SSD的DRAM中
- 主機端發送Firmware Commit指令,參數指定-a 1(即Commit Action爲001b),固件激活需要reset操作。需要關閉服務器後,再重啓,固件纔算成功被激活。這一步操作也是將固件從DRAM寫入NAND。
固件下載後會通過CRC校驗有效性。
需要Reset操作的固件升級舉例如下:
標準定義SSD支持7個slot,slot 1 是隻讀權限,用於存放出廠固件,slot 2和3 可用於固件下載。示例選擇slot 2(-s 2)進行固件下載。
需要對服務器冷重啓才能升級成功。
PBlaze5 920支持固件在線升級
新一代PBlaze5 920系列支持固件在線升級功能,固件升級可以在業務有IO的情況下進行,無需重啓服務器。升級步驟如下:
- 固件1正常運行時,通過Download命令將固件2鏡像文件下載到SSD的DRAM中
- 激活:主機端發送Firmware Commit指令,參數指定-a 3(即Commit Action爲011b),無需reset,即可完成固件激活。
在線固件升級舉例如下:
根據測試,執行在線升級指令後,業務IO僅暫停1s後恢復。
由於SSD在數據中心大量部署,如果批量進行在線固件升級,對業務還是有較大影響,所以仍然需要大量用戶環境的實際驗證。雖然PBlaze5 920支持有IO的情況下進行固件在線升級,Memblaze強烈建議:
- 用戶在業務壓力較小時進行固件升級操作;
- 對於業務壓力持續很大的業務系統,建議停止業務做SSD固件升級,但是由於不需要umount文件系統、不需要停止應用、更不需要重啓服務器,用戶所需要付出的代價相比傳統升級方式小了很多;
- 雙端口場景下,在線升級的目標一般是要在存儲系統業務不停止的情況下完成,所以需要存儲系統相關緩存、RAID等機制的保證
本文作者:王瑜 | Memblaze 產品工程師
更多原創技術內容,請關注 Memblaze 微信公衆號。