新品特性——在线固件升级

在线固件升级的市场需求

传统需要冷重启服务器才能升级固件的操作,需要用户停止业务,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 微信公众号。