硬盘的固件升级方法和存储系统的制作方法

文档序号:6637997阅读:300来源:国知局
硬盘的固件升级方法和存储系统的制作方法
【专利摘要】本发明实施例提供一种硬盘的固件升级方法和存储系统,所述存储系统包括RAID控制器和多个RAID,所述多个RAID中的各RAID包括多个硬盘,RAID控制器通过获取各RAID的配置和状态,根据各RAID的类型确定各RAID的冗余能力,并根据各RAID的状态和配置对各RAID中硬盘上的固件进行升级,其中,RAID控制器在对各RAID进行升级时,各RAID之间并行升级,并且每个RAID内部根据RAID的冗余能力多个硬盘之间并行升级,从而使得多个硬盘之间可以并行升级,缩短了整个存储系统的升级时间,提高了存储系统的固件升级效率。
【专利说明】硬盘的固件升级方法和存储系统

【技术领域】
[0001]本发明实施例涉及信息技术(Informat1n Technology,简称IT),尤其涉及一种硬盘的固件升级方法和存储系统。

【背景技术】
[0002]硬盘是存储系统中数量最多的组件,一个存储系统少则几十块硬盘,多则上千块硬盘。硬盘上面运行着复杂的固件(firmware),为了解决固件的漏洞(bug),需要定时对硬盘上的固件进行升级来降低故障率。在线存储系统一般只能进行在线升级,如何快速升级硬盘,又不影响业务连续性是系统设计的一个挑战。
[0003]现有的存储系统中,如果需要在线升级固件,一般都是单块硬盘依次升级,如果存储系统中硬盘数量较少,升级时间较快,但是对于一个庞大的存储系统,升级时间将会十分漫长。


【发明内容】

[0004]本发明实施例提供一种硬盘的固件升级方法和存储系统,能够缩短硬盘固件的升级时间,提尚硬盘固件的升级效率。
[0005]本发明第一方面提供一种硬盘的固件升级方法,所述方法应用于存储系统中,所述存储系统包括独立磁盘冗余阵列RAID控制器和多个RAID,所述多个RAID中的各RAID包括多个硬盘,其中,所述方法包括:
[0006]所述RAID控制器获取所述各RAID的配置和状态,所述各RAID的配置包括所述各RAID的类型,所述各RAID的状态包括:失效状态、正常状态或降级状态;
[0007]所述RAID控制器根据所述各RAID的类型确定所述各RAID的冗余能力,并根据所述各RAID的状态和配置对所述各RAID中硬盘上的固件进行升级,所述各RAID之间并行升级,所述各RAID中能够同时升级的最大硬盘数量不超过所述各RAID的冗余能力。
[0008]结合本发明第一方面,在本发明第一方面的第一种可能的实现方式中,所述RAID控制器根据所述各RAID的状态和冗余能力对所述各RAID中硬盘上的固件进行升级,包括:
[0009]若所述各RAID的状态均为正常状态,则所述RAID控制器根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级;
[0010]若所述各RAID中的部分RAID的状态为失效状态或降级状态,则所述RAID控制器只对所述各RAID中处于正常状态的RAID中硬盘上的固件进行升级。
[0011]结合本发明第一方面,在本发明第一方面的第二种可能的实现方式中,所述RAID控制器根据所述各RAID的状态和冗余能力对所述各RAID中硬盘上的固件进行升级,包括:
[0012]若所述各RAID的状态均为正常状态,则所述RAID控制器根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级;
[0013]若所述各RAID中的部分RAID的状态为失效状态或降级状态,则所述RAID控制器只对所述各RAID中处于正常状态和降级状态的RAID中硬盘上的固件进行升级。
[0014]结合本发明第一方面以及本发明第一方面的第一种和第二种可能的实现方式,在本发明第一方面的第三种可能的实现方式中,所述方法还包括:
[0015]在所述RAID控制器对所述各RAID进行升级的过程中,若需要对正在升级的硬盘写数据,则所述RAID控制器对所述正在升级的硬盘的待写数据进行缓存;
[0016]在所述正在升级的硬盘升级完成之后,所述RAID控制器将缓存的所述待写数据写入所述正在升级的硬盘中;
[0017]或者,在所述RAID控制器对所述各RAID进行升级的过程中,若需要对所述正在升级的硬盘读数据,则所述RAID控制器根据所述正在升级的硬盘的冗余关系,从与所述正在升级的硬盘具有冗余关系的其他硬盘中获取待读取的数据。
[0018]本发明第二方面提供一种存储系统,所述存储系统包括:独立磁盘冗余阵列RAID控制器和多个RAID,所述多个RAID中的各RAID包括多个硬盘,其中,所述RAID控制器包括:
[0019]获取模块,用于获取所述各RAID的配置和状态,所述各RAID的配置包括所述各RAID的类型,所述各RAID的状态包括:失效状态、正常状态或降级状态;
[0020]升级模块,用于根据所述各RAID的类型确定所述各RAID的冗余能力,并根据所述各RAID的状态和配置对所述各RAID中硬盘上的固件进行升级,所述各RAID之间并行升级,所述各RAID中能够同时升级的最大硬盘数量不超过所述各RAID的冗余能力。
[0021]结合本发明第二方面,在本发明第二方面的第一种可能的实现方式中,所述升级模块具体用于:
[0022]若所述各RAID的状态均为正常状态,则根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级;
[0023]若所述各RAID中的部分RAID的状态为失效状态或降级状态,则只对所述各RAID中处于正常状态的RAID中硬盘上的固件进行升级。
[0024]结合本发明第二方面,在本发明第二方面的第二种可能的实现方式中,所述升级模块具体用于:
[0025]若所述各RAID的状态均为正常状态,则根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级;
[0026]若所述各RAID中的部分RAID的状态为失效状态或降级状态,则只对所述各RAID中处于正常状态和降级状态的RAID中硬盘上的固件进行升级。
[0027]结合本发明第二方面以及本发明第二方面的第一种和第二种可能的实现方式,在本发明第二方面的第三种可能的实现方式中,所述升级模块还用于:
[0028]在对所述各RAID进行升级的过程中,若需要对正在升级的硬盘写数据,则对所述正在升级的硬盘的待写数据进行缓存;
[0029]在所述正在升级的硬盘升级完成之后,将缓存的所述待写数据写入所述正在升级的硬盘中;
[0030]或者,在对所述各RAID进行升级的过程中,若需要对所述正在升级的硬盘读数据,则根据所述正在升级的硬盘的冗余关系,从与所述正在升级的硬盘具有冗余关系的其他硬盘中获取待读取的数据。
[0031]本发明实施例提供的硬盘的固件升级方法和存储系统,所述存储系统包括RAID控制器和多个RAID,所述多个RAID中的各RAID包括多个硬盘,RAID控制器通过获取各RAID的配置和状态,根据各RAID的类型确定各RAID的冗余能力,并根据各RAID的状态和配置对各RAID中硬盘上的固件进行升级,其中,RAID控制器在对各RAID进行升级时,各RAID之间并行升级,并且每个RAID内部根据RAID的冗余能力多个硬盘之间并行升级,从而使得多个硬盘之间可以并行升级,缩短了整个存储系统的升级时间,提高了存储系统的固件升级效率。

【专利附图】

【附图说明】
[0032]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0033]图1为本发明实施例适用的一种存储系统的结构示意图;
[0034]图2为本发明实施例一提供的硬盘的固件升级方法的流程图;
[0035]图3为发明实施例二提供的一种存储系统的RAID控制器的结构示意图。

【具体实施方式】
[0036]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0037]本发明实施例提供的硬盘的固件升级方法适用于存储系统中,图1为本发明实施例适用的一种存储系统的结构示意图,如图1所示,该存储系统包括三个独立磁盘冗余阵列(Redundant Array of Independent Disk,简称 RAID)和一个 RAID 控制器,每个 RAID包括多个硬盘,通过把相同的数据存储在同一个RAID的不同硬盘上,通过在多个磁盘上同时存储和读取数据来大幅度提高存储系统的数据吞吐量,同时存储冗余数据也增加了存储系统的容错。RAID控制器用于控制各RAID中的硬盘进行读写操作等。图1所示的只是存储系统的一种结构示意图,在一个存储系统中可以具有更多的RAID和多个RAID控制器,例如,每个RAID组具有一个RAID控制器,同时整个存储系统还具有一个主RAID控制器,用于管理其他RAID控制器。
[0038]图2为本发明实施例一提供的硬盘的固件升级方法的流程图,本实施例提供的方法可以应用于图1所示的存储系统中,请参照图1和图2所示,本实施例的方法可以包括以下步骤:
[0039]步骤101、RAID控制器获取各RAID的配置和状态,各RAID的配置包括各RAID的类型,各RAID的状态包括:失效状态、正常状态或降级状态。
[0040]RAID的配置信息包括:RAID的类型,RAID具有多种类型:例如RAID5、RAID6或RAIDlO等,RAID配置信息还可以包括RIAD内的硬盘数量、各硬盘的标识和槽位号、读策略和写策略等。RAID的状态包括:失效状态、正常状态或降级状态,在失效状态下RAID不可用,降级状态即RAID中的部分硬盘故障,但RAID仍可以用。
[0041 ] 步骤102、RAID控制器根据各RAID的类型确定各RAID的冗余能力,并根据各RAID的状态和配置对各RAID中硬盘上的固件进行升级,各RAID之间并行升级,各RAID中能够同时升级的最大硬盘数量不超过各RAID的冗余能力。
[0042]RAID的冗余能力即RAID在一定数量硬盘故障时仍能够正常工作的硬盘数量,例如,图1中RAID5包括5块硬盘,标识依次为0-4,冗余能力为1,即在一块硬盘故障,RAID5仍能够正常工作,在任意一块硬盘故障时,能通过其他四块硬盘恢复得到故障硬盘的数据。RAID 6包括6块硬盘,标识依次为5-10,冗余能力为2,即在任意两块硬盘故障时,RAID6都能够正常工作。RAIDlO包括6个硬盘,标识依次为11-16,工分为3个镜像组,硬盘11和硬盘12为一个镜像组,硬盘13和硬盘14为一个镜像组,硬盘15和硬盘16为一个镜像组,每个镜像组中两个硬盘上的数据完全相同,当一个镜像组中的任意一个硬盘故障时,另一个硬盘仍能够工作,RAIDlO能够正常工作,但是,同一个镜像组内的两个硬盘都故障,则RAIDlO不能正常工作,因此,RAIDlO的冗余能力等于镜像组的个数,例如,如图1中,硬盘11、13和15都故障后,RAIDlO仍能正常工作。
[0043]本实施例中,RAID控制器在对各RAID升级时,各RAID之间并行进行升级,各RAID组之间互相独立,因此,能够同时对多个硬盘进行升级,提高了存储系统的固件的升级效率。在对每个RAID进行升级时,RAID内的多个硬盘可以一个一个顺序进行升级,也可以根据RAID的冗余能力对RAID内的多个硬盘同时升级,进一步提高存储系统的固件的升级效率。本实施例中,在对RAID进行升级时,为了不影响RAID正常工作,对RAID内部同时升级的最大硬盘数量不超过各RAID的冗余能力。例如,当RAID的类型为RAID 5时,RAID5的冗余能力为1,那么只能一个一个硬盘进行升级。对于RAID6来说,其冗余能力为2,因此,最多能同时对两个硬盘升级。对于RAIDlO来说,其冗余能力为3,因此,最多能同时对三个硬盘进行升级,并且这三个硬盘要分别属于不同的镜像组。在升级过程中,RAID控制器还需要记录当前各RAID中正在升级的硬盘的标识和槽位号,对已经升级完成的硬盘进行标记,在对某个硬盘升级完成后,继续对下一个硬盘进行升级。
[0044]本实施例中,RAID控制器在对各RAID进行升级前,还需要判断各RAID的状态。可选地,若各RAID的状态均为正常状态,则RAID控制器根据各RAID的冗余能力对各RAID中硬盘上的固件进行升级;若各RAID中的部分RAID的状态为失效状态或降级状态,则RAID控制器只对各RAID中处于正常状态的RAID中硬盘上的固件进行升级。可选地,若各RAID的状态均为正常状态,则RAID控制器根据各RAID的冗余能力对各RAID中硬盘上的固件进行升级;若各RAID中的部分RAID的状态为失效状态或降级状态,则RAID控制器只对各RAID中处于正常状态和降级状态的RAID中硬盘上的固件进行升级。
[0045]进一步地,在RAID控制器对各RAID进行升级的过程中,若需要对正在升级的硬盘写数据,则RAID控制器对正在升级的硬盘的待写数据进行缓存;在该正在升级的硬盘升级完成之后,RAID控制器将缓存的待写数据写入该正在升级的硬盘中。具体地,RAID控制器可以将待写数据缓存到存储系统的内存中,或者,将待写数据存储到该正在升级的硬盘所在的RAID中的其他硬盘上。
[0046]或者,在RAID控制器对各RAID进行升级过程中,若需要对该正在升级的硬盘读数据,则RAID控制器通过降级读完成,具体地,RAID控制器根据正在升级的硬盘的冗余关系,从与正在升级的硬盘具有冗余关系的其他硬盘中获取待读取的数据。一种实现方式中,RAID控制器不能直接从其他硬盘中读取到数据,而需要根据读取到的数据计算得到待读取的数据,例如,对于RAID5,若正在对硬盘O升级,那么其他四个硬盘都与该硬盘具有冗余关系,那么RAID控制器可以从其他四个硬盘中读取数据,然后,根据读取到的数据计算得到待读取数据。另一种实现方式中,RAID控制器能够直接从其他硬盘中读取到待读取的数据,例如,对于RAID10,若当前正在对硬盘11升级,硬盘11与硬盘12具有冗余关系,RAID控制器从硬盘12中读取待读取数据。
[0047]当某个硬盘上的固件升级失败且无法启动时,则在新硬盘插入后,利用RAID的冗余关系对该硬盘的数据进行重构,例如,当RAID5中的硬盘O升级失败后,利用RAID1-4中的数据进行数据恢复得到硬盘O中的数据。
[0048]本实施例,RAID控制器通过获取各RAID的配置和状态,根据各RAID的类型确定各RAID的冗余能力,并根据各RAID的状态和配置对各RAID中硬盘上的固件进行升级,其中,RAID控制器在对各RAID进行升级时,各RAID之间并行升级,并且每个RAID内部根据RAID的冗余能力多个硬盘之间并行升级,从而使得多个硬盘之间可以并行升级,缩短了整个存储系统的硬盘固件升级时间,提高了存储系统的硬盘固件升级效率。
[0049]图3为发明实施例二提供的一种存储系统的RAID控制器的结构示意图,如图3所示,本实施例的RAID控制器包括:获取模块21和升级模块22。
[0050]获取模块21,用于获取所述各RAID的配置和状态,所述各RAID的配置包括所述各RAID的类型,所述各RAID的状态包括:失效状态、正常状态或降级状态;
[0051 ] 升级模块22,用于根据所述各RAID的类型确定所述各RAID的冗余能力,并根据所述各RAID的状态和配置对所述各RAID中硬盘上的固件进行升级,所述各RAID之间并行升级,所述各RAID中能够同时升级的最大硬盘数量不超过所述各RAID的冗余能力。
[0052]进一步地,所述升级模块22具体用于:若所述各RAID的状态均为正常状态,则所述RAID控制器根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级;若所述各RAID中的部分RAID的状态为失效状态或降级状态,则所述RAID控制器只对所述各RAID中处于正常状态的RAID中硬盘上的固件进行升级。或者,若所述各RAID的状态均为正常状态,根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级;若所述各RAID中的部分RAID的状态为失效状态或降级状态,则只对所述各RAID中处于正常状态和降级状态的RAID中硬盘上的固件进行升级。
[0053]可选地,所述升级模块22还用于:在对所述各RAID进行升级的过程中,若需要对正在升级的硬盘写数据,则对所述正在升级的硬盘的待写数据进行缓存;在所述正在升级的硬盘升级完成之后,将缓存的所述待写数据写入所述正在升级的硬盘中。或者,在对所述各RAID进行升级的过程中,若需要对所述正在升级的硬盘读数据,则根据所述正在升级的硬盘的冗余关系,从与所述正在升级的硬盘具有冗余关系的其他硬盘中获取待读取的数据。
[0054]本实施例的控制器,可用于执行实施例一的方案,具体实现方式和技术效果类似,这里不再赘述。
[0055]本发明实施例三提供一种存储系统,所述存储系统包括:RAID控制器和多个RAID,所述多个RAID中的各RAID包括多个硬盘。所述RAID控制器的具体结构可参照图3所示的RAID控制器,这里不再赘述。
[0056]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0057]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种硬盘的固件升级方法,所述方法应用于存储系统中,所述存储系统包括独立磁盘冗余阵列RAID控制器和多个RAID,所述多个RAID中的各RAID包括多个硬盘,其特征在于,所述方法包括: 所述RAID控制器获取所述各RAID的配置和状态,所述各RAID的配置包括所述各RAID的类型,所述各RAID的状态包括:失效状态、正常状态或降级状态; 所述RAID控制器根据所述各RAID的类型确定所述各RAID的冗余能力,并根据所述各RAID的状态和配置对所述各RAID中硬盘上的固件进行升级,所述各RAID之间并行升级,所述各RAID中能够同时升级的最大硬盘数量不超过所述各RAID的冗余能力。
2.根据权利要求1所述的方法,其特征在于,所述RAID控制器根据所述各RAID的状态和冗余能力对所述各RAID中硬盘上的固件进行升级,包括: 若所述各RAID的状态均为正常状态,则所述RAID控制器根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级; 若所述各RAID中的部分RAID的状态为失效状态或降级状态,则所述RAID控制器只对所述各RAID中处于正常状态的RAID中硬盘上的固件进行升级。
3.根据权利要求1所述的方法,其特征在于,所述RAID控制器根据所述各RAID的状态和冗余能力对所述各RAID中硬盘上的固件进行升级,包括: 若所述各RAID的状态均为正常状态,则所述RAID控制器根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级; 若所述各RAID中的部分RAID的状态为失效状态或降级状态,则所述RAID控制器只对所述各RAID中处于正常状态和降级状态的RAID中硬盘上的固件进行升级。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括: 在所述RAID控制器对所述各RAID进行升级的过程中,若需要对正在升级的硬盘写数据,则所述RAID控制器对所述正在升级的硬盘的待写数据进行缓存; 在所述正在升级的硬盘升级完成之后,所述RAID控制器将缓存的所述待写数据写入所述正在升级的硬盘中; 或者,在所述RAID控制器对所述各RAID进行升级的过程中,若需要对所述正在升级的硬盘读数据,则所述RAID控制器根据所述正在升级的硬盘的冗余关系,从与所述正在升级的硬盘具有冗余关系的其他硬盘中获取待读取的数据。
5.一种存储系统,所述存储系统包括:独立磁盘冗余阵列RAID控制器和多个RAID,所述多个RAID中的各RAID包括多个硬盘,其特征在于,所述RAID控制器包括: 获取模块,用于获取所述各RAID的配置和状态,所述各RAID的配置包括所述各RAID的类型,所述各RAID的状态包括:失效状态、正常状态或降级状态; 升级模块,用于根据所述各RAID的类型确定所述各RAID的冗余能力,并根据所述各RAID的状态和配置对所述各RAID中硬盘上的固件进行升级,所述各RAID之间并行升级,所述各RAID中能够同时升级的最大硬盘数量不超过所述各RAID的冗余能力。
6.根据权利要求5所述的存储系统,其特征在于,所述升级模块具体用于: 若所述各RAID的状态均为正常状态,则根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级; 若所述各RAID中的部分RAID的状态为失效状态或降级状态,则只对所述各RAID中处于正常状态的RAID中硬盘上的固件进行升级。
7.根据权利要求5所述的存储系统,其特征在于,所述升级模块具体用于: 若所述各RAID的状态均为正常状态,则根据所述各RAID的冗余能力对所述各RAID中硬盘上的固件进行升级; 若所述各RAID中的部分RAID的状态为失效状态或降级状态,则只对所述各RAID中处于正常状态和降级状态的RAID中硬盘上的固件进行升级。
8.根据权利要求5-7中任一项所述的存储系统,其特征在于,所述升级模块还用于: 在对所述各RAID进行升级的过程中,若需要对正在升级的硬盘写数据,则对所述正在升级的硬盘的待写数据进行缓存; 在所述正在升级的硬盘升级完成之后,将缓存的所述待写数据写入所述正在升级的硬盘中; 或者,在对所述各RAID进行升级的过程中,若需要对所述正在升级的硬盘读数据,则根据所述正在升级的硬盘的冗余关系,从与所述正在升级的硬盘具有冗余关系的其他硬盘中获取待读取的数据。
【文档编号】G06F3/06GK104503781SQ201410752072
【公开日】2015年4月8日 申请日期:2014年12月10日 优先权日:2014年12月10日
【发明者】杜宇旻, 徐明军, 霍杰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1