一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种磁盘固件升级方法、计算装置及系统与流程

2022-06-05 16:31:18 来源:中国专利 TAG:


1.本技术实施例涉及固件升级技术领域,尤其涉及一种磁盘固件升级方法、计算装置及系统。


背景技术:

2.独立硬盘冗余阵列(raid,redundant array of independent disks),为磁盘阵列中的一种,主要是利用虚拟化存储技术将多个硬盘组合起来,形成一个或多个硬盘阵列组,具备较高的容错特性,即当部分硬盘发生故障或者数据错误时,raid可以恢复硬盘中的数据,以提高数据的完整性以及可靠性。磁盘阵列中的每个磁盘,通常都有相应的固件,用于支持磁盘存储、传输数据等功能。在部分场景中,可能会存在对磁盘中固件进行升级的需求,比如,增加或者更新磁盘的数据处理功能、修复磁盘中的数据处理漏洞等。
3.目前,在对磁盘中的固件进行升级时,通常是先中断磁盘正在服务的上层业务,并将中断的上层业务由主机迁移至备机上继续运行,然后再将磁盘中的固件升级为新版本固件;固件升级完成后,再中断上层业务,并将该上层业务由备机迁回至主机上继续运行,以便该磁盘基于新版本固件为该上层业务继续提供服务。因此,在升级磁盘中固件的过程中,上层业务会发生中断,影响了上层业务的处理,而且,上层业务迁移需要额外的备机支持,增加了升级磁盘固件的成本。因此,目前亟需一种升级磁盘中固件的方法,以使得磁盘固件在升级过程中,上层业务不被中断。


技术实现要素:

4.本技术实施例提供一种磁盘固件升级方法、计算装置、系统、存储介质以及计算机程序产品,用以实现在不中断上层业务的情况下实现磁盘固件的升级。
5.第一方面,本技术实施例提供一种磁盘固件升级方法,可以应用于磁盘阵列,例如可以是应用于磁盘阵列中的控制器等,磁盘阵列包括第一磁盘以及第二磁盘,磁盘阵列(具体可以是磁盘阵列控制器)可以接收主机发送的读数据命令,该读数据命令用于指示读取第一目标数据,此时,磁盘阵列可以确定第一目标数据所在的第一磁盘是否处于固件升级状态,若确定第一磁盘为正在进行固件升级的磁盘,则可以根据第二磁盘上的数据,生成第一目标数据,而无需尝试从第一磁盘上读取数据,最后,磁盘阵列可以将生成的第一目标数据再发送给主机。
6.由于在第一磁盘进行固件升级的过程,主机上的上层业务仍然可以读取到其所需的目标数据,从而可以避免因为磁盘固件升级而导致上层业务中断。同时,磁盘阵列因为能够确定第一磁盘正处于固件升级并且其无法支持数据的读写,因此,磁盘阵列无需通过从第一磁盘或者其它存储区域中尝试读取数据的方式来确定磁盘是否进行固件升级并在读取数据失败后再生成目标数据,从而可以提高磁盘阵列获取目标数据的效率,也即可以提高磁盘阵列向上层业务反馈目标数据的效率。
7.在一种可能的实施方式中,磁盘阵列在确定第一磁盘是否为正在进行固件升级的
磁盘时,具体可以是获取第一磁盘对应的升级指示信息,该升级指示信息用于指示磁盘的固件升级状态(如正在升级状态与未升级状态等),从而磁盘阵列可以根据该升级指示信息确定第一磁盘是否进行固件升级。如此,磁盘阵列每次在读取磁盘数据时,可以通过升级指示信息来确定磁盘是否升级,而无需通过尝试从缓冲区或者其它存储区域中是否读取数据来确定磁盘是否升级。
8.在一种可能的实施方式中,升级指示信息具体可以是升级标志位。例如,可以将第一磁盘上的特定存储区域存储的值,作为升级标志位,从而当第一磁盘处于固件升级状态时,该特定存储区域存储的值可以为1,而当第一磁盘未进行固件升级时,该特定存储区域存储的值可以为0等。当然,实际应用中,该升级指示信息也可以是通过其它方式进行实现等。
9.在一种可能的实施方式中,磁盘阵列在确定第一磁盘处于固件升级状态时,可以将第一磁盘对应的升级标志位的取值设置为第一预设值(如为1等非零值),以指示第一磁盘处于固件升级状态;而在确定第一磁盘的固件升级结束后,可以将第一磁盘对应的升级标志位的取值设置成第二预设值(如为0等),以指示第一磁盘固件升级结束。实际应用时,每个磁盘均可以具有对应的升级标志位,以便于磁盘阵列可以根据各个磁盘分别对应的升级标志位确定磁盘是否进行固件升级。
10.在一种可能的实施方式中,磁盘阵列可以与基板管理控制器(bmc)连接,这样,磁盘阵列可以接收主机通过bmc发送的新版本固件,该新版本固件也即为第一磁盘升级后的固件。这样,主机与磁盘阵列在升级磁盘固件过程中所需进行的交互,可以由主机中的bmc与磁盘阵列中的控制器完成,从而无需占用主机中cpu的处理资源,从而可以因为避免升级磁盘固件而降低了主机对于上层业务的处理质量。进一步的,磁盘阵列所接收到的升级磁盘固件的命令、读/写数据命令也可以是由bmc发送给磁盘阵列。
11.在一种可能的实施方式中,磁盘阵列与bmc之间通过管理组件传输协议(mctp协议)、外设部件互连标准总线(pci总线)或快捷外设部件互连标准总线(pcie总线)连接。如此,可以使得主机与磁盘阵列之间的数据通信效率较高。
12.在一种可能的实施方式中,磁盘阵列为具有校验冗余机制的磁盘阵列,如raid5、raid5e、raid6等,这种磁盘阵列还包括第三磁盘(当然,也可以包括更多其它的磁盘)。则,磁盘阵列在生成第一目标数据时,具体可以是根据第二磁盘以及第三磁盘上存储的数据,计算出需要读取的第一磁盘上的第一目标数据,如通过奇偶校验的方式计算出第一磁盘上第一目标数据中的每位数值。
13.在一种可能的实施方式中,磁盘阵列还可以接收主机发送的写数据命令以及待写入数据,并对该写数据命令进行解析,确定将待写入数据中的第二目标数据写入第一磁盘。由于第一磁盘在进行固件升级时无法支持数据写入,因此,磁盘阵列在确定第一磁盘处于固件升级状态时,将待写入数据中的第二目标数据写入磁盘阵列的预设存储区域。如此,对于主机而言,已经完成待写入数据的写入,从而避免主机上承载的上层业务因为数据写入失败而导致上层业务发生中断。
14.在一种可能的实施方式中,磁盘阵列还可以根据待写入数据中的第二目标数据生成第三目标数据,并将该第三目标数据写入第二磁盘。例如,在raid1等磁盘阵列中,第三目标数据可以是第二目标数据的备份;又比如,在raid5等磁盘阵列中,该第三目标数据可以
是基于第二目标数据以及其它磁盘(非第二磁盘)上的数据所生成的校验数据。然后,磁盘阵列控制器可以将基于第二目标数据所生成的第三目标数据发送至第二磁盘进行存储。
15.在一种可能的实施方式中,由于第一磁盘在完成固件升级并启动新版本固件后,第一磁盘能够支持数据的读写,因此,对于在预设存储区域中存储的第二目标数据,磁盘阵列可以在确定第一磁盘的固件升级结束后(包括确定固件升级完成的时刻及其后续时刻),将预设存储区域中的第二目标数据写入第一磁盘,以完成最终的数据写入。
16.第二方面,基于与第一方面的方法实施例同样的发明构思,本技术实施例提供了一种计算装置。该装置具有实现上述第一方面的各实施方式对应的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
17.第三方面,本技术实施例提供了一种磁盘固件升级系统,包括:上述第一方面的各实施方式所描述的磁盘阵列以及主机,其中磁盘阵列所执行的功能如上述第一方面所述,主机所执行的功能例如可以是向磁盘阵列发送读/写数据命令、升级命令以及新版本固件等。
18.第四方面,本技术实施例提供一种计算装置,包括:处理器和存储器;该存储器用于存储指令,当该计算装置运行时,该处理器执行该存储器存储的该指令,以使该装置执行上述第一方面或第一方面的任一实现方式中的磁盘固件升级方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。装置还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
19.第五方面,本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有程序或指令,当其在计算机上运行时,使得上述第一方面或第一方面的任一实现方式中的磁盘固件升级方法被执行。
20.第六方面,本技术实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一实现方式中的任意磁盘固件升级方法。
21.另外,第二方面至六方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,或者可参见第二方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
22.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
23.图1为本技术实施例中一示例性磁盘阵列示意图;
24.图2为本技术实施例中一种磁盘固件升级方法的流程示意图;
25.图3为本技术实施例中磁盘固件升级系统的架构示意图;
26.图4为本技术实施例中又一示例性磁盘阵列示意图;
27.图5为本技术实施例中一种计算装置的结构示意图;
28.图6为本技术实施例中又一种计算装置的硬件结构示意图。
具体实施方式
29.在raid1、raid5、raid5e以及raid6等具有冗余机制的磁盘阵列中,通常包括至少两个磁盘。其中,对于raid5这种具有数据校验功能的磁盘阵列,该磁盘阵列在存储数据时,通常是将连续的数据分割成大小相同的多个数据块,并将每段数据分别写入磁盘阵列的不同磁盘上,该连续的多段数据,可以称之为磁盘阵列中的条带,如图1所示的条带1、条带2以及条带3(连续数据被分割成大小相同的2个数据块)。同时,每个条带还包括一段校验数据,该校验数据与条带中的其它分段数据存储于磁盘阵列的不同磁盘。这样,当磁盘阵列中的任意一个磁盘上的数据发生异常时,可以利用其余磁盘上的数据按照预设的校验算法对该磁盘上的异常数据进行校正。或者,当任意一个磁盘发生故障(如硬盘损坏等)而被替换成新磁盘时,可以利用其余磁盘上的数据对该新磁盘进行数据重建,以使得磁盘阵列能够恢复成故障磁盘发生故障之前的数据。
30.举例来说,如图1所示,对于条带1,其包括数据块a1、数据块a2以及校验数据a3,分别存储于该磁盘阵列中的磁盘1、磁盘2以及磁盘3。
31.当磁盘1发生损坏,如发生硬盘坏道等,可以利用新磁盘来更换损坏的磁盘1。由于该新磁盘上通常未存储有数据,因此,磁盘阵列可以利用磁盘2上的数据块a2以及磁盘3上的校验数据a3,通过纠删码(erasure coding,ec)机制对新磁盘上的条带1数据进行重建。具体实现时,由于条带1中的数据满足奇偶校验公式(1),因此,可以通过异或运算计算出新磁盘上条带1上的数据。示例性的,奇偶校验公式(1)具体如下所示:
32.p=d1xor d2xor d3…
xor dnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
33.其中,d1至dn分别为第1个磁盘至第n个磁盘上存储的数据块(在上述示例中n的值为2),p为第n 1个磁盘上存储的校验信息,xor为异或运算。
34.由于条带1中数据块a1中的第一位数据、数据块a2中的第一位数据以及校验数据a3中的第一位数据满足下表1其中一行的异或关系:
35.表1
36.a1值a2值a3值(xor结果)000101011110
37.因此,在对新磁盘中条带1中的第一位数据进行重建时,可以根据该条带1中在磁盘2的第一位数值以及在磁盘3中的第一位数值,反算出该条带1在新磁盘的第一位数值。比如,假设条带1中在磁盘2的第一位数值为1,条带1在磁盘3中的第一位数据为0,则基于上述异或运算过程可以确定条带1在新磁盘的第一位数据为1。类似的,参照上述过程,可以根据磁盘2以及磁盘3中的数据,计算出条带1在新磁盘上的所有数据。如此,可以计算出新磁盘上条带1至条带3的所有数据,从而使得新磁盘上的数据与磁盘1发生故障之前的所存储的数据一致,完成新磁盘的数据重建过程。当然,对于raid1等具有冗余机制的磁盘阵列,当其中一个磁盘上的数据发生异常或者在该磁盘发生故障而对替换的新磁盘进行数据重建时,也可以是利用该磁盘阵列的另一个磁盘上的数据对更换的新磁盘进行数据重建。
38.实际应用中,上述磁盘阵列中各个磁盘的固件,可能存在固件升级的需求,而处于
固件升级状态的磁盘,通常无法响应对于该磁盘上数据的读操作,这使得当上层业务需要读取该磁盘上的数据时,难以及时读取到该磁盘上的数据,从而造成上层业务因为数据读取失败而发生中断,影响上层业务的处理。
39.基于此,本技术实施例提供了一种磁盘固件升级方法,在磁盘阵列中的第一磁盘进行固件升级的过程中,磁盘阵列可以根据接收到的读数据命令确定(主机上的)上层业务需要读取的第一磁盘上的目标数据,此时,可以直接根据该磁盘阵列中的其它磁盘上的数据生成目标数据,比如通过上述奇偶校验公式计算出目标数据等,并将生成的目标数据返回给上层业务。如此,在第一磁盘进行固件升级的过程,上层业务仍然可以读取到其所需的目标数据,从而可以避免因为磁盘固件升级而导致上层业务中断。同时,磁盘阵列因为能够确定第一磁盘正处于固件升级而无法支持数据的读写,因此,磁盘阵列无需通过从第一磁盘或者其它存储区域中尝试读取数据的方式来确定磁盘是否进行固件升级并在读取数据失败后再生成目标数据,从而可以提高磁盘阵列获取目标数据的效率,也即可以提高向上层业务反馈目标数据的效率。
40.为使本技术的上述目的、特征和优点能够更加明显易懂,下面将结合附图对本技术实施例中的各种非限定性实施方式进行示例性说明。显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
41.如图2所示,为本技术实施例中一种磁盘固件升级方法的流程示意图,该方法可以应用于磁盘阵列中的控制器中,或者作为独立的设备与磁盘阵列进行连接,并控制磁盘阵列的磁盘固件升级过程。其中,磁盘阵列可以包括两个或者两个以上的磁盘,为便于描述,以下以磁盘阵列包括第一磁盘、第二磁盘为例进行示例性说明,并由磁盘阵列中的控制器执行下述磁盘固件升级方法的过程,相应的,当磁盘包括三个及其以上的磁盘时,可以参照类似过程实现。该方法具体可以是包括:
42.s210:磁盘阵列控制器接收主机发送的第一磁盘对应的新版本固件。
43.其中,第一磁盘对应的新版本固件,即为第一磁盘完成升级后的固件。
44.如图3所示,磁盘阵列可以与主机连接,例如可以是通过通用串行总线(universal serial bus,usb)、外设部件互连标准(peripheral component interconnect,pci)总线、快捷外设部件互连标准(peripheral component interconnect express,pcie)总线等进行有线连接;在其它示例中,磁盘阵列也可以与主机通过无线进行连接等。主机上可以具有承载有上层业务,并且上层业务在运行过程中,可以通过主机与磁盘阵列之间的连接,读取磁盘阵列中存储的数据,或者向磁盘阵列中写入数据等。
45.其中,磁盘阵列可以包括磁盘阵列控制器以及多个磁盘(图3中以包括磁盘1、磁盘2以及磁盘3三个磁盘为例)。并且,每个磁盘具有相应的磁盘控制器以及存储介质,磁盘控制器中可以包括固件,该固件用于实现数据在磁盘上的读写等操作,存储介质用于存储数据。
46.实际应用的一些场景中,可能需要对磁盘阵列中的磁盘固件进行升级(如磁盘阵列进行周期性的固件维护升级,或者基于用户指定的配置操作升级磁盘固件等),此时,主机可以通过上述有线或者无线连接向磁盘阵列控制器提供新版本固件。
47.在一种可能的实施方式中,在对磁盘阵列中的磁盘固件进行升级时,主机中的处
理器(如cpu等)可以将新版本的固件通过pcie总线(也可以是其它总线)连接发送给磁盘阵列控制器,例如可以是向磁盘阵列控制器中一个或者多个写入缓冲区命令(write buffer command),每个写入缓冲区命令中可以包含全部或者部分新版本固件的信息,并从该写入缓冲区命令中解析出其携带的新版本固件的信息,如根据该写入缓冲区命令中的“download microcode with offsets”字段解析出该命令所携带的新版本固件信息。其中,当主机向磁盘阵列控制器发送多个写入缓冲区命令时,每个缓冲区命令中包含新版本固件的一部分信息,从而磁盘阵列控制器可以从多个写入缓冲区命令中解析出新版本固件的各个部分,从而基于各个部分拼接得到完整的新版本固件。新版本固件可以被缓存至磁盘阵列控制器中的缓冲区中,如flash存储器(也可称之为闪存)等。然后,磁盘阵列控制器再将缓冲区中的新版本固件下发至相应磁盘中进行固件升级。其中,当主机对磁盘阵列中的所有磁盘进行固件升级时,磁盘阵列控制器可以将该新版本固件逐个发送给各个磁盘,并且可以在确定上一个磁盘成功完成固件升级后,将新版本固件下发给下一个磁盘。而当主机对磁盘阵列中的部分磁盘进行固件升级时,主机中的cpu向磁盘阵列控制器发送新版本固件的同时,还可以向该磁盘阵列控制器发送磁盘指示信息,该磁盘指示信息可以用于指示对磁盘阵列中的部分磁盘进行固件升级,从而磁盘阵列控制器可以根据该磁盘指示信息将新版本固件下发给相应的部分磁盘。
48.实际应用时,由于主机上承载有上层业务,并且该上层业务通常由主机中的cpu执行。此时,若主机中的cpu在处理上层业务的同时,还向磁盘阵列控制器发送新版本固件(被携带于write buffer command中),则磁盘固件升级会占用cpu的部分计算资源,从而影响主机cpu对于上层业务的处理质量(如计算效率降低等)。
49.因此,在另一种可能的实施方式中,可以由主机中的基板管理控制器(baseboard management controller,bmc)向磁盘阵列控制器发送新版本固件(被携带于write buffer command中)。其中,bmc作为主机中独立的小型操作系统,可以单独管理磁盘阵列中的固件升级事物,这使得主机与磁盘阵列在升级磁盘固件过程中所需进行的交互,可以由主机中的bmc与磁盘阵列中的控制器完成,从而无需占用主机中cpu的处理资源,从而可以因为避免升级磁盘固件而降低了主机对于上层业务的处理质量。
50.如图3所示的磁盘固件升级系统,bmc可以通过pci总线、pcie总线或者管理组件传输协议(management component transport protocol,mctp)总线与磁盘阵列控制器交互数据。实际应用中,bmc与cpu之间可以通过平台路径控制器(platform controller hub,pch)进行通信。此时,bmc与pch之间可以通过少引脚型(low pin count,lpc)接口进行通信,而pch与cpu通过直接媒体接口(direct media interface,dmi)进行通信。当然,此处仅作为一种示例,并不用于限定其具体实现局限于该示例。
51.s220:磁盘阵列控制器将新版本固件下发至第一磁盘,并控制第一磁盘的固件更新为新版本固件。
52.示例性的,磁盘阵列控制器在将新版本固件下发至第一磁盘的同时,还可以向第一磁盘中的控制器发送升级命令,以指示第一磁盘的控制器利用该新版本固件对已有固件进行升级。这样,第一磁盘可以先将新版本固件缓存至相应存储区域,并基于磁盘阵列控制器发送的升级固件的命令,将第一磁盘中的已有固件升级为新版本固件,并在升级完成后,启动并运行新版本固件。
53.其中,磁盘阵列控制器可以解析接收到的write buffer command中特定位置处的命令字(如“activate”字段等),该命令字指示了当前需要进行固件升级的磁盘,即第一磁盘,如此,磁盘阵列控制器可以通过解析命令中的相应字段直接确定当前是对哪个磁盘进行固件升级,无需通过尝试是否能够读取到磁盘上数据的方式来确定当前正在升级的磁盘,从而可以提高固件升级效率。
54.本实施例中,可以利用升级指示信息来记录各个磁盘是否处于固件升级状态。比如,当第一磁盘进行固件升级时,磁盘阵列控制器可以对该升级指示信息进行设置,以使得升级指示信息能够指示第一磁盘当前正处于固件升级状态,而当第一磁盘未进行固件升级时,升级指示信息可以用于指示第一磁盘未处于固件升级状态。
55.作为一种示例,该升级指示信息具体可以是升级标志位,从而可以利用升级标志位的取值来指示第一磁盘是否处于固件升级状态。例如,当第一磁盘对应的升级标志位的取值为1时,可以指示该第一磁盘的固件正在进行升级,而当该升级标志位的取值为0时,可以指示该第一磁盘未处于固件升级状态(包括固件升级结束)。实际应用中,当第一磁盘处于固件升级状态时,磁盘阵列控制器可以将该第一磁盘对应的升级标志位的取值设置成第一预设值(如取值为1等),以指示第一磁盘当前正处于固件升级状态;而在固件升级结束后(包括确定固件升级结束的时刻以及该时刻的后续时刻),磁盘阵列控制器再将该升级标志位的取值设置为第二预设值(如取值为0等),以指示第一磁盘固件升级结束。
56.示例性的,磁盘阵列控制器可以将第一磁盘上预设位置处的存储区域,配置成该第一磁盘对应的升级标志位;或者,可以是在磁盘阵列控制器的缓存区域中创建相应的存储区域,用于存储第一磁盘以及其它磁盘分别对应的升级标志位。当然,实际应用中,磁盘阵列控制器配置磁盘阵列中各个磁盘对应的升级标志位的具体实现并不局限上述示例。
57.另外,升级指示信息并不局限于上述升级标志位,也可以是基于其它方式进行实现,比如,该升级指示信息也可以是存储于磁盘阵列控制器的缓冲区存储的标识信息等。
58.s230:磁盘阵列控制器接收读数据命令,该读数据命令用于指示读取第一目标数据。
59.应当理解,在磁盘阵列升级磁盘固件的过程中,主机承载的上层业务可能会存在读取磁盘阵列中存储数据的需求。此时,主机可以基于其需求向磁盘阵列发送读数据命令,以指示磁盘阵列反馈相应的数据。其中,该读数据命令指示了针对于磁盘数据的读操作以及在磁盘上读取哪些数据本实施例中,是以主机将读数据命令发送给磁盘阵列为例,而在其它可能的实施例中,也可以是由与磁盘阵列连接的其它设备发送给该磁盘阵列等。
60.在接收到读数据命令后,磁盘阵列控制器可以对其进行解析,以确定该读数据命令所指示的针对于磁盘的处理操作为读取数据的操作、所要读取的第一目标数据以及该第一目标数据对应的第一磁盘(如第一磁盘为第一目标数据所在的磁盘)。
61.例如,磁盘阵列控制器接收到的读数据命令的伪代码可以是:“0x08,数据长度16k,起始地址为0”(假设磁盘中每个数据块的分块大小为2k),其中,“0x08”用于指示该命令是针对于磁盘中数据的读命令,“数据长度16k”用于指示在磁盘阵列中读取16k大小的数据,“起始地址为0”用于指示从磁盘阵列中的起始地址0处开始读取数据。然后,磁盘阵列控制器通过对读数据命令进行解析,在确定出该命令所指示的操作为读操作以及从起始地址为0处读取16k大小的数据后,可以进一步确定该16k大小数据中的哪些数据位于第一磁盘。
假设磁盘阵列如图4所示,包括磁盘1至磁盘4四个磁盘,并且磁盘阵列的起始存储地址位于磁盘1(为第一磁盘)上,则读取的16k数据即为数据块0至数据块7中的数据,如图4阴影区域所示。其中,图4所示的数据块“p”表征该数据块用于存储校验信息。这样,磁盘阵列控制器通过对该读数据命令进行解析,可以进一步确定需要在磁盘上1上读取的第一目标数据包括数据块0、数据块3以及数据块6中的数据。
62.当然,在其它可能的实施方式中,磁盘阵列所接收到的读数据命令中也可能携带了第一目标数据所在磁盘的指示信息,这样,磁盘阵列从该读数据命令携带的字段中即可获知第一目标数据位于第一磁盘。
63.s240:磁盘阵列控制器确定第一目标数据所在的第一磁盘处于固件升级状态。
64.在确定是要读取第一磁盘上的第一目标数据后,磁盘阵列控制器可以判断当前所要读取数据的第一磁盘是否处于正在升级状态。示例性的,磁盘阵列控制器在读取第一磁盘上的第一目标数据之前,可以先读取第一磁盘对应的升级标志位,并根据该升级标志位的取值确定第一磁盘是否处于升级状态。当该升级标志位的取值设置为第二预设值时,表征第一磁盘未处于升级状态,此时,磁盘阵列控制器可以直接从该第一磁盘上读取第一目标数据。而当升级标志位的取值为第一预设值时,表明第一磁盘正在进行磁盘固件升级,此时,第一磁盘的磁盘控制器无法执行对于磁盘数据的读写等操作,因此,磁盘阵列控制器难以直接从第一磁盘上读取到第一目标数据。为此,本实施例中,可以继续执行步骤s250,以获取上层业务所需的第一目标数据。
65.s250:磁盘阵列控制器根据第二磁盘上的数据,生成第一目标数据。
66.本实施例中,磁盘阵列至少具有冗余机制,这样,即使第一磁盘上的第一目标数据不可读,磁盘阵列也可以是根据该磁盘阵列中的其它磁盘上的数据,获得其所需的第一目标数据。
67.示例性的,当磁盘阵列中包括两个磁盘时,第二磁盘可以是第一磁盘的备份,此时,磁盘阵列控制器可以从第二磁盘上读取第一目标数据,由于第二磁盘当前未进行固件升级,因此,第二磁盘上的磁盘控制器将其上存储的第一目标数据返回给磁盘阵列控制器。
68.而当磁盘阵列中包括三个或者三个以上磁盘时,此处以其包括第一磁盘、第二磁盘以及第三磁盘为例(当其包括四个及其以上的磁盘时可参照理解),磁盘阵列为具有校验冗余机智的磁盘阵列。虽然磁盘阵列控制器难以读取第一磁盘上的第一目标数据,但是,磁盘阵列控制器可以从第二磁盘以及第三磁盘上读取与第一磁盘上的第一目标数据属于同一条带的其它数据(包括数据块以及校验信息),并根据在第二磁盘以及第三磁盘上读取到的数据,通过奇偶校验机制计算出第一磁盘上的第一目标数据。仍以图4所示的磁盘阵列为例,在读取第一磁盘(即磁盘1)的数据块0中的数据时,可以根据磁盘2的数据块1、磁盘3的数据块2以及磁盘3的数据块p,通过ec机制计算出数据块0中的数据,类似的,可以根据磁盘2的数据块4、磁盘3的数据块p以及磁盘4的数据块5,通过ec机制计算出磁盘1上数据块3中的数据;根据磁盘2的数据块p、磁盘3的数据块7以及磁盘4的数据块8计算出磁盘1上数据块6中的数据。
69.其中,根据其它磁盘上的数据,通过奇偶校验公式(1)计算出第一磁盘上的数据的具体实现,可参见前述相关部分的描述,在此不做赘述。
70.值得注意的是,由于磁盘阵列控制器并非是先从第一磁盘或者相应缓存区中尝试
是否能够读取到该第一目标数据,并在读取不到第一目标数据的情况下再生成第一目标数据,而是根据接收到的读数据命令直接生成第一目标数据,因此,磁盘阵列控制器获取第一目标数据的效率可以得到提高,从而可以进一步提高磁盘阵列向上层业务反馈第一目标数据的效率。
71.s260:磁盘阵列控制器向主机发送该第一目标数据。
72.磁盘阵列在获取到第一磁盘上的第一目标数据后,可以将获取到的第一目标数据发送给主机。这样,主机承载的上层业务即可获取到其所需的第一目标数据,从而使得上层业务不会因为无法获取到第一磁盘上的第一目标数据而导致业务中断。
73.实际应用中,主机可能不仅会读取磁盘阵列中的数据,还可能会向磁盘阵列中写入数据。因此,在进一步可能的实施方式中,主机可以向磁盘阵列控制器发送写数据命令以及待写入数据,此时,磁盘阵列可以先对接收到的写数据命令进行解析,以确定是要将待写入数据中的第二目标数据写入第一磁盘。当确定该待写入数据写入第一磁盘并且第一磁盘处于固件升级状态时,由于第一磁盘暂时难以支持数据写入,因此,磁盘阵列控制器可以将该待写入数据中的写入磁盘阵列的预设存储区域(如磁盘阵列控制器的内存等),以避免该待写入数据因为长时间无法写入第一磁盘而导致整个数据写入过程超时或发生数据写入失败。这样,当第一磁盘中的固件完成升级并且新版本固件启动运行时,第一磁盘恢复了数据读写能力,此时,磁盘阵列控制器可以将预设存储区域中缓存的第二目标数据写入第一磁盘的相应存储区域,从而完成数据写入过程。对于主机而言,其在将数据成功发送给磁盘阵列控制器时,可以认定数据已经成功写入磁盘阵列,从而可以继续处理上层业务,以避免上层业务因为数据写入不成功而导致业务中断。
74.另外,当待写入数据还包括其它数据,如需要写入第二磁盘的第三目标数据时,由于第二磁盘在第一磁盘进行固件升级的过程中并未进行固件升级,因此,磁盘阵列控制器可以将第三目标数据发送给第二磁盘中进行存储。当然,磁盘阵列控制器也可以是根据第二目标数据生成第三目标数据。比如,在raid1等磁盘阵列中,该第三目标数据为第二目标数据的备份;又比如,在raid5等磁盘阵列中,该第三目标数据可以是基于第二目标数据以及其它磁盘(非第二磁盘)上的数据所生成的校验数据。然后,磁盘阵列控制器可以将基于第二目标数据所生成的第三目标数据发送至第二磁盘进行存储。
75.示例性的,主机向磁盘阵列控制器发送的写数据命令的伪代码可以是“0x0a,数据长度16k,起始地址为0”,其中,“0x0a”用于指示该命令为写入数据的命令,“数据长度16k”用于指示待写入数据的长度为16k大小,“起始地址为0”用于指示磁盘阵列中写入数据的起始位置。以图4所示的磁盘阵列为例,当向该磁盘阵列写入16k大小的数据时,需要写入磁盘1(第一磁盘)中的数据为数据块0、数据块3以及数据块6的数据。则,对于写入磁盘1上数据块0、数据块3以及数据块6的第二目标数据(6k数据大小),磁盘阵列控制器可以先将其缓存至磁盘阵列控制器的内存,而将16k数据中剩余的第三目标数据(10k数据大小)分别写入相应的磁盘2、磁盘3以及磁盘4中。
76.在其它可能的示例中,上述预设存储区域也可以是除正在升级的磁盘之外的其它磁盘。即,磁盘阵列控制器可以在第一磁盘升级固件的过程中,将需要写入第一磁盘中的第二目标数据先写入第二磁盘,从而在第一磁盘完成固件升级后,再将写入第二磁盘中的第二目标数据再写回第一磁盘,其中,可以是在完成固件升级的时刻开始将第二目标数写入
第一磁盘,也可以是在固件升级结束时刻之后经过预设时长再将第二目标数据写入第一磁盘。在其它示例中,该预设存储区域也可以是与磁盘阵列连接的其它存储设备等,本实施例对于预设存储区域的具体实现方式并不进行限定。
77.基于上述过程,可以在第一磁盘进行固件升级过程中,支持上层业务对于第一磁盘上数据的读取和写入,从而避免第一磁盘进行固件升级而导致上层业务发生中断。当第一磁盘完成固件升级后,磁盘阵列控制器可以对下一磁盘(比如第二磁盘)进行固件升级,若第二磁盘在固件升级过程中存在上层业务的读写数据需求,则磁盘阵列控制器可以参照上述过程对读取和写入第二磁盘的数据进行相应处理,以使得避免第二磁盘进行固件升级而导致上层业务发生中断。如此,在不中断上层业务的情况下,可以实现对磁盘阵列中的各个磁盘固件进行升级。
78.上文中结合图1至图4,详细描述了本技术所提供的代码处理方法,下面将结合图,5至图6,描述根据本技术所提供的计算装置。
79.与上述方法同样的发明构思,本技术实施例还提供一种计算装置,该计算装置可以实现上述图2所示的实施例中磁盘阵列控制器的功能。参见图5所示,该计算装置500可以应用于磁盘阵列,该磁盘阵列包括第一磁盘以及第二磁盘,该计算装置500可以包括:
80.传输模块501,用于接收读数据命令,所述读数据命令用于指示读取第一目标数据;
81.确定模块502,用于确定所述第一目标数据对应的第一磁盘处于固件升级状态;
82.生成模块503,用于根据所述第二磁盘上的数据,生成所述第一目标数据;
83.所述传输模块501,还用于向主机发送所述第一目标数据。
84.在一种可能的实施方式中,所述确定模块502,具体用于:
85.获取所述第一磁盘对应的升级指示信息;
86.根据所述升级指示信息确定所述第一磁盘处于固件升级状态。
87.在一种可能的实施方式中,所述升级指示信息包括升级标志位。
88.在一种可能的实施方式中,所述计算装置500还包括设置模块504,所述设置模块504具体用于:
89.当所述第一磁盘处于固件升级状态时,将所述第一磁盘对应的升级标志位的取值设置成第一预设值,以指示所述第一磁盘处于固件升级状态;
90.当所述第一磁盘的固件升级结束后,将所述升级标志位的取值设置成第二预设值,以指示所述第一磁盘固件升级结束。
91.在一种可能的实施方式中,所述磁盘阵列与基板管理控制器bmc连接,所述传输模块501,还用于接收来自所述bmc的新版本固件,所述新版本固件为所述第一磁盘升级后的固件。
92.在一种可能的实施方式中,所述磁盘阵列与所述bmc通过管理组件传输协议mctp、外设部件互连标准pci总线或快捷外设部件互连标准pcie总线连接。
93.在一种可能的实施方式中,所述磁盘阵列为具有校验冗余机制的磁盘阵列,所述磁盘阵列还包括第三磁盘;
94.所述确定模块502,具体用于根据所述第二磁盘以及所述第三磁盘上的数据,计算出所述第一目标数据。
95.在一种可能的实施方式中,所述传输模块501,还用于:
96.接收写数据命令以及待写入数据;
97.对所述写数据命令进行解析,确定将所述待写入数据中的第二目标数据写入所述第一磁盘;
98.当所述第一磁盘处于固件升级状态时,将所述待写入数据中的第二目标数据写入所述磁盘阵列的预设存储区域。
99.在一种可能的实施方式中,所述生成模块503,还用于:
100.根据所述第二目标数据生成第三目标数据;
101.将所述第三目标数据写入所述第二磁盘。
102.在一种可能的实施方式中,所述传输模块501,还用于当所述第一磁盘的固件升级结束后,将所述预设存储区域中的第二目标数据写入所述第一磁盘。
103.本实施例中的计算装置500,对应于图2所示的磁盘固件升级方法,因此,对于本实施例计算装置500中各个功能模块的具体实现及其所具有的技术效果,可以参见图2所示实施例中的相关之处描述,在此不做赘述。
104.此外,本技术实施例还提供一种计算装置,如图6所示,装置600中可以包括通信接口610、处理器620。可选的,装置600中还可以包括存储器630。其中,存储器630可以设置于装置600内部,还可以设置于装置600外部。示例性地,上述图2所示实施例中各个动作均可以由处理器620实现。处理器620可以通过通信接口610接收读数据命令以及发送目标数据,并用于实现图2中所执行的任一方法。在实现过程中,处理流程的各步骤可以通过处理器620中的硬件的集成逻辑电路或者软件形式的指令完成图2中执行的方法。为了简洁,在此不再赘述。处理器620用于实现上述方法所执行的程序代码可以存储在存储器630中。存储器630和处理器620连接,如耦合连接等。
105.本技术实施例的一些特征可以由处理器620执行存储器630中的程序指令或者软件代码来完成/支持。存储器630上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图6所示的确定模块502、生成模块503以及设置模块504。而传输模块501的功能可以由通信接口610实现。
106.本技术实施例中涉及到的任一通信接口可以是电路、总线、收发器或者其它任意可以用于进行信息交互的装置。比如计算装置600中的通信接口610,示例性地,该其它装置可以是与该计算装置600相连的设备,比如,可以是发送读数据命令或者写数据命令的主机等。
107.本技术实施例中涉及的处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
108.本技术实施例中的耦合是装置、模块或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、模块或模块之间的信息交互。
109.处理器可能和存储器协同操作。存储器可以是非易失性存储器,比如硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd)等,还可以是易失性存储器
(volatile memory),例如随机存取存储器(random-access memory,ram)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
110.本技术实施例中不限定上述通信接口、处理器以及存储器之间的具体连接介质。比如存储器、处理器以及通信接口之间可以通过总线连接。所述总线可以分为地址总线、数据总线、控制总线等。
111.基于以上实施例,本技术实施例还提供了一种磁盘阵列固件升级系统,包括上述磁盘阵列以及主机。主机向磁盘阵列发送读数据命令、写数据命令或者新版本固件,同时,还可以接收磁盘阵列反馈的目标数据,而磁盘阵列可以基于主机发送的数据进行执行相应的读数据、写数据以及固件升级过程。具体可详见上述实施例的相关之处描述,在此不做赘述。
112.基于以上实施例,本技术实施例还提供了一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现上述任意一个或多个实施例提供磁盘阵列(如磁盘阵列控制器等)执行的方法。所述计算机存储介质可以包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
113.基于以上实施例,本技术实施例还提供了一种芯片,该芯片包括处理器,用于实现上述实施例所涉及的磁盘阵列(具体可以是磁盘阵列控制器)的功能,例如用于实现图2中磁盘阵列所执行的方法。可选地,所述芯片还包括存储器,所述存储器,用于处理器所执行必要的程序指令和数据。该芯片,可以由芯片构成,也可以包含芯片和其他分立器件。
114.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
115.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
116.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
117.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
118.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。
119.显然,本领域的技术人员可以对本技术实施例进行各种改动和变型而不脱离本技术实施例的范围。这样,倘若本技术实施例的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献