CN117806541A - 一种硬盘及硬盘上的固件升级方法 - Google Patents
一种硬盘及硬盘上的固件升级方法 Download PDFInfo
- Publication number
- CN117806541A CN117806541A CN202311572844.9A CN202311572844A CN117806541A CN 117806541 A CN117806541 A CN 117806541A CN 202311572844 A CN202311572844 A CN 202311572844A CN 117806541 A CN117806541 A CN 117806541A
- Authority
- CN
- China
- Prior art keywords
- hard disk
- interface
- data
- firmware
- upgraded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 86
- 238000004891 communication Methods 0.000 claims abstract description 10
- 230000004044 response Effects 0.000 claims abstract description 9
- 230000008569 process Effects 0.000 claims description 44
- 230000007246 mechanism Effects 0.000 abstract description 5
- 238000013500 data storage Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 239000007787 solid Substances 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013524 data verification Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003749 cleanliness Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000428 dust Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
一种硬盘,包括:硬盘本体,所述硬盘本体上设置有:第一接口和第二接口,其中所述第一接口用于接入主机;所述第二接口用于接入备用硬盘;数据转发模块,与第一接口和第二接口通信连接,所述数据转发模块用于在所述硬盘固件升级期间,控制通过所述第一接口接收的第一数据经所述第二接口写入所述备用硬盘;控制模块,响应于所述主机下发的固件升级命令对所述硬盘上的待升级固件进行升级。通过在硬盘上增加一个第二接口,使得在第一硬盘上的固件进行升级时,可以由插入第二接口的备用硬盘实现该硬盘的数据存储业务,以及通过RAI D机制实现硬盘上的数据读取机制。在实现对硬盘上的固件升级的同时,保证了服务器上业务的正常运行。
Description
技术领域
本申请涉及服务器技术领域,尤其涉及一种硬盘及硬盘上的固件升级方法。
背景技术
随着互联网、云技术、物联网等技术的发展,硬盘作为存储设备,广泛被应用。
固件(FW,Firmware)升级是指替换硬盘内的固件,通过固件的替换可以完善硬盘功能、增强硬盘稳定性、修补硬盘漏洞。但是当前对硬盘进行固件升级时,需要将硬盘所在计算设备正在执行的业务进行暂停,等到硬盘上的固件升级完成以后再恢复业务。对计算设备上相关业务进程造成了较大的影响。
发明内容
本申请实施例提供了一种硬盘、硬盘上的固件升级方法、服务器,使得在实现对硬盘上的固件升级的同时不需要中断服务器上业务的正常运行。
第一方面,本申请实施例提供了一种硬盘,该硬盘包括:硬盘本体,硬盘本体上设置有:第一接口和第二接口,其中第一接口用于接入主机;第二接口用于接入备用硬盘;数据转发模块,与第一接口和第二接口通信连接,数据转发模块用于在硬盘固件升级期间,控制通过第一接口接收的第一数据经第二接口写入备用硬盘,第一数据为主机在硬盘固件升级期间发送给硬盘的数据;控制模块,响应于主机下发的固件升级命令对硬盘上的待升级固件进行升级。
在本方案中,在硬盘上增加一个第二接口,当需要对硬盘上的固件进行升级时,可以在第二接口上插入一个备用硬盘。在硬盘的控制模块接收到服务下发的固件升级命令之后,控制模块可以通过数据转发模块控制第一接口接收的数据经第二接口写入备用硬盘。使得在硬盘上的固件进行升级的过程中服务器对硬盘的IO读写不用暂停,保证了服务器上业务的正常运行。
可以理解的是,在本申请实施例中,数据转发模块和控制模块既可以是软件模块也可以是硬件模块。当数据转发模块和控制模块都是软件模块时,数据转发模块和控制模块可以是控制芯片内的代码,由硬盘上的控制芯片实现。当数据转发模块和控制模块都为硬件模块时,数据转发模块中可以包括开关电路,控制模块可以是控制芯片。
在一个可能的实现方式中,数据转发模块还包括:开关电路;开关电路的一端与第一接口连接,开关电路的第二端与第二接口连接,开关电路的第三端与控制模块连接。
也就是说,数据转发模块可以通过开关电路实现。开关电路的三端可以分别连接第一接口、第二接口和控制器,控制器可以通过开关电路控制第一接口和第二接口之间的数据链路的导通和断开。
在一个可能的实现方式中,控制模块还用于在接收到主机下发的固件升级指令之后,通过开关电路的第三端控制开关电路的第一端和第二端连通。
也就是说,控制器可以在接收到服务器发送的固件升级命令以后,通过控制开关电路闭合,来控制第一接口和第二接口之间的数据链路导通。
在一个可能的实现方式中,在对硬盘上的待升级固件进行升级过程中,第一接口用于接收主机发送的第一数据;第二接口用于将第一数据转发到备用硬盘。
也就是说,在硬盘上的固件进行升级的过程中,硬盘上的第一接口可以继续接收主机发送的数据。当第一接口接收到主机发送的数据以后,可以通过闭合第一接口和第二接口数据链路上的开关,将第一接口接收到的数据转发到第二接口,使得该数据可以被第二接口插入的备用硬盘存储。实现了在硬盘上的固件升级过程中,主机对硬盘的正常IO写过程。
在一个可能的实现方式中,在硬盘上的待升级固件升级完成之后,控制模块通过数据转发模块控制第一接口和第二接口之间的数据链路断开。
也就是说,硬盘上的固件升级完成以后,硬盘上的控制模块可以通过数据转发模块中的开关电路控制第一接口和第二接口之间的数据链路断开,使得通过第一接口接收的数据,不会再被转发到与第二接口连接的备用硬盘中。
在一个可能的实现方式中,在硬盘上的待升级固件升级完成之后,控制模块还用于:通过第二接口向备用硬盘发送第一信息,第一信息用于指示备用硬盘向硬盘发送第一数据。
也就是说,在硬盘上的固件升级完成以后,硬盘中的控制模块需要将硬盘进行固件升级过程中,写入到备用硬盘中的数据,重新写回当前硬盘。
在一个可能的实现方式中,在硬盘上的待升级固件完成升级之后,控制模块还用于:通过第二接口接收备用硬盘发送的第二信息,第二信息中携带有第一数据;将第一数据写入到硬盘。
也就是说,硬盘上的控制模块在向备用硬盘发送数据写回请求(第一信息)以后,可以通过硬盘上的第二接口接收备用硬盘发送的第一数据,并将第一数据保存到硬盘的存储介质中,实现了在硬盘上的固件升级过程中,服务器对硬盘的正常IO写过程。
在一个可能的示例中,数据转发模块和控制模块集成在硬盘的处理器内。
也就是说,数据转发模块和控制模块可以集成在处理器中作为处理器的一部分,本申请实施例对此不作限定。
在一个可能的示例中,第一接口和第二接口的类型相同。
第二方面,本申请实施例提供了一种硬盘上的固件升级方法,应用于第一硬盘,第一硬盘与服务器主机通信连接,第一硬盘包括硬盘本体、数据转发模块、控制模块,硬盘本体上设置有第一接口和第二接口,数据转发模块用于与第一接口和第二接口通信连接,控制模块通过数据转发模块控制第一接口和所述第二接口之间的数据链路的导通与关闭,该方法包括:通过第一接口接收服务器中的处理器发送的第一信息,第一信息携带有固件升级命令和待升级的固件文件;在第一硬盘上的固件升级期间,控制第一接口和第二接口之间的数据链路导通,使得在第一硬盘上的待升级固件进行升级的过程中,第一接口接收的数据经第二接口写入备用硬盘;响应于第一信息中的固件升级命令,基于待升级的固件文件对第一硬盘上的待升级固件进行升级。
在本方案中,第一硬盘上包括第一接口和第二接口,当需要对第一硬盘上的固件进行升级时,可以在第一硬盘的第二接口上插入一个备用硬盘。在对第一硬盘上的固件进行升级的过程中,第一硬盘可以通过第一接口接收主机发送的数据,并且可以通过第二接口将接收到的数据存储到第二硬盘。使得在第一硬盘上的固件进行升级的过程中,主机对第一硬盘的IO读写不用暂停,保证了主机上业务的正常运行。
在一个可能的实现方式中,基于待升级的固件文件对第一硬盘上的待升级固件进行升级,包括:通过第一接口接收主机发送的第一数据;将第一数据经第二接口写入备用硬盘。
也就是说,在硬盘上的固件进行升级的过程中,硬盘上的第一接口可以继续接收主机发送的数据。当第一接口接收到主机发送的数据以后,可以通过闭合第一接口和第二接口数据链路上的开关,将第一接口接收到的数据转发到第二接口,使得该数据可以被第二接口插入的备用硬盘存储。实现了在硬盘上的固件升级过程中,主机对硬盘的正常IO写过程。
在一个可能的实现方式中,在第一硬盘上的待升级固件升级完成之后,该方法还包括:控制第一接口和第二接口之间的数据链路断开。
也就是说,硬盘上的固件升级完成以后,硬盘上的控制模块可以通过数据转发模块中的开关电路控制第一接口和第二接口之间的数据链路断开,使得通过第一接口接收的数据,不会再被转发到与第二接口连接的备用硬盘中。
在一个可能的实现方式中,在第一硬盘上的待升级固件升级完成之后,该方法还包括:通过第二接口向备用硬盘发送第一信息,第一信息用于指示备用硬盘向第一硬盘发送第一数据。
也就是说,在硬盘上的固件升级完成以后,硬盘中的控制模块需要将硬盘进行固件升级过程中,写入到备用硬盘中的数据,重新写回当前硬盘。
在一个可能的实现方式中,在第一硬盘上的待升级固件升级完成之后,该方法还包括:通过第二接口接收备用硬盘发送的第二信息,第二信息中携带有第一数据;将第一数据写入到第一硬盘。
也就是说,硬盘上的控制模块在向备用硬盘发送数据写回请求(第一信息)以后,可以通过硬盘上的第二接口接收备用硬盘发送的第一数据,并将第一数据保存到硬盘的存储介质中,实现了在硬盘上的固件升级过程中,服务器对硬盘的正常IO写过程。
第三方面,本申请实施例提供了一种服务器,包括:处理器和至少一个硬盘;
处理器用于对至少一个硬盘进行I/O读写;
至少一个硬盘为上述第一方面所描述的硬盘;
至少一个硬盘用于执行第二方面所描述的方法
第四方面,本申请实施例提供了一种计算机存储介质,计算机存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行第一方面或第一方面的任一种可能的实现方式所描述的方法。
第五方面,本申请实施例提供了一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行第一方面或第一方面的任一种可能的实现方式所描述的方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种服务器的内部结构示意图;
图2为本申请实施例提供的一种硬盘的结构示意图;
图3为本申请实施例提供的一种服务器系统架构示意图;
图4a-图4d为本申请实施例提供的一种服务器上的硬盘空间的结构示意图;
图5为本申请实施例提供的一种硬盘上的固件升级方法的流程图;
图6为本申请实施例提供的一种硬盘上的固件升级方法的流程图;
图7为本申请实施例提供的一种服务器上的硬盘空间的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。
在本申请实施例中的描述中,“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应该被理解为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在介绍本申请实施例之前,首先对本申请实施例中的技术术语进行介绍。
固件:是一种嵌入在硬件设备中的软件。通常它是位于特殊应用集成电路(ASIC)或可编程逻辑器件(PLD)之中的闪存或电可擦编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM)或可编程只读存储器(Programmable read-only memory,PROM)里,有的可以让用户更新。可以应用在非常广泛的电子产品中,从遥控器、计算器到电脑中的键盘、硬盘,甚至工业机器人中都可见到它的身影。
RAID:独立硬盘冗余阵列(Redundant Array of Independent Disks),简称磁盘阵列。利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个RAID阵列组,目的为提升性能或资料冗余,或是两者同时提升。RAID把多个硬盘组合成为一个逻辑硬盘,当RAID中的一个盘故障时,可以通过RAID中的其他盘校验出该盘的数据,提升数据可靠性(RAID0除外)。
可以理解的是,常见的RAID方案包括:RAID0、RAID1、RAID3、RAID5、RAID6、RAID10。其中,RAID0是一种非常简单的方式,它将多块硬盘组合在一起形成一个大容量的存储。当需要写数据的时候,会将数据分为N份,以独立的方式实现N块硬盘的读写。这N份数据会同时并发的写到硬盘中,因此执行性能非常的高。但是,RAID0存在的问题是,在RAID0方案中,不提供数据校验或冗余备份,因此一旦某块硬盘损坏了,数据就直接丢失,无法恢复了。
RAID1是RAID阵列中单位成本最高的一种方式。因为它的原理是在往硬盘写数据的时候,将同一份数据无差别的写两份到硬盘,分别写到工作硬盘和镜像硬盘,那么它的实际空间使用率只有50%,这是一种比较昂贵的方案。
在RAID3模式中,将数据按照RAID0的形式,分成多份同时写入多块硬盘。但是还会另外再留出一块硬盘用于写奇偶校验码。例如,总共有N块硬盘,那么就会让其中的N-1块用来并发的写数据,第N块硬盘用记录校验码数据。一旦某一块硬盘坏掉了,就可以利用其它的N-1块硬盘去恢复数据。
在RAID5模式中,不再需要单独的硬盘写校验码,校验码信息被分布到各个硬盘上。比如,总共有N块硬盘,RAID卡会把需要写入的数据分成N份,并发的写入到N块硬盘中,同时还将数据的校验码信息也写入到这N块硬盘中。其中,数据与对应的校验码信息需要分开存储到不同的硬盘上。
RAID6采用两个独立的奇偶校验进行数据的冗余备份。RAID卡会把需要写入的数据分成多份,分别写入到多个硬盘中,并通过两个不同的函数为每份数据计算出两个奇偶校验值。其中一个奇偶校验值被存储在一个硬盘中,而另一个奇偶校验值则被存储在另一个硬盘中。当其中一块硬盘发生故障时,RAID6可以通过另外的奇偶校验值恢复数据。
RAID10兼备了RAID1和RAID0的有优点。首先,基于RAID1模式将磁盘分为2份,当要写入数据的时候,将所有的数据在两份磁盘上同时写入,相当于写了双份数据,起到了数据保障的作用。且在每一份磁盘上又会基于RAID0技术将数据分为N份并发的读写,这样也保障了数据的效率。
接下来,对本方案进行介绍。
在对硬盘上的固件进行升级的过程中,硬盘将需要将新的固件文件(需要升级的固件文件)写入到自身的存储介质中以后,需要通过重启服务器的方式激活新的固件文件。在激活新的固件文件的过程中,对导致硬盘无法进行I/O读写,进而影响硬盘所属的相关计算设备上的业务的运行。
有鉴于此,本申请实施例提供了一种固件升级方法,主要用于对RAID模式下的硬盘上的固件进行升级。通过在目标硬盘上增加一个可以用于连接其他硬盘的接口,使得在目标硬盘上的固件进行升级时,在RAID卡需要向目标硬盘写入数据的情况下,目标硬盘可以将需要写入到自身的数据通过新增加的接口,写入到插入到该接口的硬盘上。在目标硬盘上的固件进行升级时,在RAID卡需要从目标硬盘中读数据的情况下,RAID卡可以从除目标硬盘的其他硬盘中读取数据和校验码,并根据读取的数据和校验码校验出目标硬盘中存储的数据。实现了,在目标硬盘上的固件升级过程中,对目标硬盘的I/O操作不暂停。
可以理解的是,本申请实施例中提供的固件升级方法,主要应用在提供数据校验或冗余备份的RAID模式中。比如,RAID1、RAID3、RAID5、RAID6、RAID10。
示例性的,图1示出了一种服务器的内部结构示意图。如图1所示,服务器可以包括电源121和主板110、,电源121电连接主板110,用于为主板110上的器件供电。主板110包括中央处理器(central processing unit,CPU)111、内存112、可编程逻辑器件(programmable logic device,PLD)113、BMC(baseboard management controller,基板管理控制器)114、PCIE插槽115、网卡122、硬盘123、风扇124。
其中,内存112插入内存插槽中,其用作外部高速缓存。示例性地,内存112可以为随机存取存储器(random access memory,RAM)。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。
PCIE插槽115适于拓展图形处理器(graphics processing unit,GPU)卡、网卡、视频采集卡、HBA(Host Bus Adapter,服务器总线适配器)卡、RAID(redundant arrays ofindependent disks,磁盘阵列)卡、SSD(solid state disk或solid state drive,固态硬盘)中的至少一种,还可以支持拓展各类转接卡等。
其中,可编程逻辑器件113可以为复杂的逻辑器件(complex programmable logicdevice,CPLD,是一种用户根据各自需要而自行构造逻辑功能的数字集成电路),也可以为现场可编程门阵列(field programmable gatearray,FPGA)。
BMC114具有BMC接口。
硬盘123有机械硬盘(hard disk drive,HDD)和固态硬盘(Solid State Disk或Solid State Drive,SSD)之分,示例性地,固态硬盘可以为PCIe通道的固态硬盘,比如逻辑设备接口规范(nonvolatile memory express,NVME,用于访问通过PCI Express(PCIe)总线附加的非易失性存储器介质)的固态硬盘。
应当理解的是,本申请实施例中提供的固件升级方法,主要用于对硬盘123上的固件进行升级。其中,硬盘123可以为机械硬盘HDD,也可以为固态硬盘SDD,本申请实施例对此不做限定。
接下来,以硬盘123为SDD为例,对本申请实施例提供的硬盘进行介绍。
示例性的,图2示出了一种硬盘的结构示意图。如图2所示,硬盘中包括:硬盘本体200,硬盘本体200上设置有:第一接口201、第二接口202,处理器203、闪存204。其中,第一接口201和第二接口202的类型可以相同。硬盘本体200有盘腔、上盖、盘电机、盘、磁头、音圈电机(图中未示出)等辅助部件组成。为了保证硬盘的正常运行,硬盘本体的清洁度非常高,以及为了防止灰尘进入,硬盘本体处于相对密封的状态。
处理器203中可以包括数据转发模块2031、控制模块2032,数据转发模块2031用于控制第一接口201和第二接口202之间的数据链路的导通和断开。
在一个可能的示例中,数据转发模块2031可以通过开关电路实现。具体地,开关电路的第一端与第一接口201连接,开关电路的第二端与第二接口202连接,开关电路的第三端与控制模块2032连接。其中,开启数据转发模块是指将开关电路闭合,使得第一接口201和第二接口202之间的数据链路导通。关闭数据转发模块是指将开关电路断开,使得第一接口201和第二接口202之间的数据链路断开。
控制模块2032可以在接收到主机下发的固件升级命令后,基于待升级的固件文件对硬盘123中的固件进行升级。其中,在控制前接收到主机下发的固件升级命令后,还需要控制通过第一接口接收的数据经第二接口写入到与第二口连接的备用硬盘中。即控制器可以在接收到主机下发的固件升级命令后,控制数据转发模块2031开启,以及在硬盘123上的固件升级完成以后,控制数据转发模块2031关闭。
在一个可能的示例中,控制模块2032在接收到主机下发的固件升级指令以后,通过开关的第三端控制开关电路的第一端和第二端连通,以使得第一接口201和第二接口202之间的数据链路导通。以及控制模块2032在对硬盘123上的固件升级完成以后,通过开关电路的第三端控制开关电路的第一端和第二端断开,以使得第一接口201和第二接口202之间的数据链路断开。
控制模块2032在对硬盘123上的固件升级完成以后,控制模块2032还需要通过第二接口向插入第二接口的备用硬盘的主控芯片发送第一信息,第一信息用于指示备用硬盘中的主控芯片将硬盘123升级过程中接收到的数据写回到硬盘123中。通常情况下,备用硬盘插入到硬盘123上的第二接口以后,备用硬盘才开始上电。因此,第一信息也可以用于指示备用硬盘中的主控芯片将上电以后接收数据写入到硬盘123中。
在一个可能的示例中,数据转发模块2031可以集成在处理器203中,也可以设置在处理器203外,本申请实施例对此并不做限定。
可以理解的是,数据转发模块2031和控制模块2032既可以是软件模块也可以是硬件模块。当数据转发模块2031和控制模块2032都是软件模块时,数据转发模块2031和控制模块2032可以是控制芯片内的代码。当数据转发模块2031和控制模块2032都为硬件模块时,数据转发模块2031中可以包括开关电路,控制模块2032可以是控制芯片。
第一接口201用于接入硬盘123所在的服务器的主机,主机通过第一接口201将主机发送的第一数据写入到硬盘123中,也可以通过第一接口读取硬盘123中存储的数据。
可以理解的是,主机为服务器的主要机体部分,可以包括中央处理器(centralprocessing unit,CPU)、内存等硬件设备,也可以包括操作系统(operatingsystem,OS)等软件。其中,OS上可以运行相关业务进程,以支持各种业务,对外提供相应的服务。应理解,操作系统可以包括Linux操作系统、Windows操作系统、Unix操作系统等中的一个或多个。
第二接口202用于接入备用硬盘,使得在硬盘123进行固件升级的情况下,主机通过第一接口201写入到硬盘123中的第一数据,可以通过第二接口202写入到备用硬盘中。在硬盘123固件升级完成以后,备用硬盘可以将硬盘123在进行固件升级过程中写入到该硬盘的数据,通过第二接口写回到硬盘123中。具体地,在硬盘123上的待升级固件升级完成之后,控制模块2032可以通过第二接口202接收备用硬盘发送的第二信息,第二信息中携带有第一数据。控制模块2032在接收到第一数据以后,将第一数据写入到硬盘123的闪存204中。
可以理解的是,在本申请实施例中,硬盘123可以为固态硬盘,也可以为机械硬盘。当硬盘123为机械硬盘时,第一接口201和第二接口202可以为SAS接口或者SATA接口;当硬盘123为固态硬盘时,第一接口201和第二接口202可以为SAS接口、SATA接口或者PCIE接口。第一接口201和第二接口202之间设置了数据链路,且在该数据链路上设置有开关电路。比如,在开关电路处于闭合状态时,通过第一接口201接收的数据可以转发到第二接口202。在开关电路断开时,第一接口201和第二接口202之间的数据链路处于断开状态。
闪存204用于存储写入到硬盘123中的信息。比如,主机需要写入到硬盘123中的数据、硬盘123上待升级的固件文件。
在本申请实施中,通过在硬盘上增加一个新的接口,在硬盘进行固件升级过程中,可以通过新增加的接口接入一个备用硬盘。使得在硬盘进行固件升级的过程中,可以将主机写入的数据通过新增加的接口写入到备用硬盘中。保证了在主机上的固件升级时,服务上的业务可以不暂停。
需要说明的是,图1仅仅作为主机的示例,并不构成具体限定,在实际应用中,可以包括比图1更多或更少的器件,比如还可以包括单片机(一种集成电路芯片,相当于一个微型的计算机)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、通用处理器等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
参见图1所示的服务器,服务器中部署的多个硬盘123,可以通过RAID技术形成一个逻辑硬盘,并通过RAID卡进行管理。
示例性的,图3示出了一种服务器系统架构示意图。如图3所示,包括主机、RAID卡和多个硬盘(如图3中硬盘A-硬盘E)。其中,硬盘A-硬盘D构成了RAID阵列,硬盘E为插入到硬盘A上的备用硬盘。
RAID上可以集成有中央处理器(Central Processing Unit,CPU),只读内存(Read-Only Memory,ROM)、XOR芯片、PCI控制器和SCSI控制器。其中,CPU可以通过控制PCI控制器与CPU进行信息交互,以及CPU可以通过控制SCSI控制器对接入到SCSI总线(图中未示出)上的硬盘进行管理(比如,I/O读写)。ROM可以用Flash芯片实现,ROM存放着初始化RAID卡必须的代码以及实现RAID功能所需的代码。XOR芯片用于在RAID3、RAID5、RAID6等校验型RAID模式下生成校验码,以及根据校验码生成相应的校验数据。
主机可以通过RAID卡对硬盘A-硬盘D上的数据进行I/O读写。在通过RAID卡对硬盘A-硬盘D上的数据进行I/O读写之前,RAID卡需要将硬盘A-硬盘D中的硬盘空间条带化。具体地,如图4a所示,将硬盘A-硬盘D中的硬盘空间按照将硬盘A-硬盘D中的硬盘空间设定的大小分为多个条带,如图4a所示,硬盘A、硬盘B、硬盘C、硬盘D上的硬盘空间均被划分为了4个条带,分别为条带1、条带2、条带3、条带4。
RAID卡在将数据写入到硬盘A-硬盘D时,也需要按照条带的大小来划分数据块。其中,同一RAID阵列中的多个硬盘的驱动器上的相同“位置(相同编号的条带)”的条带可以构成一个分条。如图4a所示,硬盘A上的条带4、硬盘B上的条带4、硬盘C上的条带4和硬盘D上的条带4可以构成分条4。
硬盘A-硬盘D可以通过主机主板上的硬盘背板连接到主机主板上,并通过RAID卡实现与主机之间的通信。硬盘E可以通过硬盘A上的第二接口连接到硬盘A上。硬盘E用于在硬盘A进行固件升级时,对写入到硬盘A的数据进行存储。
接下来,以RAID5为例,对硬盘A上的固件升级过程,以及在硬盘A进行固件升级时RAID卡对硬盘A-硬盘D组成的RAID阵列的数据的I/O读写进行介绍。具体地,主机响应于对硬盘A的固件升级请求,向硬盘A发送固件升级命令和待升级的固件文件。硬盘A接收到主机发送的待升级的固件文件以后,可以将待升级的固件文件保存到硬盘A的闪存中。然后,硬盘A中的控制器需要开启硬盘A中的数据转发模块。其中,数据转发模块用于在硬盘A进行固件升级时,将从第一接口接收到的数据转发到与第二接口连接的硬盘E中。
在硬盘A进行固件升级过程中,主机对硬盘A的操作包括两种情况,第一种是向硬盘A中写入数据,第二种是从硬盘A中读取数据。
对于第一种情况,在硬盘A进行固件升级的过程中,若在主机上的CPU需要通过RAID卡将数据A写入到RAID中。RAID卡在接收到数据A以后,RAID卡中的CPU可以将按照RAID中每个条带大小将数据A划分为12份,分别为:A1、A2、A3、A4、A5、A6、A7、A8、A9、A10、A11、A12。然后,RAID卡中的XOR模块对数据A1、A2、A3进行异或运算,得到校验码P1(P1=A1xorA2xorA3),对数据A4、A5、A6进行异或运算,得到校验码P2(P2=A4xorA5xorA6),对数据A7、A8、A9进行异或运算,得到校验码P3(P3=A7xorA8xorA9),对数据A10、A11、A12进行异或运算,得到校验码P4(P4=A10xorA11xorA12)。然后,RAID卡将数据A1、A2、A3以及校验码P1存储到分条1中,将数据A4、A5、A6以及校验码P2存储到分条2中,将数据A7、A8、A9以及校验码P3存储到分条3中,将数据A10、A11、A12以及校验码P4存储到分条4中。在硬盘A进行固件升级过程中,硬盘A上的第一接口依次接收到数据A1、A4、A7以及校验码P4。硬盘A中的数据转发模块将第一接口接收到的数据A1、A4、A7以及校验码P4依次通过第二接口转发到硬盘E中。硬盘E通过硬盘E上的接口接收到数据A1、A4、A7以及校验码P4以后,对接收到的数据和校验码进行存储。其中,硬盘A-硬盘E中存储的数据如图4b所示。
可以理解的是,RAID在向硬盘A-硬盘D上写入数据时,根据需要写入的数据的大小可以选择不同的写入方式。比如,当需要写入到硬盘A-硬盘D上的数据较小时,RAID卡可以选择第一次性将数据写入到硬盘A-硬盘D中。当需要写入到硬盘A-硬盘D上的数据较大时,RAID可以以一个分条为单位进行写入。
在硬盘A进行固件升级完成以后,硬盘A中的控制器控制数据转发模块关闭,同时硬盘A中的控制器还需要向硬盘E发送第一信息,第一信息用于指示硬盘E将硬盘E上电以后存储的数据和校验码写回到硬盘A中。硬盘E接收到第一信息以后,响应于第一信息将硬盘E上电以后存储的数据和校验码通过与硬盘A相连的接口写回到硬盘A中。其中,硬盘A-硬盘E中存储的数据如图4c所示。
对于第二种情况,硬盘A-硬盘D中存储的数据如图4d所示,主机通过RAID卡从硬盘A-硬盘D组成的RAID阵列中读取数据然后将读取的数据组合成原始数据。由于硬盘A正在进行固件升级,因此,RAID卡无法送从硬盘A中读取数据。
在一个可能的示例中,RAID在从硬盘A-硬盘D上读取数据时,根据被划分的数据块的大小不同,选择不同的读取方式。比如,当硬盘A-硬盘D上存储的数据较小时,RAID卡可以选择第一次性将硬盘A-硬盘D中存储的数据读取完。当硬盘A-硬盘D上存储的数据较大时,RAID可以以一个分条为单位进行读取。比如,RAID卡在第一次从硬盘A-硬盘D组成的RAID阵列中读取的数据为:A2、A3、P1,由于P1=A1 xorA2xorA3,RAID可以根据已经读取的数据计算出硬盘A中存储的数据A1。同理,RAID卡在第二次从硬盘A-硬盘D组成的RAID阵列中读取的数据为:A5、P2、A6,由于P2=A4xorA5xorA6,RAID可以根据已经读取的数据计算出硬盘A中存储的数据A4。RAID卡在第三次从硬盘A-硬盘D组成的RAID阵列中读取的数据为:P3、A8、A9,由于P3=A7xorA8xorA9,RAID可以根据已经读取的数据计算出硬盘A中存储的数据A7。RAID卡在第四次从硬盘A-硬盘D组成的RAID阵列中读取的数据为:A10、A11、A12,可知硬盘A中存储的是校验码P4。
在本申请实施中,通过在部署在主机的硬盘上增加一个新的接口,在硬盘进行固件升级过程中,可以通过新增加的接口接入硬盘。使得在硬盘进行固件升级的过程中,可以将主机写入的数据通过新增加的接口写入到与新增加接口连接的硬盘中。保证的在主机上的固件升级时,服务上的业务可以不暂停。
接下来,基于上文所描述的内容,对本申请实施例提供的一种硬盘上的固件升级方法进行介绍。示例性的,图5示出了本申请实施例提供的一种硬盘上的固件升级方法的流程图。该方法可以由图3中的硬盘A(在本申请实施例中也可以称之为第一硬盘)执行。参见图5,该方包括:步骤501-步骤503。
步骤501,第一硬盘通过第一接口接收主机发送的第一信息,第一信息携带有固件升级命令和待升级的固件文件。
在本申请实施例中,主机中的CPU响应于固件升级请求,向待升级的固件所属的硬盘(第一硬盘)发送第一信息。其中,主机中的CPU可以接收由用户终端或者其他计算设备等外接设备发送的固件升级请求,或者,主机中的CPU也可以直接接收由用户输入的固件升级请求。比如,用户可以通过管理工具或者命令行在主机的显示界面上输入固件升级请求。固件升级请求中携带有第一硬盘的硬盘标识。
主机中的CPU接收到固件升级请求以后,根据固件升级请求中携带的第一硬盘的硬盘标识,向第一硬盘发送固件升级命令以及待升级的固件文件。其中,固件升级命令用于指示第一硬盘进行固件升级。待升级的固件文件存储在主机中,当主机中的CPU接收到固件升级请求以后,主机中的CPU根据固件升级请求中携带的第一硬盘的硬盘标识将对应的待升级固件文件发送到第一硬盘中。
第一硬盘中的控制模块在接收到主机发送的第一信息以后,将第一信息存储到第一硬盘存储介质中。比如,闪存。
可以理解的是,第一硬盘中的控制模块在将第一信息存储到闪存中以后,第一盘中的待升级固件运行的版本依然为旧版本。只有第一硬盘上的控制模块将存储在闪存中的第一信息中的待升级固件文件激活之后,第一硬盘上的待升级固件才会由旧版本的固件切换到新版本的固件(待升级固件)。
步骤502,在第一硬盘上的固件升级期间,控制第一接口和第二接口之间的数据链路导通,使得在第一硬盘上的待升级固件进行升级的过程中,第一接口接收的数据经第二接口写入第二硬盘。
在本申请实施例中,第一硬盘中的控制模块在将接收到的第一信息存储到闪存,控制模块可以基于第一信息中携带的待升级固件文件对硬盘上的固件进行升级。在硬盘升级期间,第一硬盘中的控制模块还需要触发控制模块中的数据转发模块开启,使得第一接口和第二接口之间的数据链路导通。其中,数据转发模块通过部署在第一接口和第二接口之间的数据链路上的开关实现,用于控制第一硬盘上第一接口和第二接口之间的数据链路的导通与断开。当数据转发模块开启以后,第一硬盘上的第一接口接收到的数据,都会经数据转发模块转发到第一硬盘上的第二接口,由与第二接口连接的第二硬盘对该数据进行存储。
步骤503,第一硬盘响应于第一信息中的固件升级命令,基于待升级的固件文件对第一硬盘上的待升级固件进行升级。
在本申请实施例中,第一硬盘中的控制模块在开启数据转发模块以后,响应于第一信息中携带的固件升级命令,对第一硬盘中的固件进行升级。
在一个可能的示例中,第一硬盘中的控制模块可以触发第一硬盘进行在线复位,激活待升级固件。具体地,第一硬盘可以向主机发送第二信息,第二信息用于指示主机进行第一硬盘的在线复位。主机在接收到第二信息以后,主机可以配合第一硬盘的驱动在OS层面执行第一硬盘的主机复位,在主机复位结束以后,第一硬盘可以从闪存中读取待升级固件文件,并完成待升级固件文件的加载和运行,使得待升级固件文件生效。
在另一个可能的示例中,第一硬盘可以直接从闪存中读取待升级的固件文件,并成对待升级固件文件的加载和运行,使得待升级固件文件生效,而不需要触发主机对第一硬盘进行在线复位。
可以理解的是,在对第一硬盘上的待升级固件进行升级的过程中,主机中的CPU对服务器主板通信连接的硬盘的I/O操作不会中断。
比如,在第一硬盘上的待升级固件进行升级的过程中,主机可以继续通过RAID将数据写入到第一硬盘上。具体地,第一硬盘上的第一接口接收到RAID卡发送的第一数据,并将接收的第一数据发送给数据转发模块。然后,数据转发模块将接收的第一数据发送到第二数据接口,使得与第二数据接口连接的第二硬盘可以通过第二数据接口接收第一数据。
由于第一硬盘和主机主板部署的其他硬盘组成了RAID阵列。当在第一硬盘进行固件升级期间,主机需要从第一硬盘中读取数据时,RAID卡可以通过RAID机制从RAID阵列中除第一硬盘以外的其他硬盘中读出数据,并根据读出的数据校验出第一硬盘中的数据。
在第一硬盘上的待升级固件升级完成以后,第一硬盘上的控制模块可以关闭控制中的数据转发模块。具体地,数据转发模块可以通过第一接口和第二接口之间的数据链路上的开关实现。控制模块可以通过控制开关断开,实现第一接口和第二接口之间的数据链路断开。
然后,第一硬盘上的控制模块还可以向第二硬盘中的控制芯片发送第二信息,第二信息用于指示第二硬盘中的控制芯片向第一硬盘发送第一数据。第二硬盘中的控制芯片响应于接收到的第二信息,将第二硬盘中存储的第一数据通过第一硬盘上的第二接口发送到第一硬盘。
在本申请实施例中,在第一硬盘上增加一个第二接口,当需要对第一硬盘上的固件进行升级时,可以在第一硬盘上的第二接口上插入一个新的硬盘(可以是上文所描述的第二硬盘)。使得在第一硬盘上的固件进行升级时,可以由第二硬盘实现第一硬盘的数据存储业务,通过RAID机制(主要是指提供数据校验或冗余备份的RAID模式)实现第一硬盘上的数据读取机制。在实现对第一硬盘上的固件升级的同时,保证了服务器业务的正常运行。
可以理解的是,在本申请实施例中,在不同的RAID模式下,能够同时进行固件升级的硬盘的个数可能不相同。比如,在RAID5模式下,在同一个时间段,允许一个硬盘进行固件升级。在RAID6模式下,在同一个时间段,允许两个硬盘同时进行固件升级。
接下来,以一个具体的示例对本申请实施例提供的一种硬盘上的固件升级方法进行介绍。该方法由图3所示的服务器系统执行,在图3所示的服务器系统中包括硬盘到硬盘E,其中,硬盘A-硬盘D为插在服务器主机的主板上的硬盘,与服务器主机通信连接,硬盘A-硬盘D构成RAID阵列,并以RAID5的模式进行数据的存储;硬盘E为硬盘A上的外接硬盘。示例性的,图6示出了一种硬盘上的固件升级方法的流程图,参见图6,该方法包括步骤:步骤601-步骤616。
步骤601,主机中的CPU接收固件升级请求。
在本申请实施例中,主机中的CPU可以接收由用户终端或者其他计算设备等外接设备发送的固件升级请求,或者,主机中的CPU也可以直接接收由用户输入的固件升级请求。比如,用户可以通过管理工具或者命令行在主机的显示界面上输入固件升级请求。固件升级请求中携带有硬盘A的硬盘标识。
步骤602,主机中的CPU向硬盘A发送第一信息,第一信息携带有固件升级命令以及待升级的固件文件。
在本申请实施例中,主机中的CPU接收到固件升级请求以后,根据固件升级请求中携带的硬盘A的硬盘标识,向硬盘A发送固件升级命令以及待升级的固件文件。其中,固件升级命令用于指示硬盘A进行固件升级。待升级的固件文件存储在主机中,当主机中的CPU接收到固件升级请求以后,主机中的CPU根据固件升级请求中携带的硬盘A的硬盘标识将对应的待升级固件文件发送给硬盘A。
在一个可能的示例中,主机中的CPU可以将第一信息发送给RAID卡,再由RAID卡将第一信息发送给硬盘A。
步骤603,硬盘A接收到第一信息以后,开启硬盘A上的数据转发模块。
在本申请实施例中,硬盘A接收到第一信息以后,硬盘A中的控制模块可以将第一信息中的待升级的固件文件存储在硬盘A的存储介质中,比如,闪存。
然后,硬盘A中的控制模块可以触发硬盘A上的数据转发模块开启。其中,数据转发模块用于将硬盘A上第一接口接收到的数据转发到硬盘A上的第二接口,由与第二接口连接的硬盘E对该数据进行存储。
在一个可能的示例中,数据转发模块可以通过第一接口和第二接口之间的数据链路上的开关实现。控制模块可以通过控制开关闭合,实现第一接口和第二接口之间的数据链路导通。
步骤604,硬盘A响应于第一信息,对硬盘A上的待升级固件进行升级。
在本申请实施例中,硬盘A中的控制模块在开启数据转发模块以后,响应于第一信息中携带的固件升级命令,硬盘A中的控制模块可以触发硬盘A进行在线复位,激活待升级固件。具体地,硬盘A可以向主机中的CPU发送指示信息,该指示信息用于指示主机中的CPU进行硬盘A的在线复位。主机中的CPU在接收到指示信息以后,主机中的CPU可以配合硬盘A的驱动在OS层面执行硬盘A的主机复位,在主机复位结束以后,硬盘A可以从闪存中读取待升级固件文件,并完成待升级固件文件的加载和运行,使得待升级固件文件生效。
在一个可能的示例中,第一硬盘可以直接从闪存中读取待升级的固件文件,并成对待升级固件文件的加载和运行,使得待升级固件文件生效,而不需要触发主机对第一硬盘进行在线复位。
步骤605,主机向RAID卡发送第二信息,第二信息中携带有数据A。
在本申请实施例中,在主机运行过程中,若主机上的业务有数据存储请求时,主机中的CPU可以向RAID卡发送第二信息,第二信息中携带有需要存储的数据A,以及第二信息用于指示RAID对数据A进行存储。
RAID卡在接收到第二信息以后,根据RAID阵列中硬盘A-硬盘D中各个硬盘上的条带的大小,对数据A进行划分。
可以理解的是,RAID卡需要预先对硬盘A-硬盘D中的各个硬盘进行条带化。其中,对RAID阵列中硬盘A-硬盘D的磁盘空间进行条带化的过程可以参照图4a所示,在此不再赘述。
步骤606,RAID卡可以按照RAID阵列中每个条带大小将数据A划分为多份,并计算存储在同一个条带上的数据的校验码。
在本申请实施例中,RAID卡在将数据写入到硬盘A-硬盘D时,也需要按照硬盘中条带的大小将数据A划分为12份,分别为:A1、A2、A3、A4、A5、A6、A7、A8、A9、A10、A11、A12。然后,RAID卡计算硬盘A-硬盘-D中每一个分条中存储的数据的校验码。比如,如图4a所示的分条1中存储的数据块A1、A2、A3的校验码P1=A1 xorA2xorA3。分条2中存储的数据块A4、A5、A6的校验码P2=A4xorA5xorA6。分条3中存储的数据块A7、A8、A9的校验码P3=A7xorA8xorA9。分条4中存储的数据块A10、A11、A12的校验码P4=A10xorA11 xorA12。
步骤607,RAID卡向RAID阵列中的硬盘发送第三信息,第三信息中包含有数据信息和校验信息。
在本申请实施例中,RAID卡在将数据A划分为12个数据块,并且计算出数据块的校验码以后,需要将对应的数据块和校验码发送给RAID阵列的硬盘。其中,在以RAID5模式进行存储时,数据与对应的校验码需要分开存储到不同的硬盘上。比如,数据块A1、A2、A3、P1可以分别存储在硬盘A-硬盘D中。
在一个可能的示例中,当划分的数据块较大时,RAID卡向RAID阵列中的硬盘发送的第三信息中只携带了一个数据块或者一个校验码。具体地,RAID卡可以同时向硬盘A、硬盘B、硬盘C、硬盘D发送第三信息。其中,对不同的硬盘发送的第三信息中携带的信息不同。比如,向硬盘A发送的第三信息中携带有数据块A1,向硬盘B发送的第三信息中携带有数据块A2,向硬盘C发送的第三信息中携带有数据块A3,向硬盘D发送的第三信息中携带有校验码P1。RAID想要将数据A存储到RAID阵列中,RAID卡需要发送16个第三信息(发送4轮第三信息,每轮包括4个第三信息)。
在一个可能的示例中,当划分的数据块较小时,RAID卡向RAID阵列中的硬盘发送的第三信息中可以携带有多个数据块和一个或多个校验码。具体地,RAID卡可以同时向硬盘A、硬盘B、硬盘C、硬盘D发送第三信息。其中,对不同的硬盘发送的第三信息中携带的信息不同。比如,向硬盘A发送的第三信息中携带有数据块A1、A4、A7、P4,向硬盘B发送的第三信息中携带有数据块A2、A5、P3、A10,向硬盘C发送的第三信息中携带有数据块A3、P2、A8、A11,向硬盘D发送的第三信息中携带有校验码P1、A6、A9、A12。RAID想要将数据A存储到RAID阵列中,RAID卡需要发送4个第三信息。
步骤608,硬盘A接收到第三信息以后,将该第三信息发送给硬盘E。
在本申请实施例中,硬盘A上的第一接口用于与RAID卡进行数据通信。当硬盘A上的第一接口接收到RAID卡发送的第三信息以后,数据转发模块需要将第一接口接收到的第三信息中的数据或者校验码,发送到第二接口。与硬盘A上的第二接口相连的硬盘E可以通过第二接口获取第一接口接收到的第三信息中的数据或者验证码并存储。RAID卡在完成数据A的存储以后,硬盘A-硬盘E中存储的数据的示意图,可以参照图4b所示。
步骤609,主机中的CPU向RAID卡发送第四信息,第四信息用于指示RAID从RAID阵列中的硬盘中读取数据B。
在本申请实施例中,在主机运行过程中,若主机上的业务有数据读取请求时,主机中的CPU可以向RAID卡发送第四信息。其中,第四信息中可以携带有需要读取的数据的标识。
步骤610,RAID卡向RAID阵列中的硬盘发送第五信息,第五信息中携带有需要读取的数据的地址信息。
在本申请实施例中,RAID卡接收到第四信息以后,可以根据第四信息中携带的数据标识,数据B在RAID阵列中每个硬盘中的地址信息。然后,RAID卡向RAID阵列中的每一个硬盘发送第五信息。其中,第五信息中携带有对应硬盘上需要读取的数据的地址信息。其中,各个RAID阵列中各个硬盘上存储的数据BB的数据信息如图7所示。
步骤611,RAID卡接收RAID阵列中除硬盘A以外,其他硬盘发送的第六信息。
在本申请实施例中,RAID阵列中的各个硬盘接收到第五信息以后,根据第五信息中携带的地址信息,从该地址中获取对应的数据或者校验码,并发送给RAID卡。
对于RAID阵列中的硬盘A,由于硬盘A正在进行固件升级,无法进行数据查找。因此,硬盘A上的第一接口接收到第五信息以后,会直接将第五信息丢弃,不作处理。
步骤612,RAID卡根据接收的多个第六信息中携带的数据块和校验码,得到硬盘A上存储的数据B的部分数据信息。
在本申请实施例中,RAID卡接收出硬盘A以外的其他硬盘发送的第六信息,第六信息中携带有数据B的数据块和校验信息。比如,硬盘B发送的第六信息中包括:B2、B5、H3、B10;硬盘C发送的第六信息包括:B3、H2、B8、B11;硬盘D发送的第六信息包括:H1、B6、B9、B12。
当RAID卡在预设的时间内没有接收到硬盘A发送的第六信息,RAID卡可以根据已经接收到的多个第六信息,计算得到硬盘A上存储的数据信息。比如,RAID卡可以根据B2、B3、H1计算出硬盘A上存储的数据B1,根据数据B5、H2、A6计算出硬盘A上存储的数据B4,根据数据H3、B8、B9计算出硬盘A上存储的数据B7。
步骤613,RAID卡将硬盘A-硬盘D上存储的数据B的数据信息组合成数据B,并发送给主机。
在本申请实施例中,RAID卡在获取到RAID阵列中各个硬盘上存储的数据B的数据块信息以后,可以将获取得数据块信息重新组合成数据B,并发送给主机。
步骤614,在硬盘A上的固件升级完成以后,硬盘A关闭硬盘A上的数据转发模块。
在本申请实施例中,但硬盘A上的固件升级完成以后,硬盘A中的控制模块需要关闭数据转发模块,以避免数据转发模块继续将硬盘A上的第一接口接收的数据信息发送到与第二接口连接的硬盘E上。
在一个可能的示例中,控制模块可以向数据转发模块发送“去使能”信号,数据转发模块响应于该去使能信号,可以关闭第一接口和第二接口之间的数据转发功能。
步骤615,硬盘A向硬盘E发送第七信息,第七信息用于指示硬盘E向硬盘A发送数据A的部分数据信息。
在本申请实施例中,硬盘A上的控制模块在关闭数据转发模块以后,还需要通过硬盘A上的第二接口向硬盘E发送第七信息。其中,第七信息用于指示硬盘E向硬盘A发送数据A。
步骤616,硬盘A接收硬盘E发送的第八信息并存储,第八信息中携带有数据A的部分数据信息。
在本申请实施例中,硬盘A接收到硬盘E发送的数据A的数据块和校验码。然后,硬盘A将接收到的数据A的数据块和校验码存储到硬盘A的存储介质中。其中,各个RAID阵列中各个硬盘上存储的数据A的数据信息如图4c所示。
可以理解的是,上述实施例中,步骤601-步骤604是硬盘A上的固件升级过程。步骤605-步骤608是在硬盘A上的固件升级过程中,主机对RAID阵列中的硬盘(包括硬盘A)的写过程。步骤609-步骤613是在硬盘上的固件升级过程中,主机对RAID阵列中的硬盘的数据读过程。其中,步骤605-步骤608、步骤609-步骤613是可选的,步骤605-步骤608、步骤609-步骤613之间在执行上是没有先后顺序的。
可以理解的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。此外,在一些可能的实现方式中,上述实施例中的各步骤可以根据实际情况选择性执行,可以部分执行,也可以全部执行,此处不做限定。另外,上述实施例中的任意特征的全部或部分在不矛盾的前提下,可以自由地、任何地组合。组合后的技术方案也在本申请的范围之内。
基于上述实施例中的方法,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在处理器上运行时,使得处理器执行上述实施例中的方法。
基于上述实施例中的方法,本申请实施例提供了一种计算机程序产品,其特征在于,当计算机程序产品在处理器上运行时,使得处理器执行上述实施例中的方法。
基于上述实施例中的方法,本申请实施例提供了一种计算设备,计算设备包括主板和芯片。其中,芯片集成在主板上,芯片包括至少一个存储器,用于存储程序;至少一个处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行上述实施例中的方法。在本申请实施例中,计算设备可以是服务器、服务器等网络设备。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
Claims (10)
1.一种硬盘,其特征在于,所述硬盘包括:
硬盘本体,所述硬盘本体上设置有:第一接口和第二接口,其中所述第一接口用于接入主机,所述第二接口用于接入备用硬盘;
数据转发模块,与第一接口和第二接口通信连接,所述数据转发模块用于在所述硬盘固件升级期间,控制通过所述第一接口接收的第一数据经所述第二接口写入所述备用硬盘,所述第一数据为所述主机在所述硬盘固件升级期间发送给所述硬盘的数据;
控制模块,响应于所述主机下发的固件升级命令对所述硬盘上的待升级固件进行升级。
2.根据权利要求1所述的方法,其特征在于,所述数据转发模块还包括:开关电路;
所述开关电路的一端与所述第一接口连接,所述开关电路的第二端与所述第二接口连接,所述开关电路的第三端与所述控制模块连接。
3.根据权利要求2所述的方法,其特征在于,所述控制模块还用于在接收到所述主机下发的固件升级指令之后,通过所述开关电路的第三端控制所述开关电路的第一端和第二端连通。
4.根据权利要求1所述的硬盘,其特征在于,在所述硬盘上的待升级固件升级完成之后,所述控制模块通过所述数据转发模块控制所述第一接口和所述第二接口之间的数据链路断开。
5.根据权利要求1所述的硬盘,其特征在于,在所述硬盘上的待升级固件升级完成之后,所述控制模块还用于:
通过所述第二接口向所述备用硬盘发送第一信息,所述第一信息用于指示所述备用硬盘向所述硬盘发送第一数据。
6.根据权利要求5所述的硬盘,其特征在于,在所述硬盘上的待升级固件完成之后,所述控制模块还用于:
通过所述第二接口接收所述备用硬盘发送的第二信息,所述第二信息中携带有第一数据;
将所述第一数据写入到所述硬盘。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述数据转发模块和所述控制模块集成在所述硬盘的处理器内。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述第一接口和所述第二接口的类型相同。
9.一种固件升级方法,其特征在于,应用于第一硬盘,所述第一硬盘与服务器主机通信连接,所述第一硬盘包括硬盘本体、数据转发模块、控制模块,所述硬盘本体上设置有第一接口和第二接口,所述数据转发模块用于与第一接口和第二接口通信连接,所述控制模块通过所述数据转发模块控制所述第一接口和所述第二接口之间的数据链路的导通与关闭,所述方法包括:
通过所述第一接口接收所述服务器中的处理器发送的第一信息,所述第一信息携带有固件升级命令和待升级的固件文件;
在所述第一硬盘上的固件升级期间,控制所述第一接口和所述第二接口之间的数据链路导通,使得在所述第一硬盘上的待升级固件进行升级的过程中,所述第一接口接收的数据经所述第二接口写入所述备用硬盘;
响应于第一信息中的固件升级命令,基于所述待升级的固件文件对所述第一硬盘上的待升级固件进行升级。
10.一种服务器,其特征在于,包括:处理器和至少一个硬盘;
所述处理器用于对所述至少一个硬盘进行I/O读写;
所述至少一个硬盘为权利要求1-8中任一项所述的硬盘;
所述至少一个硬盘用于如执行权利要求9所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311572844.9A CN117806541A (zh) | 2023-11-22 | 2023-11-22 | 一种硬盘及硬盘上的固件升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311572844.9A CN117806541A (zh) | 2023-11-22 | 2023-11-22 | 一种硬盘及硬盘上的固件升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117806541A true CN117806541A (zh) | 2024-04-02 |
Family
ID=90432611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311572844.9A Pending CN117806541A (zh) | 2023-11-22 | 2023-11-22 | 一种硬盘及硬盘上的固件升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117806541A (zh) |
-
2023
- 2023-11-22 CN CN202311572844.9A patent/CN117806541A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9684591B2 (en) | Storage system and storage apparatus | |
US8549236B2 (en) | Storage subsystem with multiple non-volatile memory arrays to protect against data losses | |
US10776153B2 (en) | Information processing device and system capable of preventing loss of user data | |
US9329931B2 (en) | Solid state drive emergency pre-boot application providing expanded data recovery function | |
US9304685B2 (en) | Storage array system and non-transitory recording medium storing control program | |
US8799745B2 (en) | Storage control apparatus and error correction method | |
CN101923446B (zh) | 存储阵列辅助架构 | |
US8180952B2 (en) | Storage system and data guarantee method | |
US11487663B2 (en) | Method of operating storage device, storage device performing the same and storage system including the same | |
JP2005107838A (ja) | ディスクアレイコントローラ及びログ情報記録方法 | |
US7293193B2 (en) | Array controller for disk array, and method for rebuilding disk array | |
US7020770B2 (en) | Method and apparatus for configuration of RAID controllers | |
KR20230172394A (ko) | 캐시 일관된 상호 연결 저장 장치에서 raid 회로를 사용하는 중복 배열 독립 디스크 시스템 및 방법 | |
CN111752475B (zh) | 在存储服务器中进行数据存取管理的方法与装置 | |
CN117806541A (zh) | 一种硬盘及硬盘上的固件升级方法 | |
US9639417B2 (en) | Storage control apparatus and control method | |
US8732414B2 (en) | Control device, controller module, and control method | |
JP5047342B2 (ja) | ストレージ装置およびその制御方法 | |
CN117234414A (zh) | 用于支持独立磁盘冗余阵列的系统和方法 | |
JP2008250939A (ja) | ディスクアレイコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |