首页 / 一种数据重构方法

一种数据重构方法实质审查 发明

技术领域

[0001] 本申请涉及计算设备技术领域,尤其涉及一种数据重构方法。

相关背景技术

[0002] 独立冗余磁盘阵列(Redundant Array of Independent Disks,简称RAID),又称磁盘阵列,是由很多块独立的硬盘,组合成一个容量巨大的硬盘组,利用多个硬盘提供数据所产生加成效果提升硬盘组的性能。
[0003] 同一硬盘组中的每个硬盘中有多个磁头,硬盘中的一个磁头出现故障后,整个硬盘都会上报失效。相关技术中,可以利用同一硬盘组中的其他硬盘中存储的数据,重构出失效硬盘中存储的全部的数据,并存储至热备硬盘中。
[0004] 但是,相关技术中,需要放弃失效硬盘上存储的全部数据,然后从同一硬盘组中的其他硬盘上读取数据,并进行计算,才能得到失效硬盘中的全部数据,导致相关技术中的数据重构方法,存在计算量大、重构时间长的问题。

具体实施方式

[0101] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在根据本实施例的启示下作出的所有其他实施例,都属于本申请保护的范围。
[0102] 本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0103] 名词解释:
[0104] 独立冗余磁盘阵列(Redundant Array of Independent Disks,简称RAID):又称磁盘阵列,是由很多块独立的硬盘,组合成一个容量巨大的硬盘组,利用多个硬盘提供数据所产生加成效果提升整个硬盘组的性能。也就是说,RAID可实现比单块硬盘更好的存储性能和更高的可靠性。
[0105] 热备硬盘:是指磁盘阵列中的一块备用硬盘,当某一硬盘失效时,该热备硬盘可以接管失效硬盘的工作,保证数据的连续性和可靠性。热备硬盘的作用就是在某一硬盘失效时,提供即时的替代。
[0106] 热辅助存储记录(heat‑assisted magnetic recording,简称HAMR):利用激光束加热磁介质表面,可以使高矫顽力的磁性材料在高温下容易磁化翻转写入,写入后在常温下又可以保持高矫顽力条件下稳定的磁化状态,从而提高记录密度的技术。
[0107] 柱面‑磁头‑扇区(Cylinder‑Head‑Sector,简称CHS)寻址:每一张盘片的两面,都铺满了磁粉,磁粉是用来储存数据的。将盘片划分为N个同心圆,一个同心圆被称为一个磁道(Track)。所有盘片上半径相等的同心圆可以看作是一个圆柱体。圆柱体的侧面被称为柱面(Cylinder)。这些柱面是由所有盘片的两个面上的等长半径的磁道组成的,因此知道柱面的编号,就等于知道了磁道的编号。将每一个磁道划分出M个区段,称为扇区(Sector)。柱面(Cylinder)编号、磁头(Head)编号以及扇区(Sector)编号组成了物理区块地址(Physics Block Address,简称PBA)。这种依据柱面编号、磁头编号、扇区编号来查找存储数据的位置的方法,叫做CHS寻址,使用CHS寻址,是寻找的物理区块地址。
[0108] 相关技术中,可以通过调整磁头和盘片的密度的方式,提高硬盘的容量。但是,随着磁头和盘片的密度的提高,磁头的飞行高度越来越低,增大了磁头出现故障的概率。另外,相关技术中,可以采用HAMR技术,磁头可以作为激光器,发射激光对写入区域加热,以降低盘片写入难度,从而提高硬盘的容量。但是,这种激光加热的方式会导致磁头存在寿命限制,增加了磁头出现故障的概率。
[0109] 由于同一硬盘组中的每个硬盘中可以包括多个磁头。在硬盘中的一个磁头出现故障的情况下,整个硬盘都会上报失效。相关技术中,基于RAID技术,可以利用同一硬盘组中的其他硬盘中存储的数据,重构出失效硬盘中存储的全部的数据,并存储至热备硬盘中。但是,相关技术中,需要放弃失效硬盘上存储的全部数据,然后从同一硬盘组中的其他硬盘上读取数据,并进行计算,才能得到失效硬盘中的全部数据,导致相关技术中的数据重构方法,存在计算量大、重构时间长的问题。
[0110] 基于上述技术问题,本申请实施例提出了一种数据重构方法,能够仅重构失效磁头对应的待重构数据。
[0111] 下面对本申请实施例的数据重构方案进行详细的说明。
[0112] 图1为本申请实施例提供的一种计算设备的结构图,如图1所示,该计算设备10可以包括控制器101,以及与控制器101电连接的至少两个硬盘。示例性地,图1示出了四个硬盘,分别为硬盘102、硬盘103、硬盘104以及硬盘105。
[0113] 以硬盘102为例。硬盘102包括至少一个盘片以及至少两个磁头。另外,硬盘102还可以包括马达、硬盘控制器等部件。
[0114] 控制器101可以为中央处理器(Central Processing Unit,简称CPU),可以为基板管理控制器(Baseboard Management Controller,简称BMC),可以为磁盘阵列控制器,还可以为其他具备处理能力的器件。
[0115] 其中,中央处理器(Central Processing Unit,简称CPU):作为计算设备10的运算和控制核心,是信息处理、程序运行的最终执行单元。中央处理器是一块超大规模的集成电路,由运算器、控制器、寄存器等组成,其主要任务是加工和处理各种数据。
[0116] 基板管理控制器(Baseboard Management Controller,简称BMC):作为一个嵌入在计算设备10中的独立的处理器,可以用于监测计算设备软硬件信息、健康状态以及运行状态。需要说明的是,不同公司的计算设备10对BMC有不同的称呼,例如一些公司称为BMC,一些公司称为Integrated Lights‑Out(简称iLO),另一些公司称为Integrated Dell Remote Access Controller(简称iDRAC)。不论是叫BMC,还是叫iLO或iDRAC,都可以理解为是本申请实施例中的BMC。
[0117] 磁盘阵列控制器:又称磁盘阵列(Redundant Arrays of Independent Disks,简称RAID)卡,可以将多个独立的硬盘,按照不同的方式组成一个硬盘组(逻辑硬盘)。
[0118] 需要说明的是,图1仅是本申请实施例提供的一种计算设备的结构图,本申请实施例不对图1中包括的各种设备的实际形态进行限定,也不对图1中设备之间的交互方式进行限定,在方案的应用中,可以根据实际需求设定。
[0119] 下面,通过具体实施例对本申请实施例的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程在某些实施例中不再赘述。
[0120] 图2为本申请实施例提供的一种数据重构方法实施例一的流程示意图。参见图2,该方法具体包括以下步骤:
[0121] S201:在硬盘失效的情况下,失效硬盘向控制器发送失效硬盘中的失效磁头的标识。
[0122] 在本实施例中,计算设备可以包括多个硬盘,每个硬盘可以包括至少一个盘片,每个盘片包括两个磁碟面。一般地,一个磁头对应一个磁碟面。每个磁头可以对该磁头对应的磁碟面的存储区域,进行读写操作。
[0123] 硬盘的某个磁头出现故障时,该硬盘无法通过该磁头读取该磁头对应的磁碟面所存储的数据。硬盘可以确定该硬盘为失效硬盘,该磁头为失效磁头。失效磁头对应的磁碟面所存储的数据为待重构数据。
[0124] 另外,该硬盘还可以确定该硬盘中的其他未失效的磁头为有效磁头。有效磁头对应的磁碟面所存储的数据为有效数据。
[0125] 失效硬盘可以向控制器发送失效硬盘中的失效磁头的标识。
[0126] 在一种实现方式中,失效磁头的标识可以为失效磁头对应的错误码。控制器可以预先向硬盘发送每个磁头对应的错误码。失效硬盘在硬盘失效的情况下,可以确定失效磁头对应的错误码,并向控制器发送失效磁头对应的错误码。举例来说,失效磁头对应的错误码可以为04,04,04xx。
[0127] S202:控制器获取失效磁头的标识对应的待重构数据总量。
[0128] 在本实施例中,控制器在获取失效磁头的标识后,可以获取失效磁头的标识对应的待重构数据总量。
[0129] 在一种实现方式中,控制器中存储每个磁头的标识对应的数据总量。控制器可以在获取失效磁头的标识后,确定失效磁头的标识对应的数据总量(待重构数据总量)。
[0130] 在一种实现方式中,控制器在获取失效磁头的标识后,可以向失效硬盘发送获取请求,以获取失效硬盘发送的失效磁头的标识对应的数据总量(待重构数据总量)。
[0131] S203:控制器根据待重构数据总量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数。
[0132] 在本实施例中,控制器在获取失效磁头的标识对应的待重构数据总量后,可以根据待重构数据总量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数。
[0133] 在一种实现方式中,控制器可以根据待重构数据总量,以及预设重构次数,确定每次重构过程中的数据重构表中,待重构数据的标识的个数。
[0134] 在一种实现方式中,控制器可以根据待重构数据总量,控制器的当前可用计算量和当前可用内存容量,直接确定出每次重构过程中的数据重构表中,待重构数据的标识的个数。其中,控制器的当前可用计算量和当前可用内存容量,可以反映控制器的处理能力。通过上述方式,可以基于控制器的处理能力,将重构全部的待重构数据的过程,划分为多次重构过程,从而避免出现仅执行一次重构过程,无法重构全部的待重构数据的情况,保证了重构待重构数据的完整性。
[0135] 在一种实现方式中,在每次重构过程中,控制器可以根据待重构数据总量,控制器的当前可用计算量和当前可用内存容量,确定出该重构过程中的数据重构表中,待重构数据的标识的个数。其中。每个数据重构表中的待重构数据的标识的个数相同或者不同。通过上述方式,可以充分利用控制器的重构能力,减少重构次数,提高重构效率。
[0136] 需要说明的是,待重构数据的标识可以为待重构数据的逻辑区块地址(Logical Block Address,简称LBA)范围。待重构数据的标识也可以为存储待重构数据的数据块的标识。
[0137] S204:控制器向失效硬盘发送待重构数据的标识的个数。
[0138] 在本实施例中,在一次重构过程中,控制器在确定出该重构过程中的数据重构表中的待重构数据的标识的个数时,可以向失效硬盘发送待重构数据的标识的个数。
[0139] S205:失效硬盘在接收到控制器发送的待重构数据的标识的个数时,构建数据重构表。
[0140] 在本实施例中,失效硬盘在接收到控制器发送的待重构数据的标识的个数时,可以根据待重构数据的标识的个数,构建数据重构表。
[0141] 具体地,失效硬盘可以存储磁头内容。该磁头内容包括每个磁头对应的全部数据的标识。
[0142] 失效硬盘在接收到控制器发送的待重构数据的标识的个数时,可以根据失效磁头的标识,确定失效磁头对应的全部的待重构数据的标识。失效硬盘可以从全部的待重构数据的标识中,选择与待重构数据的标识的个数匹配的待重构数据的标识,以构建数据重构表。
[0143] 在一种实现方式中,磁头内容还可以包括每个磁头对应的全部数据的标识所对应的优先级。失效硬盘在接收到控制器发送的待重构数据的标识的个数时,还可以根据失效磁头的标识,确定失效磁头对应的每个待重构数据的标识对应的优先级。失效硬盘可以根据全部的待重构数据的标识,待重构数据的标识的个数,以及每个待重构数据的标识对应的优先级,构建数据重构表。
[0144] S206:失效硬盘向控制器发送数据重构表。
[0145] 在本实施例中,失效硬盘可以在构建数据重构表后,可以向控制器发送数据重构表。
[0146] S207:控制器根据数据重构表中的待重构数据的标识,重构待重构数据。
[0147] 在本实施例中,控制器可以获取失效硬盘发送的数据重构表。
[0148] 针对失效硬盘中的待重构数据:
[0149] 控制器在获取数据重构表后,可以根据数据重构表中的待重构数据的标识,进行数据重构。
[0150] 具体地,控制器可以根据待重构数据的标识,确定对应的冗余数据(用于重构待重构数据的数据)的标识。控制器可以根据冗余数据的标识,读取存储在其他硬盘中的冗余数据。控制器可以根据冗余数据,重构待重构数据。
[0151] 在一种实现方式中,在待重构数据的标识为待重构数据的逻辑区块地址范围的情况下,控制器可以根据待重构数据的逻辑区块地址范围,确定对应的冗余数据的逻辑区块地址范围。其中,冗余数据为用于重构待重构数据的数据。控制器可以根据冗余数据的逻辑区块地址范围,读取冗余数据。控制器可以根据冗余数据,重构待重构数据。
[0152] 在一种实现方式中,在待重构数据的标识为存储待重构数据的数据块的标识的情况下,控制器可以根据存储待重构数据的数据块的标识,确定对应的存储冗余数据的数据块的标识。控制器可以根据存储冗余数据的数据块的标识,读取冗余数据。控制器可以在读取冗余数据后,根据冗余数据,重构待重构数据。
[0153] 另外,控制器在重构待重构数据后,可以将重构的待重构数据存储至热备硬盘中。
[0154] 另外,针对失效硬盘中的有效数据:
[0155] 在一种实现方式中,控制器可以向失效硬盘发送有效数据获取请求。失效硬盘可以响应于有效数据获取请求,生成并发送有效数据列表。其中,有效数据列表可以包括有效数据的标识。控制器可以在获取硬盘发送的有效数据列表后,根据有效数据的标识,读取失效硬盘中的有效数据,并将有效数据转储至其他硬盘中,一方面,可以避免有效数据仍然存储至失效硬盘中,导致有效数据失效的概率增加。另一方面,无需重构失效硬盘中的全部数据,针对失效硬盘中的有效数据,可以直接转储至其他硬盘,相较于直接重构有效数据,并将重构后的有效数据存储至其他硬盘而言,本实现方式加速了数据的迁移。
[0156] 在一种实现方式中,针对失效硬盘中的有效数据,基于有效磁头对应的数据并未丢失,因此,有效数据可以保存在失效硬盘中,以避免转储至其他硬盘导致存储空间的浪费。
[0157] 本实施例中,在硬盘失效的情况下,失效硬盘可以向控制器发送失效硬盘中的失效磁头的标识。控制器可以基于失效硬盘发送的失效磁头的标识,确定待重构数据总量,进而根据待重构数据总量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数,以使得失效硬盘可以基于待重构数据的标识的个数,构建数据重构表。控制器可以在接收到失效硬盘发送的数据重构表时,可以根据数据重构表中的待重构数据的标识,重构待重构数据。通过上述仅重构失效磁头对应的待重构数据的方式,缩小了待重构数据的范围,减小了重构计算量,缩短了重构时长,进而缩短了硬盘组处于降级状态的时长。
[0158] 图3a为本申请实施例提供的一种数据重构方法实施例二的流程示意图。参见图3a,该方法具体包括以下步骤:
[0159] S301:在硬盘失效的情况下,失效硬盘向控制器发送失效硬盘中的失效磁头的标识。
[0160] 在本实施例中,在硬盘失效的情况下,失效硬盘可以向控制器发送失效硬盘中的失效磁头的标识。其具体实现过程与S201相同,此处不再赘述。
[0161] S302:控制器获取失效磁头的标识对应的待重构数据总量。
[0162] 在本实施例中,控制器可以获取失效磁头的标识对应的待重构数据总量。其具体实现过程与S202相同,此处不再赘述。
[0163] S303:控制器根据待重构数据总量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数。
[0164] 在本实施例中,控制器可以根据待重构数据总量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数。其具体实现过程与S203相同,此处不再赘述。
[0165] S304:控制器向失效硬盘发送待重构数据的标识的个数。
[0166] 在本实施例中,在一次重构过程中,控制器在确定出该重构过程中的数据重构表中的待重构数据的标识的个数时,可以向失效硬盘发送待重构数据的标识的个数。其具体实现过程与S204相同,此处不再赘述。
[0167] S305:失效硬盘在接收到控制器发送的待重构数据的标识的个数时,根据失效磁头的标识,确定失效磁头对应的全部的待重构数据的标识。
[0168] 在本实施例中,每个硬盘中,皆存储该硬盘中的每个磁头对应的全部数据的标识。
[0169] 失效硬盘在接收到控制器发送的待重构数据的标识的个数时,可以根据失效磁头的标识,确定失效磁头对应的全部的待重构数据的标识。
[0170] S306:失效硬盘根据失效磁头的标识,确定失效磁头对应的每个待重构数据的标识对应的优先级。
[0171] 在本实施例中,失效硬盘可以根据失效磁头的标识,确定失效磁头对应的每个待重构数据的标识对应的优先级。其中,每个待重构数据的标识对应的优先级,表示该待重构数据的重要性级别,表示在磁头失效情况下该待重构数据的重构优先级。
[0172] 举例来说,第一待重构数据的标识对应的优先级为高级,第二待重构数据的标识对应的优先级为中级,第三待重构数据的标识对应的优先级为低级。
[0173] S307:失效硬盘根据全部的待重构数据的标识,待重构数据的标识的个数,以及每个待重构数据的标识对应的优先级,构建数据重构表。
[0174] 在本实施例中,失效硬盘可以根据全部的待重构数据的标识,待重构数据的标识的个数,以及每个待重构数据的标识对应的优先级,构建数据重构表。
[0175] 具体地,失效硬盘可以根据每个待重构数据的优先级,对全部的待重构数据的标识进行排序。其中,优先级较高的待重构数据的标识排序在前,优先级较低的待重构数据的标识排序在后。失效硬盘可以从全部的待重构数据的标识中,选择出排序序号小于或者等于待重构数据的标识的个数的待重构数据的标识,以构建待重构数据。
[0176] 举例来说,在第一待重构数据的标识对应的优先级为高级,第二待重构数据的标识对应的优先级为中级,第三待重构数据的标识对应的优先级为低级的情况下,失效硬盘可以对第一待重构数据的标识、第二待重构数据的标识以及第三待重构数据的标识进行排序。失效硬盘可以确定出第一待重构数据的标识的排序序号为1,第二待重构数据的标识的排序序号为2,第三待重构数据的标识的排序序号为3。基于待重构数据的标识的个数为2,失效硬盘可以选择出排序序号小于或者等于待重构数据的标识的个数的待重构数据的标识——第一待重构数据的标识和第二待重构数据的标识,以构建待重构数据。
[0177] S308:失效硬盘向控制器发送数据重构表。
[0178] 在本实施例中,失效硬盘可以在构建数据重构表后,可以向控制器发送数据重构表。
[0179] S309:控制器根据数据重构表中的待重构数据的标识,重构待重构数据。
[0180] 在本实施例中,控制器可以根据数据重构表中的待重构数据的标识,重构待重构数据。
[0181] 具体地,控制器可以根据数据重构表中的待重构数据的标识,确定对应的冗余数据的标识,并根据冗余数据的标识,读取存储在其他硬盘中的冗余数据。控制器可以根据冗余数据,重构待重构数据。
[0182] 在一种实现方式中,在冗余数据为待重构数据的镜像数据的情况下,控制器可以直接复制冗余数据,以完成对待重构数据的重构处理。
[0183] 在一种实现方式中,在冗余数据为参与异或运算的校验数据和另一写入数据的情况下,控制器可以采用异或运算的方式,重构待重构数据。
[0184] 下面对控制器可以采用异或运算(XOR)的方式,重构待重构数据的原理进行说明。
[0185] P=A XOR B
[0186] 其中,P为XOR结果,A和B为写入数据。
[0187] 表1为异或运算的校验原理,如表1所示:
[0188] 表1异或运算的校验原理
[0189]
[0190] 基于表1可知,A与B相同时,XOR结果为0,A与B不同时,XOR结果就是1。也就是说,在已知XOR结果和A与B中的任何一个数值的情况下,可以反推出另一个数值。示例性地,当A为1,XOR结果为1时,B为0。当A为1,XOR结果为0时,B为1。
[0191] 写入数据在写入至硬盘组(包括多个硬盘)的硬盘的过程中,控制器可以基于采用异或运算,计算出该写入数据与另一写入数据对应的校验数据,并存储至硬盘组的硬盘中。因此,在一个写入数据需要重构的情况下,控制器可以利用另一写入数据以及校验数据,进行异或运算,计算得到写入数据(待重构数据)。
[0192] 下面通过具体的示例,对重构数据的过程进行说明。
[0193] 图3b为本申请实施例提供的一种重构数据的场景示意图。如图3b所示,硬盘1、硬盘2以及硬盘3中存储的数据以条带形式分布,每个条带包括多个分条,每个条带的多个分条,分布在不同的硬盘上。
[0194] 硬盘1和硬盘2为其他硬盘。硬盘4为热备硬盘。
[0195] 硬盘3为失效硬盘。硬盘3中的分条9为待重构数据、分条3为有效数据、分条6为有效数据、分条13为有效数据。
[0196] 硬盘1中的分条1、硬盘2中的分条8与硬盘3中的分条9处于同一条带。计算设备可以基于硬盘1中的分条1和硬盘2中的分条8,采用异或运算,重构分条9,并将分条9存储至硬盘4中。
[0197] 另外,控制器还可以将硬盘3中的分条3、分条6以及分条13,转储至硬盘4中。
[0198] 本实施例中,失效硬盘在构建数据重构表时,可以将每个待重构数据的标识对应的优先级,纳入到构建数据重构表的过程中,以使得数据重构表中记录优先级高的待重构数据的标识,从而使得控制器可以优先重构优先级高的待重构数据。
[0199] 下面对RAID模式下,进行数据重构的过程进行详细说明。
[0200] 图4a为本申请实施例提供的一种划分硬盘逻辑区块地址的示意图。如图4a所示,在RAID模式下,硬盘的每个磁头对应的存储区域可以划分为多个存储区域,每个存储区域对应一个物理区块地址范围。将每个物理区块地址范围,与一个逻辑区块地址范围建立映射关系,以使得每个物理区块地址范围对应一个逻辑区块地址范围。也就是说,可以将一个磁头对应的磁碟面的存储区域,划分为多个逻辑区块地址范围。
[0201] 图4b为本申请实施例提供的一种数据重构方法实施例三的流程示意图。参见图4b,该方法具体包括以下步骤:
[0202] S401:在硬盘失效的情况下,失效硬盘向控制器发送失效硬盘中的失效磁头的标识。
[0203] 在本实施例中,在硬盘失效的情况下,失效硬盘可以向控制器发送失效硬盘中的失效磁头的标识。其具体实现过程与S201相同,此处不再赘述。
[0204] S402:控制器获取失效磁头的标识对应的待重构数据总量。
[0205] 在本实施例中,控制器可以获取失效磁头的标识对应的待重构数据总量。其具体实现过程与S202相同,此处不再赘述。
[0206] S403:控制器根据待重构数据总量,确定待重构数据的标识的个数。
[0207] 在本实施例中,控制器可以根据待重构数据总量,确定待重构数据的标识的个数。其具体实现过程与S203相同,此处不再赘述。
[0208] S404:控制器向失效硬盘发送待重构数据的标识的个数。
[0209] 在本实施例中,在一次重构过程中,控制器在确定出该重构过程中的数据重构表中的待重构数据的标识的个数时,可以向失效硬盘发送待重构数据的标识的个数。其具体实现过程与S204相同,此处不再赘述。
[0210] S405:失效硬盘在接收到控制器发送的待重构数据的标识的个数时,构建数据重构表。
[0211] 在本实施例中,失效硬盘在接收到控制器发送的待重构数据的标识的个数时,可以构建数据重构表。其中,数据重构表包括与待重构数据的标识的个数匹配的待重构数据的标识。
[0212] 具体地,失效硬盘可以存储该失效硬盘的磁头内容。
[0213] 失效硬盘的磁头内容可以包括下述内容:
[0214] {
[0215] 版本号:V1.0
[0216] 磁头号:XXXX
[0217] LBA范围:XXX‑XXX
[0218] LBA间隔总数:XX
[0219] LBA间隔1:起LBA—止LBA,标记
[0220] LBA间隔2:起LBA—止LBA,标记
[0221] …
[0222] 磁头号:XXXX
[0223] LBA范围:XXX‑XXX
[0224] LBA间隔总数:XX
[0225] LBA间隔1:起LBA—止LBA,标记
[0226] LBA间隔2:起LBA—止LBA,标记
[0227] …
[0228] CRC
[0229] }
[0230] 需要说明的是,CRC为循环冗余校验(Cyclic Redundancy Check,简称CRC)。标记为当前的数据情况,包括有效数据和待重构数据。
[0231] 在一种实现方式中,在硬盘识别到出现失效磁头时,也就是说,在确定硬盘为失效硬盘时,可以将失效磁头号对应的每个LBA间隔(逻辑区块地址范围)的标记由有效数据,更新为待重构数据。
[0232] 失效硬盘在接收到控制器发送的待重构数据的标识的个数时,基于失效磁头的磁头内容——全部的待重构数据的标识,生成数据重构表。其中,数据重构表包括与待重构数据的标识的个数匹配的待重构数据的标识,待重构数据的标识为待重构数据的逻辑区块地址范围(起LBA—止LBA)。
[0233] S406:失效硬盘向控制器发送数据重构表。
[0234] 在本实施例中,失效硬盘向控制器发送数据重构表。其具体实现过程与S206相同,此处不再赘述。
[0235] S407:控制器根据数据重构表中的待重构数据的逻辑区块地址范围,确定对应的冗余数据的逻辑区块地址范围。
[0236] 在本实施例中,控制器根据数据重构表中的待重构数据的逻辑区块地址范围,确定对应的冗余数据的逻辑区块地址范围。
[0237] 在本实施例中,冗余数据为用于重构待重构数据的数据。在一种实现方式中,冗余数据可以为待重构数据的备份数据;在一种实现方式中,冗余数据可以为参与异或运算的校验数据和另一写入数据。
[0238] 控制器可以存储待重构数据的逻辑区块地址范围与冗余数据的逻辑区块地址范围的对应关系。
[0239] 控制器可以在根据数据重构表,获取待重构数据的逻辑区块地址范围后,查找上述对应关系,确定对应的冗余数据的逻辑区块地址范围。
[0240] S408:控制器根据冗余数据的逻辑区块地址范围,读取存储在其他硬盘中的冗余数据。
[0241] 在本实施例中,控制器在确定冗余数据的逻辑区块地址范围后,可以直接根据冗余数据的逻辑区块地址范围,读取其他硬盘中存储的冗余数据。
[0242] 在一种实现方式中,控制器可以在确定冗余数据的逻辑区块地址范围后,可以向存储冗余数据的其他硬盘发送读取请求,其中,读取请求包括冗余数据的逻辑区块地址范围。其他硬盘可以响应于接收到读取请求,根据冗余数据的逻辑区块地址范围,确定冗余数据的物理区块地址(Physics Block Address,简称PBA)范围。其他硬盘可以基于冗余数据的物理区块地址范围,读取冗余数据,并将冗余数据发送至控制器。
[0243] S409:控制器根据冗余数据,重构待重构数据。
[0244] 在本实施例中,控制器在读取冗余数据后,可以根据冗余数据,进行数据重构,以重构待重构数据。其具体实现过程与S309相同,此处不再赘述。
[0245] 另外,针对失效硬盘中的有效数据:
[0246] 在一种实现方式中,控制器可以向失效硬盘发送有效数据获取请求。失效硬盘可以根据有效数据获取请求,确定有效数据列表,并向控制器发送有效数据列表。其中,有效数据列表可以包括有效数据的逻辑区块地址范围。控制器可以在获取失效硬盘发送的有效数据列表后,根据有效数据的逻辑区块地址范围,读取失效硬盘中的有效数据,并将有效数据转储至热备硬盘中,以避免有效数据仍然存储至失效硬盘中,导致有效数据失效的概率增加。
[0247] 在一种实现方式中,针对失效硬盘中的有效数据,基于有效磁头对应的数据并未丢失,因此,有效数据可以保存在失效硬盘中,以避免转储至热备硬盘导致存储空间的浪费。
[0248] 本实施例中,在RAID模式下,数据的物理区块地址范围与逻辑区块地址范围之间存在映射关系。控制器可以根据待重构数据的标识(待重构数据的逻辑区块地址范围),确定对应的冗余数据(用于重构待重构数据的数据)的逻辑区块地址范围,从而根据冗余数据的逻辑区块地址范围,读取冗余数据,以进行数据重构。相较于相关技术中,是对失效硬盘中的全部数据进行重构而言,本申请实施例仅对失效磁头对应的待重构数据进行重构,缩小了重构数据的范围,减小了重构计算量,缩短了重构时长,进而缩短了硬盘组处于降级状态的时长,提高了硬盘组的可靠性。
[0249] 键值对(Key‑Value,简称KV)模式下,Key值为存储数据的数据块的标识,Value值为任意数据量的数据。下面对KV模式下,进行数据重构的过程进行详细说明。
[0250] 首先对KV系统架构进行说明。
[0251] 图5a为本申请实施例提供的一种KV系统的示意图。
[0252] 如图5a所示,控制器可以基于需求,将多个硬盘的存储空间划分为多个小粒度的数据块(Chunk)。控制器可以抽取不同硬盘上的数据块,构成数据块组(Chunk Group)。控制器可以将这些数据块组切分为更小的Exent,再将Extent进一步划分为多个更小的数据块——Grain。全部的Grain组成存储资源池。多个Extent组成了卷(Volume),卷(Volume)对外体现为可供读写的LUN。在映射至LUN时,是以Grain为单位,映射到LUN,从而实现对存储容量的精细化管理。其中,LUN为可以映射至控制器进行读写的存储单元。在处理读写请求以及进行数据迁移时,LUN申请数据空间、释放数据空间以及迁移数据都是以Exent为单位进行的。
[0253] 图5b为本申请实施例提供的一种数据重构方法实施例三的流程示意图。参见图5b,该方法具体包括以下步骤:
[0254] S501:在硬盘失效的情况下,失效硬盘向控制器发送失效硬盘中的失效磁头的标识。
[0255] 在本实施例中,在硬盘失效的情况下,失效硬盘可以向控制器发送失效硬盘中的失效磁头的标识。其具体实现过程与S201相同,此处不再赘述。
[0256] S502:控制器获取失效磁头的标识对应的待重构数据总量。
[0257] 在本实施例中,控制器可以获取失效磁头的标识对应的待重构数据总量。其具体实现过程与S202相同,此处不再赘述。
[0258] S503:控制器根据待重构数据总量,确定待重构数据的标识的个数。
[0259] 在本实施例中,控制器可以根据待重构数据总量,确定待重构数据的标识的个数。其具体实现过程与S203相同,此处不再赘述。
[0260] S504:控制器向失效硬盘发送待重构数据的标识的个数。
[0261] 在本实施例中,在一次重构过程中,控制器在确定出该重构过程中的数据重构表中的待重构数据的标识的个数时,可以向失效硬盘发送待重构数据的标识的个数。其具体实现过程与S204相同,此处不再赘述。
[0262] S505:失效硬盘在接收到控制器发送的待重构数据的标识的个数时,构建数据重构表。
[0263] 在本实施例中,失效硬盘可以在接收到控制器发送的待重构数据的标识的个数时,构建数据重构表。其中,数据重构表包括与待重构数据的标识的个数匹配的待重构数据的标识。
[0264] 具体地,失效硬盘可以存储该失效硬盘的磁头内容。在一种实现方式中,失效硬盘可以预先获取控制器发送的KV参数——数据块的数据量。失效硬盘可以根据数据块的容量,确定每个数据块的标识对应的物理区块地址范围,以构建失效硬盘的磁头内容。
[0265] 具体地,失效硬盘的磁头内容可以包括下述内容:
[0266] {
[0267] 版本号:V1.0
[0268] 磁头号:XX
[0269] Key值范围:XXX‑XXX
[0270] KV总数:XX
[0271] KV0:Key值,标记
[0272] KV1:Key值,标记
[0273] …
[0274] KVn:Key值,标记
[0275] 磁头号:XX
[0276] Key值范围:XXX‑XXX
[0277] KV间隔总数:10
[0278] KV0:Key值,标记
[0279] KV1:Key值,标记
[0280] …
[0281] KVn:Key值,标记
[0282] CRC
[0283] }
[0284] 需要说明的是,CRC为循环冗余校验(Cyclic Redundancy Check,简称CRC)。标记表示当前的数据情况,包括有效数据和待重构数据。
[0285] 在硬盘为失效硬盘的情况下,失效硬盘可以根据失效磁头对应的待重构数据的物理区块地址范围,确定存储待重构数据的数据块的标识,并将存储待重构数据的数据块所对应的标记,由有效数据,更新为待重构数据。
[0286] 失效硬盘在接收到控制器发送的待重构数据的标识的个数时,基于失效磁头的磁头内容——全部的待重构数据的标识,生成数据重构表。其中,数据重构表包括与待重构数据的标识的个数匹配的待重构数据的标识,待重构数据的标识可以为存储待重构数据的数据块的标识(Key值)。
[0287] S506:失效硬盘向控制器发送数据重构表。
[0288] 在本实施例中,失效硬盘向控制器发送数据重构表。其具体实现过程与S205相同,此处不再赘述。
[0289] S507:控制器根据数据重构表中的存储待重构数据的数据块的标识,确定对应的存储冗余数据的数据块的标识。
[0290] 在本实施例中,冗余数据为用于重构待重构数据的数据。
[0291] 控制器可以存储下述对应关系,存储待重构数据的数据块的标识,与存储冗余数据的数据块的标识之间的对应关系。
[0292] 控制器可以在根据数据重构表,获取存储待重构数据的数据块的标识后,查找上述对应关系,确定对应的存储冗余数据的数据块的标识。
[0293] S508:控制器根据存储冗余数据的数据块的标识,读取存储在其他设备中的冗余数据。
[0294] 在本实施例中,控制器在确定存储冗余数据的数据块的标识后,可以直接根据存储冗余数据的数据块的标识,读取其他硬盘中存储的冗余数据。
[0295] 需要说明的是,基于存储冗余数据的数据块的标识,读取冗余数据的过程,可以视为基于Key值(存储数据的数据块的标识),查找对应的Value值(任意数据量的数据)的过程。
[0296] S509:控制器根据冗余数据,重构待重构数据。
[0297] 在本实施例中,控制器在读取冗余数据后,可以根据冗余数据,进行数据重构,以重构待重构数据。其具体实现过程与S309相同,此处不再赘述。
[0298] 另外,针对失效硬盘中的有效数据:
[0299] 在一种实现方式中,控制器可以向失效硬盘发送有效数据获取请求。失效硬盘可以响应于有效数据获取请求,生成并向控制器发送有效数据列表。其中,有效数据列表可以包括存储有效数据的数据块的标识。控制器可以在获取硬盘发送的有效数据列表后,根据存储有效数据的数据块的标识,读取失效硬盘中的有效数据,并将有效数据转储至其他硬盘中,以避免有效数据仍然存储至失效硬盘中,导致有效数据失效的概率增加。
[0300] 在一种实现方式中,针对失效硬盘中的有效数据,基于有效磁头对应的数据并未丢失,因此,有效数据可以保存在失效硬盘中,以避免转储至其他硬盘导致存储空间的浪费。
[0301] 本实施例中,在KV模式下,数据的物理区块地址范围与存储数据的数据块的标识之间存在映射关系。控制器可以根据待重构数据的标识(存储待重构数据的数据块的标识),确定对应的存储冗余数据(用于重构待重构数据的数据)的数据块的标识,从而根据存储冗余数据的数据块的标识,读取冗余数据,以进行数据重构。相较于相关技术中,是对失效硬盘中的全部数据进行重构而言,本申请实施例缩小了重构数据的范围,减小了重构计算量,缩短了重构时长,加速了有效数据的数据迁移,进而缩短了硬盘组处于降级状态的时长,提高了硬盘组的可靠性。
[0302] 下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
[0303] 本申请实施例提供一种硬盘,该硬盘包括至少一个盘片和至少两个磁头;该硬盘与控制器电连接。图6为本申请实施例提供的一种硬盘的结构示意图。如图6所示,硬盘60还包括收发模块61和处理模块62。其中,收发模块61,用于在硬盘失效的情况下,向控制器发送硬盘中的失效磁头的标识;处理模块62,用于在接收到控制器发送的待重构数据的标识的个数时,构建数据重构表;数据重构表包括与待重构数据的标识的个数匹配的待重构数据的标识;收发模块61,还用于向控制器发送数据重构表;数据重构表用于供控制器重构待重构数据。
[0304] 本实施例提供的硬盘,可以执行上述方法实施例中执行主体为硬盘的技术方案,其有益效果类似,此处不再进行赘述。
[0305] 在一种实现方式中,处理模块62,具体用于:在接收到控制器发送的待重构数据的标识的个数时,根据失效磁头的标识,确定失效磁头对应的全部的待重构数据的标识;根据全部的待重构数据的标识和待重构数据的标识的个数,构建数据重构表。
[0306] 本实施例提供的硬盘,可以执行上述方法实施例中执行主体为硬盘的技术方案,其有益效果类似,此处不再进行赘述。
[0307] 在一种实现方式中,处理模块62,还用于:根据失效磁头的标识,确定失效磁头对应的每个待重构数据的标识对应的优先级;处理模块62,具体用于根据全部的待重构数据的标识,待重构数据的标识的个数,以及每个待重构数据的标识对应的优先级,构建数据重构表。
[0308] 本实施例提供的硬盘,可以执行上述方法实施例中执行主体为硬盘的技术方案,其有益效果类似,此处不再进行赘述。
[0309] 本申请实施例提供一种控制器,控制器与多个硬盘电连接,每个硬盘包括至少一个盘片和至少两个磁头。图7为本申请实施例提供的一种控制器的结构示意图。如图7所示,控制器70包括收发模块71和处理模块72。其中,收发模块71,用于当接收到失效硬盘发送的失效磁头的标识时,获取失效磁头的标识对应的待重构数据总量;处理模块72,用于根据待重构数据总量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数;收发模块71,还用于向失效硬盘发送待重构数据的标识的个数;收发模块71,还用于获取失效硬盘发送的数据重构表;数据重构表包括与待重构数据的标识的个数匹配的待重构数据的标识;
处理模块72,还用于根据数据重构表中的待重构数据的标识,重构待重构数据。
[0310] 本实施例提供的控制器,可以执行上述方法实施例中执行主体为控制器的技术方案,其有益效果类似,此处不再进行赘述。
[0311] 在一种实现方式中,处理模块72,具体用于:根据待重构数据总量,控制器的当前可用计算量和当前可用内存容量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数。
[0312] 本实施例提供的控制器,可以执行上述方法实施例中执行主体为控制器的技术方案,其有益效果类似,此处不再进行赘述。
[0313] 在一种实现方式中,处理模块72,具体用于:在每次重构过程中,根据待重构数据总量,控制器的当前可用计算量和当前可用内存容量,确定重构过程中的数据重构表中,待重构数据的标识的个数。
[0314] 本实施例提供的控制器,可以执行上述方法实施例中执行主体为控制器的技术方案,其有益效果类似,此处不再进行赘述。
[0315] 在一种实现方式中,处理模块72,具体用于:根据数据重构表中的待重构数据的标识,确定对应的冗余数据的标识;根据冗余数据的标识,读取存储在其他硬盘中的冗余数据;根据冗余数据,重构待重构数据。
[0316] 本实施例提供的控制器,可以执行上述方法实施例中执行主体为控制器的技术方案,其有益效果类似,此处不再进行赘述。
[0317] 在一种实现方式中,待重构数据的标识为待重构数据的逻辑区块地址范围;处理模块72,具体用于:根据数据重构表中的待重构数据的逻辑区块地址范围,确定对应的冗余数据的逻辑区块地址范围;根据冗余数据的逻辑区块地址范围,读取存储在其他硬盘中的冗余数据。
[0318] 本实施例提供的控制器,可以执行上述方法实施例中执行主体为控制器的技术方案,其有益效果类似,此处不再进行赘述。
[0319] 在一种实现方式中,待重构数据的标识为存储待重构数据的数据块的标识;处理模块72,具体用于:根据数据重构表中的存储待重构数据的数据块的标识,确定对应的存储冗余数据的数据块的标识;根据存储冗余数据的数据块的标识,读取存储在其他硬盘中的冗余数据。
[0320] 本实施例提供的控制器,可以执行上述方法实施例中执行主体为控制器的技术方案,其有益效果类似,此处不再进行赘述。
[0321] 本申请实施例提供一种计算设备,计算设备包括控制器,以及与控制器电连接的多个硬盘;每个硬盘包括至少一个盘片和至少两个磁头。在硬盘失效的情况下,失效硬盘,用于向控制器发送失效硬盘中的失效磁头的标识;控制器,用于获取失效磁头的标识对应的待重构数据总量;控制器,还用于根据待重构数据总量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数;失效硬盘,还用于在接收到控制器发送的待重构数据的标识的个数时,构建数据重构表;数据重构表包括与待重构数据的标识的个数匹配的待重构数据的标识;失效硬盘,还用于向控制器发送数据重构表;控制器,还用于根据数据重构表中的待重构数据的标识,重构待重构数据。
[0322] 本实施例提供的计算设备,可以执行上述方法实施例中的技术方案,其有益效果类似,此处不再进行赘述。
[0323] 在一种实现方式中,失效硬盘,具体用于:在接收到控制器发送的待重构数据的标识的个数时,根据失效磁头的标识,确定失效磁头对应的全部的待重构数据的标识;根据全部的待重构数据的标识和待重构数据的标识的个数,构建数据重构表。
[0324] 本实施例提供的计算设备,可以执行上述方法实施例中的技术方案,其有益效果类似,此处不再进行赘述。
[0325] 在一种实现方式中,失效硬盘,还用于:根据失效磁头的标识,确定失效磁头对应的每个待重构数据的标识对应的优先级;失效硬盘,具体用于:根据全部的待重构数据的标识,待重构数据的标识的个数,以及每个待重构数据的标识对应的优先级,构建数据重构表。
[0326] 本实施例提供的计算设备,可以执行上述方法实施例中的技术方案,其有益效果类似,此处不再进行赘述。
[0327] 在一种实现方式中,控制器,具体用于:根据待重构数据总量,控制器的当前可用计算量和当前可用内存容量,确定每次重构过程中的数据重构表中,待重构数据的标识的个数。
[0328] 本实施例提供的计算设备,可以执行上述方法实施例中的技术方案,其有益效果类似,此处不再进行赘述。
[0329] 在一种实现方式中,控制器,具体用于:在每次重构过程中,根据待重构数据总量,控制器的当前可用计算量和当前可用内存容量,确定重构过程中的数据重构表中,待重构数据的标识的个数。
[0330] 本实施例提供的计算设备,可以执行上述方法实施例中的技术方案,其有益效果类似,此处不再进行赘述。
[0331] 在一种实现方式中,控制器,具体用于:根据数据重构表中的待重构数据的标识,确定对应的冗余数据的标识;根据冗余数据的标识,读取存储在其他硬盘中的冗余数据;根据冗余数据,重构待重构数据。
[0332] 本实施例提供的计算设备,可以执行上述方法实施例中的技术方案,其有益效果类似,此处不再进行赘述。
[0333] 在一种实现方式中,待重构数据的标识为待重构数据的逻辑区块地址范围;控制器,具体用于:根据数据重构表中的待重构数据的逻辑区块地址范围,确定对应的冗余数据的逻辑区块地址范围;根据冗余数据的逻辑区块地址范围,读取存储在其他硬盘中的冗余数据。
[0334] 本实施例提供的计算设备,可以执行上述方法实施例中的技术方案,其有益效果类似,此处不再进行赘述。
[0335] 在一种实现方式中,待重构数据的标识为存储待重构数据的数据块的标识;控制器,具体用于:根据数据重构表中的存储待重构数据的数据块的标识,确定对应的存储冗余数据的数据块的标识;根据存储冗余数据的数据块的标识,读取存储在其他硬盘中的冗余数据。
[0336] 本实施例提供的计算设备,可以执行上述方法实施例中的技术方案,其有益效果类似,此处不再进行赘述。
[0337] 本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现前述任一方法实施例提供的技术方案。
[0338] 本申请实施例还提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时用于实现前述方法实施例提供的技术方案。
[0339] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0340] 最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页 第1页 第2页 第3页
相关技术
重构方法相关技术
毕德春发明人的其他相关专利技术