新品特性——在線固件升級

在線固件升級的市場需求

傳統需要冷重啓服務器才能升級固件的操作,需要用戶停止業務,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,也就是需要對服務器進行冷重啓

才能完成升級。步驟如下:

  1. 通過Download命令將固件鏡像文件下載到SSD的DRAM中
  2. 主機端發送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. 固件1正常運行時,通過Download命令將固件2鏡像文件下載到SSD的DRAM中
  2. 激活:主機端發送Firmware Commit指令,參數指定-a 3(即Commit Action爲011b,無需reset,即可完成固件激活。

 

 

在線固件升級舉例如下

 

根據測試,執行在線升級指令後,業務IO僅暫停1s後恢復。

 

由於SSD在數據中心大量部署,如果批量進行在線固件升級,對業務還是有較大影響,所以仍然需要大量用戶環境的實際驗證。雖然PBlaze5 920支持有IO的情況下進行固件在線升級,Memblaze強烈建議:

  • 用戶在業務壓力較小時進行固件升級操作;
  • 對於業務壓力持續很大的業務系統,建議停止業務做SSD固件升級,但是由於不需要umount文件系統、不需要停止應用、更不需要重啓服務器,用戶所需要付出的代價相比傳統升級方式小了很多;
  • 雙端口場景下,在線升級的目標一般是要在存儲系統業務不停止的情況下完成,所以需要存儲系統相關緩存、RAID等機制的保證

 

本文作者:王瑜   |   Memblaze 產品工程師

更多原創技術內容,請關注 Memblaze 微信公衆號。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章