一种不同类型SSD设备的固件统一升级方法与系统与流程

文档序号:18256905发布日期:2019-07-24 10:18阅读:274来源:国知局
一种不同类型SSD设备的固件统一升级方法与系统与流程
本发明涉及多SSD设备的固件升级方法,特别是多个不同类型设备的固件升级方法,可应用于(例如)不同设备型号或者不同设备厂家提供的SSD设备的固件统一升级。
背景技术
:现有的SSD设备的固件升级方法主要有两种:(1)使用厂家自带的设备软件进行升级。(2)使用统一的标准软件,先查询当前设备的型号和厂家,再选择对应的固件升级包来进行升级。在实际使用中会经常遇到混合使用不同厂家、不同型号的多设备场景,使用上述两种方法的主要问题有,(1)不同厂家的设备软件不能兼容,软件种类较多,不利于管理;(2)固件升级包太多,不利于统一升级。技术实现要素:本发明针对现有技术的不足,提出一种针对于多个不同类型SSD设备利用统一化大固件升级包的升级方法,使用单一标准软件和一个大固件升级包来对不同厂家/不同型号的设备进行同步固件更新。将不同厂家/不同型号的固件升级包按照规定的地址空间进行拼接,组合成一个大固件升级包。每个厂家不同型号的SSD设备在这个大固件升级包中都有设定的一段或多段独立地址空间,然后在固件升级的过程中,每个SSD设备只处理属于自己地址空间范围内的升级包数据,忽略其他数据。一种不同类型SSD设备的固件升级方法,其包括步骤:S1、根据计算系统中需要统一升级固件的SSD设备总的型号数和与这些型号数对应的固件文件大小生成地址空间分配信息表;S2、根据该地址空间分配信息表将其中对应的所有型号SSD设备的固件按照分配的地址空间组合在一起形成一个大固件升级包,其中如果单个固件的文件大小小于所分配的地址空间大小,则将其填充到预定分配的地址空间的大小,未得到分配的地址空间也被填充至满足该大固件升级包相应总的空间大小;S3、将上述大固件升级包的地址空间分配信息配置到对应的SSD设备中;以及S4、对上述计算系统中需要统一升级固件的SSD设备执行固件升级。作为一种变型,上述步骤S1还包括步骤:S11、添加新型号SSD设备的配置信息到所述地址空间分配信息表中,其中判断该大固件升级包中是否具有足够的空闲地址空间来允许分配给新型号SSD设备的固件,如果判断出该地址空间不够,则需要增加大固件升级包的大小,并保证已有的空闲地址空间加上新增部分的地址空间能够满足新型号SSD设备的固件大小需求。然后分配足够的空闲地址空间给新型号SSD设备并更新地址空间分配信息表。作为另一种变型,上述步骤S1还包括步骤:S11’、从所述地址空间分配信息表中删除一个或多个型号SSD设备对应固件的地址分配信息。其中将所需删除型号SSD设备对应固件的地址空间置为未分配即空闲状态,然后更新该地址空间分配信息表;作为又一种变型,上述步骤S1还包括步骤:S11”:当有SSD设备厂家发布了新的可升级固件时,同步更新这个已创建的大固件升级包,此时存在两种更新场景:新的可升级固件的文件大小未超过被初始分配的地址空间以及新的可升级固件大小超过被初始分配的地址空间,在新的可升级固件的文件大小未超过被初始分配的地址空间的情况下,此时不更新原先被初始分配的地址空间,按照已创建的当前大固件升级包对应的地址分配信息表重新生成一个新的大固件升级包;以及在新的可升级固件的文件大小超过被初始分配的地址空间的情况下,判断已创建的当前大固件升级包中是否具有足够的空闲地址空间来允许分配给该SSD设备对应的新增可升级固件部分,如果判断出该地址空间不够,则需要增加大固件升级包的大小,并保证已有的空闲地址空间加上新增部分的地址空间能够满足该SSD设备对应的新增可升级固件部分的大小。然后分配足够的空闲地址空间给该SSD设备并更新地址空间分配信息表。作为上述固件升级方法的任一变型的优化,所分配的地址空间为一段连续的地址空间或者为多段彼此分隔的地址空间。在此基础上另外地,在上述步骤S3中,所述配置还包括:静态配置:SSD设备厂家根据所生产SSD设备所需的固件包的文件大小,先向使用者申请地址分配信息,然后将该地址分配信息编译到SSD设备的固件包中,其中在使用该静态配置方法时,如果在使用过程中需要增大上述地址空间,则向使用者申请地址分配信息,然后将获取到的该新地址分配信息编译到SSD设备的新固件包中,并且需要使用老固件仅更新其中的地址分配信息来生成一个过渡固件包;以及从老固件包升级到过渡固件包,再从过渡固件包升级到新固件包;动态配置:在上述SSD设备的固件包中不包含任何的地址空间分配信息,在使用者创建或更新大固件升级包的地址空间分配信息之后,将该地址空间分配信息通过命令发送给上述所有的SSD设备。在此基础上另外地,在上述步骤S4中,执行所述更新包括以下方式中的至少一个:更新所有型号的SSD设备:将更新后的大固件升级包通过固件升级命令发送给上述所有的SSD设备,每个SSD设备只处理与自身地址空间匹配的可升级固件部分,从而完成所有SSD设备的固件更新;和更新部分型号的SSD设备:从更新后的大固件升级包中选择需要更新的SSD设备对应的地址空间部分,将该地址空间部分对应的固件包通过固件升级命令发送给所有SSD设备,只有与该地址空间对应型号的SSD设备才做出响应并处理该固件更新命令,从而完成部分型号SSD设备的固件更新。一种不同类型SSD设备的固件升级系统包括:多个固件待升级的不同类型SSD设备;和与这些SSD设备通讯的处理器,被配置为执行上述固件升级方法及其任一变型的方案。【附图说明】在以下的描述中,为了解释本发明技术方案及其效果而阐述许多细节。但是本领域技术人员将认识到本发明可以不使用这些特定细节来实现。在其它情况下,为了不让不必要的细节妨碍本发明的描述,以附图形式示出了计算机处理程序的结构和流程,其中:图1是示意性表示出本发明固件升级方法的固件升级包的架构原理;图2是示意性表示出大固件升级包的静态配置方法的过程原理;图3是执行本发明固件统一升级方法的系统实施例的原理框图。【具体实施方式】在一些实施例中,本发明可以采取用于经由PCIe链路或其他Fabric链路(例如以太网,TCP/IP网络,InfiniBand,FibreChannel等)提供对NVMe设备的访问形式执行上述固件升级方法。如图1示出那样,总的来说,本发明的SSD设备(例如在一些实施例中以NVMe设备来说)的固件升级方法可包括:步骤S1、创建一个大固件升级包。在一个实施例中,在当前计算系统中检测到的多个待固件升级的SSD设备的配置信息如下表1所示那样排列出:表1厂家型号固件大小厂家A型号1200KBytes厂家A型号2900KBytes厂家B型号12.1MBytes厂家B型号21.6MBytes厂家C型号17MBytes假设所需创建的一个大固件升级包的空间大小为16Mbytes并且地址空间单位为512Bytes,初始各个SSD设备对应的待升级固件的文件大小可按照该地址空间分配。如下表2所示:表2大固件包地址空间厂家型号单个固件大小0x0-0x7FFFF厂家A型号1200KBytes0x80000-0x17FFFF厂家A型号2900KBytes0x180000-0x3FFFFF厂家B型号12.1MBytes0x400000-0x5FFFFF厂家B型号21.6MBytes0x600000-0xCFFFFF厂家C型号17MBytes0xD00000-0xFFFFFF未分配未分配3MBytes步骤S2、将所有的待升级固件按照地址空间分配并拼接在一起组合成一个大固件升级包,如果单个待升级固件的文件大小小于所分配的地址空间,则将其填充到分配空间的大小,未得到分配的地址空间也需要被填充至满足该大固件升级包相应总的文件大小。作为上述方法的一种变型,在上述步骤S2中还包括:S21、添加新型号NVMe设备。首先判断该大固件升级包中是否具有足够的地址空间来允许分配给新型号NVMe设备,如果判断出该地址空间不够,则需要更新(诸如增加)该大固件升级包的空间大小。在该大固件升级包的未分配地址空间中分配地址空间给这个新型号NVMe设备的待升级固件,所分配的地址空间可以为一段连续的地址空间,也可以为多段彼此分隔的地址空间。然后,按照更新后的该大固件升级包对应的地址空间的分配信息表来重新生成一个新的大固件升级包。例如,在计算系统中增加了配置信息为“厂家D/型号1”的一个新型号NVMe设备,其对应的待升级固件大小为1.8MBytes。通过执行上述更新后对应的地址空间分配如下表3所示:表3大固件包地址空间厂家型号单个固件大小0x0-0x7FFFF厂家A型号1200KBytes0x80000-0x17FFFF厂家A型号2900KBytes0x180000-0x3FFFFF厂家B型号12.1MBytes0x400000-0x5FFFFF厂家B型号21.6MBytes0x600000-0xCFFFFF厂家C型号17MBytes0xD00000-0xEFFFFF厂家D型号11.8MBytes0xF00000-0xFFFFFF未分配未分配1MBytes将所有的固件按照更新后的地址空间分配拼接在一起组合成一个大固件升级包,如果单个固件大小小于分配的空间,则将其填充到分配空间大小,未分配的地址空间也需要填充至相应的大小。作为上述方法的另一种变型,在上述步骤S1中还包括:S21’、删除在所检测出的这多个SSD设备中的至少一个。其中,将所需删除的该型号的SSD设备对应的地址空间置为未分配,然后更新(诸如刷新)该大固件升级包的空间大小。按照更新后的该大固件升级包对应的地址空间的分配信息表重新生成一个新的大固件升级包。例如,在计算系统中删除配置信息为“厂家B/型号2“的NVMe设备,从上述表3所示的分配信息表更新后的地址空间分配如下表4所示。表4大固件包地址空间厂家型号单个固件大小0x0-0x7FFFF厂家A型号1200KBytes0x80000-0x17FFFF厂家A型号2900KBytes0x180000-0x3FFFFF厂家B型号12.1MBytes0x400000-0x5FFFFF未分配未分配2MBytes0x600000-0xCFFFFF厂家C型号17MBytes0xD00000-0xEFFFFF厂家D型号11.8MBytes0xF00000-0xFFFFFF未分配未分配1MBytes将所有的固件按照更新后的地址空间分配拼接在一起组合成一个大固件升级包,如果单个固件大小小于分配的空间,则将其填充到分配空间大小,未分配的地址空间也需要填充至相应的大小。在以上实施例及其变型中,对所述大固件升级包的更新可以是以下描述那样:例如,当有NVMe设备厂家发布了新的可升级固件时,需要同步更新这个已创建的大固件升级包。此时可能有两种更新场景:新的可升级固件的文件大小未超过被初始分配的地址空间以及新的可升级固件大小超过被初始分配的地址空间。在新的可升级固件的文件大小未超过被初始分配的地址空间的情况下,此时不需要更新原先被初始分配的地址空间,按照已创建的这个大固件升级包的地址分配信息表重新生成一个新的大固件升级包。例如对于表4来说,在计算系统中配置信息为“厂家A/型号1”的NVMe设备发布了新的可升级固件,这个新的可升级固件大小为310KBytes,对应地址空间的分配保持不变,如下表5所示。表5大固件包地址空间厂家型号单个固件大小0x0-0x7FFFF厂家A型号1310KBytes0x80000-0x17FFFF厂家A型号2900KBytes0x180000-0x3FFFFF厂家B型号12.1MBytes0x400000-0x5FFFFF未分配未分配2MBytes0x600000-0xCFFFFF厂家C型号17MBytes0xD00000-0xEFFFFF厂家D型号11.8MBytes0xF00000-0xFFFFFF未分配未分配1MBytes将所有的固件按照地址空间分配拼接在一起组合成一个大固件升级包,如果单个固件大小小于分配的空间,则将其填充到分配空间大小,未分配的地址空间也需要填充至相应的大小。在新的可升级固件的文件大小超过被初始分配的地址空间的情况下,首先判断已创建的这个大固件升级包中是否具有足够的地址空间来允许分配给该NVMe设备对应的新增可升级固件部分,如果判断出该地址空间不够,则需要增加该大固件升级包的空间大小。然后,在这个大固件升级包的未分配地址空间中分配地址空间给该NVMe设备的新增可升级固件部分,分配的地址空间可以为一段连续的地址空间,也可以为多段彼此分隔的地址空间。最后按照执行所述更新后的大固件升级包的地址分配信息表重新生成一个新的大固件升级包。例如,假设在该计算系统中“厂家A/型号2”的NVMe设备发布了新的可升级固件,该新固件文件大小为1.2MBytes,则执行更新后对应的地址空间分配如下表所示。表6大固件包地址空间厂家型号单个固件大小0x0-0x7FFFF厂家A型号1310KBytes0x80000-0x17FFFF厂家A型号2第一部分1MBytes0x180000-0x3FFFFF厂家B型号12.1MBytes0x400000-0x5FFFFF未分配未分配2MBytes0x600000-0xCFFFFF厂家C型号17MBytes0xD00000-0xEFFFFF厂家D型号11.8MBytes0xF00000-0xF7FFFF厂家A型号2第二部分200KBytes0xF80000-0xFFFFFF未分配未分配512KBytes将所有的固件按照地址空间分配拼接在一起组合成一个大固件升级包,如果单个固件大小小于分配的空间,则将其填充到分配空间大小,未分配的地址空间也需要填充至相应的大小。但是由于NVMe设备的地址空间发生了变化,需要在使用该大固件升级包之前将更新后的地址信息发送给受影响的这些NVMe设备。步骤S3、将上述大固件升级包的地址空间分配信息配置到对应的NVMe设备中。在一个例子中,所述配置可分为以下描述的方式:(1)静态配置:SSD设备厂家根据所生产SSD设备所需的固件包的文件大小,先向使用者申请地址分配信息,然后将该地址分配信息编译到SSD设备的固件包中。在使用该静态配置方法时,如果在使用过程中需要增大上述地址空间,则需要先向使用者申请地址分配信息,然后将获取到的该新地址分配信息编译到SSD设备的新固件包中,并且需要使用老固件以更新其中的地址信息来生成一个过渡固件包。在具体的升级过程中,可包含两个步骤,第一步是从老固件包升级到过渡固件包,第二步是从过渡固件包升级到新固件包。(2)动态配置:在SSD设备的固件包中不包含任何的地址空间分配信息,在使用者创建或更新大固件升级包的地址空间分配信息之后,将该信息通过命令发送给所有的SSD设备。步骤S4、对上述固件执行更新。其中,执行所述更新包括:(1)更新所有型号的SSD设备:将更新后的大固件升级包通过固件升级命令发送给所有的SSD设备,每个SSD设备只处理与自身地址空间匹配的可升级固件部分,从而完成所有SSD设备的固件更新。(2)更新部分型号的SSD设备:从更新后的大固件升级包中选择需要更新的SSD设备对应的地址空间部分,将该地址空间部分对应的固件包通过固件升级命令发送给所有SSD设备,只有与该地址空间对应型号的SSD设备才做出响应并处理该固件更新命令,从而完成部分型号SSD设备的固件更新。此外参照图3,在本发明实施上述方法的系统中,可以允许对本地计算系统提供的多个升级方法和功能并行使用。此类系统可包括多个固件待升级的不同类型SSD设备和与这些SSD设备通讯连接的处理器,被配置为执行上述固件升级方法及其任一变型的方案。所述处理器可以包含中央处理单元(CPU)和周围集成电路以执行固件升级。例如,在一种本地化的计算系统中上述SSD设备和处理器之间通过例如SATA、SAS和/或PCIe的方式建立通讯。在一个例子里,这种计算系统可以包括数据访问和处理功能,本发明可经由交换设备访问将一用于获取这/这些计算系统中的NVMe设备的配置信息以生成升级信息的远程计算机连接到本地计算系统,同时提供可以由另一远程计算机使用的另外的固件更新数据访问和提供对上述大固件升级包的更新服务。在一个实施例中,固态硬盘(solidstatedriver,SSD)设备可以提供由此类计算系统通过网络对本地计算系统的网络访问。虽然所述SSD设备可被放置在本地计算系统与远程计算机的通信之间,但是所述远程计算机与所述SSD设备可以在连接时彼此作为以本地方式连接的,例如经由直接的PCIe总线连接。以这种方式,本地计算系统和/或计算机可以不必被特别配置为呈现在网络上或连接到网络。所述交换设备还可以促进和/或转译本地计算系统与远程计算机之间的通信。在示例性的例子中,一种用于提供对本地计算系统的访问和同步升级服务的系统可包括至少一个NVMe设备、通讯连接这些NVMe设备的本地计算系统。计算系统可包括经由网络与远程计算机通信的交换设备,例如光纤交换机、以太网交换机等。远程计算机则可与此类本地计算系统直接通信。因此,远程计算机与交换设备和本地计算系统二者通信(例如包含以以太网方式)。在这个实施例中,交换设备与本地计算系统之间的通信可以经由远程计算机传送。远程计算机可以向交换设备提供经由网络对本地计算系统(或本地计算系统的选择的功能)的访问,尽管本地计算系统可能原本没有被配置作为联网的设备。每一计算系统的网络/通信接口可以接收和发送各种命令信号。例如,网络/通信接口可以用于将交换设备连接到一计算系统提供的无线网络,以便向远程计算机和网络上的计算系统和/或其他外围设备以及/或者从远程计算机和网络上的数据库提取和转发固件更新命令。网络通信接口也可以用于经由无线和/或有线连接(包括但不限于Internet、Wi-Fi、蓝牙、以太网、USB和Fire-wire)发射和发送广播信号。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1