CN112543920B - 数据重构的方法、装置、计算机设备、存储介质及系统 - Google Patents

数据重构的方法、装置、计算机设备、存储介质及系统 Download PDF

Info

Publication number
CN112543920B
CN112543920B CN201980008279.9A CN201980008279A CN112543920B CN 112543920 B CN112543920 B CN 112543920B CN 201980008279 A CN201980008279 A CN 201980008279A CN 112543920 B CN112543920 B CN 112543920B
Authority
CN
China
Prior art keywords
storage device
matrix
block
partition
storage
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.)
Active
Application number
CN201980008279.9A
Other languages
English (en)
Other versions
CN112543920A (zh
Inventor
张进毅
董如良
陈亮
薛强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN112543920A publication Critical patent/CN112543920A/zh
Application granted granted Critical
Publication of CN112543920B publication Critical patent/CN112543920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)

Abstract

本发明公开了一种数据重构的方法、装置、计算机设备、存储介质及系统,属于数据存储技术领域。本方法直接根据获取的目标个数的存储设备的第一结果对第一条带中丢失的第一分块进行重构,从而无需从读取第一条带上未丢的分块,仅需要获取目标个数的第一结果,就可以对第一分块进行重构,由于第一结果与第一条带上未丢的分块相比数据量较少,在数据传输过程中,占用的网络带宽也比较少,从而提高了重构分块的性能。

Description

数据重构的方法、装置、计算机设备、存储介质及系统
技术领域
本申请涉及数据存储技术领域,特别涉及一种数据重构的方法、装置、计算机设备、存储介质及存储系统。
背景技术
为了提高存储系统的容错能力,一般采用纠删码(erasure coding,EC)以及分条技术,对待存储的数据进行数据存储,具体地,可以将待存储的数据划分为多个条带,若EC的冗余模式为N个数据块+M个校验块,则每个条带上包括N个数据块+M个校验块,其中,N和M为大于0的整数,1个数据块和一个校验块可以视为一个分块。每个条带所包括的N+M个分块可以存储在多个存储设备上,当任一个存储设备丢失存储的分块时丢失,为了保证丢失的分块不影响存储系统的正常业务,存储系统需要对丢失的分块进行程序。
分块重构可以是以下过程:对于丢失分块的条带,存储系统中的控制设备确定该条带中丢失的1个分块,并向存储设备发送N个读请求,每个读请求用于指示读取一个未丢失的分块,存储设备接收到每个请求后,向控制设备发送每个读请求指示的未丢失的分块,当控制设备获取到N个分块后,根据条带的校验矩阵以及获取的N个分块,获取丢失的分块,通过写请求将获取的丢失的分块发送给丢失分块的存储设备,该存储设备接收到该写请求后,将控制设备获取丢失的分块写入该存储节点内中,从而可以实现分块重构。
在上述分块重构过程中,控制设备和存储条带的存储设备之间需要传输N个读请求、N分块以及重构的分块,在传输过程中,会占用大量的网络带宽,从而降低了重构分块的性能。
发明内容
本发明实施例提供了一种数据重构的方法、装置、计算机设备、存储介质及系统,能够提高分块重构的性能。该技术方案如下:
第一方面,提供了一种数据重构的方法,该方法包括:确定第一条带中已丢失分块中的第一分块,所述第一条带中的分块由目标个数的存储设备存储;
获取所述目标个数的存储设备的第一结果,每个第一结果由所述目标个数的存储设备中的一个存储设备读取存储的所述第一条带的有效分块并且根据读取的有效分块计算得到;
根据所述目标个数的存储设备的第一结果,对所述第一分块进行重构。
基于上述实现方式,直接根据获取的目标个数的存储设备的第一结果对第一条带中丢失的第一分块进行重构,从而无需从读取第一条带上未丢的分块,仅需要获取目标个数的第一结果,就可以对第一分块进行重构,由于第一结果与第一条带上未丢的分块相比数据量较少,在数据传输过程中,占用的网络带宽也比较少,从而提高了重构分块的性能。
在一种可能实现方式中,所述获取所述目标个数的存储设备的第一结果之前,所述方法还包括:
将所述第一条带的校验矩阵拆分成第一子矩阵和所述目标个数的第二子矩阵,所述第一子矩阵包括所述第一分块所对应的列以及第二分块所对应的列,每个第二子矩阵包括所述第一条带中在一个存储设备上所存储的至少一个第三分块所对应的列,所述第二分块为所述第一条带的有效分块中的任一分块,所述第三分块为所述有效分块中除所述第二分块以外的任一分块;
所述根据所述目标个数的存储设备的第一结果,对所述第一分块进行重构包括:
根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构包括:
对所述目标个数的存储设备的第一结果进行求和,得到求和矩阵;
基于所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行确定为重构的第一分块。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之前,所述方法还包括:
向所述每个第二子矩阵所对应的存储设备分别发送第一获取请求,所述第一获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及控制设备的标识;
获取所述目标个数的存储设备基于所述第一获取请求返回的第一结果。
基于上述可能的实现方式,并且由于仅向各个存储设备发送一个第一获取请求就可以获取到各个存储设备发送的第一结果,而无需向各个存储设备发送大量的读请求,不仅降低了控制设备的CPU的开销,也进一步降低网络带宽的占用情况,进而可以进一步提高重构分块的性能。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之后,所述方法还包括:
向目标存储设备发送写请求,所述写请求携带重构的第一分块以及所述重构的第一分块的块信息,由所述目标存储设备根据所述重构的第一分块的块信息,对所述重构的第一分块进行存储。
在一种可能实现方式中,所述向目标存储设备发送写请求之前,所述方法还包括:
从存储所述第二分块的存储设备获取所述第二分块;
根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第二分块进行重构;
若重构的第二分块与获取的所述第二分块相同,则执行所述向目标存储设备发送写请求的步骤,否则,不执行所述向目标存储设备发送写请求的步骤,并且禁止使用所述第一条带。
基于上述可能的实现方式,并且通过比较第二分块与重构的第二分块的内容是否一致,可以避免出现数据静默的故障,提高了系统的可靠性。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之前,所述方法还包括:
向所述每个第二子矩阵所对应的存储设备分别发送第二获取请求,所述第二获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标存储设备的标识;
向所述目标存储设备发送目标重构请求,所述目标重构请求携带第一子矩阵,所述目标重构请求用于指示根据所述第一子矩阵,对所述第一分块进行重构;
接收所述目标存储设备发送的重构完成响应,所述重构完成响应用于指示所述第一分块重构完成。
基于上述可能的实现方式,由于仅向各个存储设备发送一个第二获取请求就可以获取到各个存储设备发送的第一结果,而无需向各个存储设备发送大量的读请求,不仅降低了控制设备的CPU的开销,也进一步降低网络带宽的占用情况,进而可以进一步提高重构分块的性能。
在一种可能实现方式中,所述确定第一条带中已丢失分块中的第一分块之前,所述方法还包括:
接收第一重构请求,所述第一重构请求携带存储设备中失效的存储介质的存储介质标识;
根据所述第一重构请求携带的存储介质标识,确定至少一个第二条带;
将所述至少一个第二条带中任一个条带确定为所述第一条带;
所述确定第一条带中已丢失分块中的第一分块包括:
根据所述存储介质标识,将所述第一条带中已丢失分块中的任一个分块确定为所述第一分块。
在一种可能实现方式中,所述确定第一条带中已丢失分块中的第一分块之前,所述方法还包括:
接收第二重构请求,所述第二重构请求携带存储设备中存储介质丢失的至少一个分块的块信息;
根据所述第二重构请求携带的至少一个分块的块信息,确定至少一个第二条带;
将所述至少一个第二条带中任一个条带确定为所述第一条带;
所述确定第一条带中已丢失分块中的第一分块包括:
根据所述至少一个分块的块信息,将所述第一条带中已丢失分块中的任一个分块确定为所述第一分块。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果,对所述第一分块进行重构之后,所述方法还包括:
查询所述第一条带的已丢失的所有分块是否全部重构完成,若未全部重构完成,则对未重构的任一个分块继续执行上述分块重构过程,否则所述第一条带重构完成。
在一种可能实现方式中,所述确定第一条带中已丢失分块中的第一分块之前,所述方法还包括:
查询所述目标个数的存储设备中的第一存储设备内的存储介质是否失效;
所述确定第一条带中已丢失分块中的第一分块包括:
若第一存储设备内的存储介质失效时,从失效的存储介质所存储的分块中,确定第一条带中已丢失分块中的第一分块。
在一种可能实现方式中,所述确定第一条带中已丢失分块中的第一分块之前,所述方法还包括:
查询所述目标个数的存储设备中的第一存储设备中的存储介质是否有分块丢失;
当所述第一存储设备内的任一存储介质丢失至少一个分块时,从所述至少一个分块中确定第一条带中已丢失分块中的第一分块。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之前,所述方法还包括:
向所述每个第二子矩阵所对应的存储设备的存储单元分别发送第三获取请求,所述第三获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及所述第一存储设备的标识;
获取所述目标个数的存储设备的存储单元基于所述第三获取请求返回的第一结果。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之前,所述方法还包括:
向所述每个第二子矩阵所对应的存储设备的存储单元分别发送第四获取请求,所述第四获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及主存储设备的标识;
从至少一个主存储设备获取至少一个目标求和矩阵,所述至少一个主存储设备用于管理所述目标个数的存储设备,每个目标求和矩阵为至少一个存储设备基于所述第四获取请求返回的第一结果的和,所述至少一个存储设备为一个主存储设备所管理的设备;
所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构包括:
根据所述至少一个目标求和矩阵以及所述第一子矩阵,对所述第一分块进行重构。
在一种可能实现方式中,所述根据所述至少一个目标求和矩阵以及所述第一子矩阵,对所述第一分块进行重构包括:
对所述至少一个目标求和矩阵进行求和,得到求和矩阵;
基于将所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行确定为重构的第一分块。
第二方面,提供了一种数据重构的方法,该方法包括:
读取存储设备存储的第一条带的有效分块,所述第一条带由目标个数的存储设备存储;
根据读取的有效分块计算,得到第一结果;
向所述目标设备发送所述第一结果,由所述目标设备根据所述目标个数的存储设备的第一结果,对所述第一条带中已丢失分块中的第一分块进行重构。
在一种可能实现方式中,所述读取第一存储设备存储的第一条带的有效分块之前,所述方法还包括:
接收获取请求,所述获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标设备的标识,所述第二子矩阵包括第一条带中在对应的存储设备上所存储的至少一个第三分块所对应的列,所述第二分块为所述第一条带的有效分块中的任一分块,所述第三分块为所述有效分块中除所述第二分块以外的任一分块;
所述读取第一存储设备存储的第一条带的有效分块包括:
根据所述第二子矩阵中每一列所对应的第三分块的块信息,读取所述至少一个第三分块。
所述根据读取的有效分块计算,得到第一结果包括:
根据所述至少一个第三分块以及所述第二子矩阵计算,得到所述第一结果。
在一种可能实现方式中,所述根据所述至少一个第三分块以及所述第二子矩阵计算,得到所述第一结果包括:
将所述至少一个第三分块组成分块矩阵,所述分块矩阵的每一行为一个第三分块;
将所述第二子矩阵与所述分块矩阵相乘,得到所述第一结果。
在一种可能实现方式中,所述目标设备包括控制设备、目标存储设备、第一存储设备以及至少一个主存储设备,所述第一存储设备为所述目标存储设备中的任一设备,所述至少一个主存储设备用于管理所述目标个数的存储设备;
当所述目标设备的标识为控制设备的标识时,所述获取请求为第一获取请求,用于指示向所述控制设备发送所述第一结果;
当所述目标设备的标识为目标存储设备的标识时,所述获取请求为第二获取请求,用于指示向所述目标存储设备发送所述第一结果;
当所述目标设备的标识为第一存储设备的标识时,所述获取请求为第三获取请求,用于指示向所述第一存储设备发送所述第一结果;
当所述目标设备的标识为主存储设备的标识时,所述获取请求为第四获取请求,用于指示向所述主存储设备发送所述第一结果。
在一种可能实现方式中,所述接收获取请求之前,所述方法还包括:
查询存储设备内的存储介质是否失效;
当所述存储设备中的存储介质失效时,向控制设备发送第一重构请求,所述第一重构请求携带所述存储设备中失效的存储介质的存储介质标识。
在一种可能实现方式中,所述接收获取请求之前,所述方法还包括:
查询存储设备中的存储介质是否有分块丢失;
当所述存储设备内的任一存储介质丢失至少一个分块时,向控制设备发送第二重构请求,所述第二重构请求携带所述至少一个分块的块信息。
第三方面,提供了一种数据重构的方法,该方法包括:
接收目标重构请求,所述目标重构请求携带第一子矩阵,所述目标重构请求用于指示根据所述第一子矩阵,对第一条带中已丢失分块中的第一分块进行重构,所述第一子矩阵包括所述第一条带中已丢失分块中的第一分块所对应的列以及第二分块所对应的列,所述第二分块为所述第一条带的有效分块中任一分块;
获取目标个数的存储设备基于所述第二获取请求返回的第一结果,所述第二获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标存储设备的标识,所述第一条带中的分块由所述目标个数的存储设备存储,每个第一结果由所述目标个数的存储设备中的一个存储设备读取存储的所述第一条带的有效分块并且根据读取的有效分块计算得到,所述第三分块为所述失效分块中除所述第二分块以外的任一分块:
根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构包括:
对所述目标个数的存储设备的第一结果进行求和,得到求和矩阵;
基于将所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块的第一目标行作为重构的第一分块。
在一种可能实现方式中,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之后,所述方法还包括:
对重构后的第一分块进行存储;
当对所述重构后的第一分块存储完成时,向控制设备发送重构完成响应,所述重构完成响应用于指示所述第一分块重构完成。
在一种可能实现方式中,所述对重构后的第一分块进行存储之前,所述方法还包括:
从存储所述第二分块的存储设备获取所述第二分块;
根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第二分块进行重构;
若重构的第二分块与获取的所述第二分块相同,则执行所述对重构后的第一分块进行存储的步骤,否则,不执行所述对重构后的第一分块进行存储的步骤,并且禁止使用所述第一条带。
第四方面,提供了一种分块重构的装置,用于执行上述数据重构的方法。具体地,该分块重构的装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的数据重构的方法的功能模块。
第五方面,提供了一种分块重构的装置,用于执行上述数据重构的方法。具体地,该分块重构的装置包括用于执行上述第二方面或上述第二方面的任一种可选方式提供的数据重构的方法的功能模块。
第六方面,提供了一种分块重构的装置,用于执行上述数据重构的方法。具体地,该分块重构的装置包括用于执行上述第三方面或上述第三方面的任一种可选方式提供的数据重构的方法的功能模块。
第七方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述数据重构的方法所执行的操作。
第八方面,提供一种存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述数据重构的方法所执行的操作。
第九方面,提供一种存储系统中数据重构的方法,所述存储系统包括控制设备和一个或多个存储设备,所述一个或多个存储设备中的每一个均包括一个硬盘;所述一个或多个存储设备用于存储所述控制设备生成的一个条带的分块;所述方法包括:
所述一个或多个存储设备中存储有所述条带的有效分块的第一存储设备读取存储的有效分块并且根据读取的有效分块计算得到第一结果;
所述第一存储设备将所述第一结果发送给所述控制设备;
所述控制设备接收所述第一结果并根据所述第一结果恢复所述条带中损坏的分块。
在一种可能实现方式中,所述条带是根据纠删码算法生成的。
在一种可能实现方式中,,所述一个或多个存储设备为硬盘框。
第十方面,提供一种存储系统,所述存储系统包括控制设备和一个或多个存储设备,所述一个或多个存储设备中的每一个均包括一个硬盘;所述一个或多个存储设备用于存储所述控制设备生成的一个条带的分块;
所述一个或多个存储设备中存储有所述条带的有效分块的第一存储设备用于读取存储的有效分块并且根据读取的有效分块计算得到第一结果,将所述第一结果发送给所述控制设备;
所述控制设备用于接收所述第一结果并根据所述第一结果恢复所述条带中损坏的分块。
在一种可能实现方式中,所述一个或多个存储设备为硬盘框。
在一种可能实现方式中,所述条带是根据纠删码算法生成的。
第十一方面,提供一种存储系统中数据重构的方法,所述存储系统包括多个存储设备,所述多个存储设备中的每一个存储设备均包括一个或多个硬盘,所述多个存储设备用于存储一个条带的分块;所述方法包括:
所述多个存储设备中存储有所述条带的有效分块的第一存储设备读取存储的有效分块并且根据读取的有效分块计算得到第一结果;
所述多个存储设备中的第二存储设备根据所述第一结果恢复所述条带中损坏的分块。
在一种可能实现方式中,所述第二存储设备为所述多个存储设备中的主存储设备或者所述多个存储设备中存储所述条带的损坏的分块的存储设备。
所述方法还包括:
所述第一存储设备向所述第二存储设备发送所述第一结果;其中,所述第一存储设备不包括所述第二存储设备;
所述第二存储设备接收所述第一结果。
在一种可能实现方式中,所述方法还包括:
所述第一存储设备中除所述第二存储设备外的其他存储设备向所述第二存储设备发送所述第一结果;其中,所述第一存储设备包含所述第二存储设备;
所述第二存储设备接收所述其他存储设备发送的第一结果。
第十二方面,提供一种存储系统,所述存储系统包括多个存储设备,所述多个存储设备中的每一个存储设备均包括一个或多个硬盘,所述多个存储设备用于存储一个条带的分块;
所述多个存储设备中存储有所述条带的有效分块的第一存储设备用于读取存储的有效分块并且根据读取的有效分块计算得到第一结果;
所述多个存储设备中的第二存储设备用于根据所述第一结果恢复所述条带中损坏的分块。
在一种可能实现方式中,所述第二存储设备为所述多个存储设备中的主存储设备或者所述多个存储设备中存储所述条带的损坏的分块的存储设备。
在一种可能实现方式中,所述第一存储设备用于向所述第二存储设备发送所述第一结果;其中,所述第一存储设备不包括所述第二存储设备;
所述第二存储设备用于接收所述第一结果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种实施环境的示意图;
图2是本发明实施例提供的一种计算机设备的结构示意图;
图3是本发明实施例提供的一种数据重构的方法的流程图;
图4是本发明实施例提供的一种分块重构过程的示意图;
图5是本发明实施例提供的一种分块重构过程的示意图;
图6是本发明实施例提供的一种分块重构过程的示意图;
图7是本发明实施例提供的一种数据重构的方法的流程图;
图8是本发明实施例提供的一种数据重构的方法的流程图;
图9是本发明实施例提供的一种分块重构过程的示意图;
图10是本发明实施例提供的一种数据重构的方法的流程图;
图11是本发明实施例提供的一种分块重构过程的示意图;
图12是本发明实施例提供的一种数据重构的方法的流程图;
图13是本发明实施例提供的一种分块重构过程的示意图;
图14是本发明实施例提供的一种数据重构的装置的结构示意图;
图15是本发明实施例提供的一种数据重构的装置的结构示意图;
图16是本发明实施例提供的一种数据重构的装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种实施环境的示意图,参见图1,该实施环境包括控制设备101、至少一个存储设备102以及目标存储设备103,控制设备101、存储设备102以及目标存储设备103之间可以通过光纤或者电缆进行连接。
控制设备101,用于将向存储设备102和目标存储设备103写入数据,该控制设备101还可以用于从存储设备102或目标存储设备103处读取数据,该控制设备101还可以用于重构存储设备102内丢失的分块。
存储设备102,用于存储数据以及向控制设备输出存储的数据,存储设备102还用于向控制设备101或目标存储设备103发送分块重构过程中的中间结果数据,以便控制设备101或目标存储设备103可以直接根据至少一个存储设备102所发送的中间结果数据,对丢失的分块进行重构。
目标存储设备103,用于存储重构的分块,目标存储设备102还用于根据至少一个存储设备102所发送的中间结果数据,对丢失的分块进行重构。需要说明的是,该目标存储设备103可以是该至少一个存储设备102中的任一存储设备,还可以是该至少一个存储设备102以外的其他存储设备。
存储设备102以及目标存储设备103均还可以包括至少一个存储介质,每个存储介质用于存储控制设备写入的数据。
控制设备101、存储设备102以及目标存储设备103均还可以包括输入/输出(outin,OI)单元,OI单元用于发送或者接收消息。
需要说明的是,在一些实施例中,控制设备101、存储设备102以及目标存储设备103均可以包括存储单元和控制单元,其中,控制单元可以具有上述控制设备101的功能,存储单元可以具有上述存储设备102或目标存储设备103的功能,也即是,控制设备101、存储设备102以及目标存储设备103均为包括存储单元和控制单元的设备,该设备兼具控制设备、存储设备以及目标存储设备的功能。
在一些实施例中,包括存储单元和控制单元的至少一个存储设备可以分为多组,每个组内可以有一个主存储设备,对于任一分组的主存储设备用于管理任一分组内的存储设备,各个存储设备可以将分块重构过程中的中间结果发送给主存储设备,主存储设备可以对接收到的中间结果进行求和,得到和值,并将和值发送给重构分块的设备,由重构分块的设备根据接收的和值,恢复重构分块。主存储设备可以是任一分组的存储设备中的任一设备,也可以是任一分组的存储设备以外的任一设备。例如一个硬盘框视为一个分组,一个硬盘框包括至少一个具有存储单元和控制单元的存储设备和一个主存储设备,或者一个可用区(availability zones,AZ)视为一个分组,一个AZ包括至少一个具有存储单元和控制单元的存储设备和一个主存储设备。
上述的控制设备、存储设备以及目标存储设备均可以是计算机设备,图2是本发明实施例提供的一种计算机设备的结构示意图,计算机设备200包括可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)201和一个或一个以上的存储器202,其中,该存储器202中存储有至少一条指令,该至少一条指令由该处理器201加载并执行以实现下述各个方法实施例提供的方法。当然,该计算机设备200还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备200还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由计算机设备中的处理器执行以完成下述实施例中的数据重构的方法。例如,该计算机可读存储介质可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact disc read-only memory,CD-ROM)、磁带、软盘和光数据存储设备等。
以上是实施环境对以及计算机设备的描述,另外,当基于EC以及分条技术,将一个条带中的分块存储在至少一个存储设备之前,控制设备可以为该条带分配一个条带标识,以区分不同的条带,该条带标识可以是条带的编号。控制设备还可以为该条带上的各个分块分配块信息、分块编号以及节点标识,该节点标识用于指示存储分块的存储设备,该任一分块的块信息可以是任一分块的存储地址,任一分块的存储地址可以包括存储任一分块的存储设备的互联网协议地址(internet protocol address,IP)以及任一分块在该存储设备的存储介质中的偏移地址,该存储地址还可以是全局通用名称(worldwide name,WWN)。当存储该任一分块的存储设备中包括多个存储介质时,该任一分块的块信息还可以包括存储该任一分块的存储介质的介质标识,该介质标识可以是存储介质的编号。本发明实施例对该条带标识、块信息、该节点标识以及介质标识不做具体限定。
当分配完成后,该控制设备可以将为该条带以及该条带的各个分块分配的信息进行关联存储,以便后续控制设备可以根据存储的信息,确定哪个条带上的哪个分块丢失,且丢失的分块存储在哪个存储设备的哪个存储介质中。控制设备可以将为该条带以及该条带的各个分块分配的信息存储在分配表中,以实现关联存储。当然,该控制设备可以在该关联表中存储每个分块的分块标识,分块标识包括数据标识或校验标识,其中,数据标识用于指示分块为数据块,验证标识用于指示分块为校验块。当该控制设备将为该条带以及该条带的各个分块分配的信息存储在分配表后,该控制设备可以根据分配表中各个分块所对应的信息,对各个分块进行存储。
例如,表1所示的关联表,从表1中可知,条带1包括分块1-p,其中,p为大于1的整数,分块1是被存储在存储设备1上的一个数据块,控制设备可以将分块1存储在存储设备1中,而分块p是被存储在存储设备2上的校验块,控制设备可以将分块P存储在存储设备2中。
表1
Figure GWB0000003492010000121
并且,控制设备在将该第一条带上的各个分块进行存储之前,该存储设备通过EC计算或磁盘阵列(redundant arrays of independent drives,RAID)计算,根据条带上的数据块以及校验矩阵,生成至少一个校验块,其中,校验矩阵H为2*(N+M)的矩阵H,也即是。该条带包括N个数据块和M个校验块,校验矩阵H中的第j列对应该条带的第j个分块,也即是,校验矩阵中的每一列对应该第一条带上的一个分块,其中N、M和j均为大于0的正整数。
以EC 23+2的冗余模式对原始数据进行计算为例,来说明生成校验块的过程,其中23为数据块的数目,2为校验块的数目。
控制设备将计算机程序保存在本地存储介质上,并在控制设备的处理器上执行该计算机程序。控制设备将原始数据划分成23个分块,也即是23个数据块,然后按照一定的次序对23个数据块进行排列;将23个数据块通过EC/RAID计算,生成校验数据(2个检验块)。
具体地,该控制设备可以使用校验矩阵方程(1)进行计算。
H*xT=0 (1)
其中,校验矩阵H存放在计算机程序中,xT为条带矩阵x的转置矩阵。在23+2配比下,校验矩阵H可以用公式(2)表示,条带矩阵x可以用公式3表示。
Figure GWB0000003492010000122
x=(x1,x2,…,xj,…,x24,x25) (3)
其中,a1,j表示校验矩阵H中的第1行的第j列的元素,a2,j表示校验矩阵H中的第1行的第j列的元素,xj用于表示条带中第j个分块,x1至x23为数据块,x24和x25为检验块。
需要说明的是,校验矩阵H中的每一列与条带矩阵x中的每一列对应,也即是,xj对应Hj,其中,Hj为校验矩阵H的第j列。由于x1至x23的数据块为原始数据,也即是已知量,且校验矩阵H也是已知量,因此,控制设备根据公式(1)-(3)可以求解未知的校验块x24至x25,具体求解过程如下。
控制设备将校验矩阵H拆分成两个子矩阵HN和HM
Figure GWB0000003492010000123
Figure GWB0000003492010000124
控制设备根据公式(1)可以得到公式(4):
HN*(x1,x2,…,x23)T+HM*(x24,x25)T=0 (4)
控制设备根据公式(4)可以得到校验块x24和x25
(x24,x25)T=-HM 1*HN*(x1,x2,…,x23)T
在获取到校验块x24和x25后,控制设备可以通过IO单元把该条带上数据块x1至x23以及校验块x24和x25发送给至少一个存储设备,由该至少一个存储设备通过IO单元,可以多个存储介质(磁盘,固态硬盘等);然后,至少一个存储设备把数据块或者校验块,写入存储介质中。需要说明的是,上述生成条带的过程也即是根据纠删码算法生成条带的过程。
由于在一些特定的环境下,存储设备中存储介质可以能会丢失其存储的分块,为了保证丢失的分块不影响正常业务,控制设备需要对丢失的分块进行重构。根据上述求解校验块的过程,当条带中的任一个分块丢失时,也可以根据条带上的其他分块,求解该丢失的分块,为了简化在控制设备中的计算过程,可以将上述求解过程分解成多个子过程,由存储设备完成子过程的计算,然后,存储设备将子过程的计算结果发送给控制设备,最终控制设备根据接收到的计算结果。
本发明实施例中,丢失的分块也称为损坏的分块,即无法读取的分块。求解该丢失的分块即恢复该损坏的分块。本发明实施例中,可以由存储设备根据该存储设备所存储的条带中的有效分块计算得到中间结果,然后存储设备再将中间结果发送给控制设备,由控制设备根据中间结果恢复出损坏的分块。另外一种实现,存储设备根据该存储设备所存储的条带中的有效分块计算得到中间结果,由存储有损坏分块的存储设备根据中间结果恢复出损坏的分块。具体的,当存储有损坏分块的存储设备也存储有效分块时,其他存储有有效分块的存储设备将计算得到的中间结果发送给存储有损坏分块的存储设备,存储有损坏分块的存储设备根据这些中间结果,恢复出损坏的分块。当存储有损坏的分块的存储设备没有存储有效分块时,存储有有效分块的存储设备将中间结果发送给存储有损坏分块的存储设备,存储有损坏分块的存储设备根据中间结果恢复损坏的分块。这样,可以直接在存储有损坏分块的存储设备恢复损坏的分块,减少了数据交互。另外一种实现,存储设备根据该存储设备所存储的条带中的有效分块计算得到中间结果,由存储设备中的主存储设备根据中间结果恢复损坏的分块。具体的,当主存储设备也存储有效分块时,其他存储有有效分块的存储设备将计算得到的中间结果发送给主存储设备,主存储设备根据这些中间结果,恢复出损坏的分块。当主存储设备没有存储有效分块时,存储有有效分块的存储设备将中间结果发送给主存储设备,主存储设备根据中间结果恢复损坏的分块。本发明实施例中,有效的分块是指条带中可以读取的分块或者未损坏的分块。
结合上述描述,本发明的一个实施例提供了一种存储系统中数据重构的方法,所述存储系统包括控制设备和一个或多个存储设备,所述一个或多个存储设备中的每一个均包括一个硬盘;所述一个或多个存储设备用于存储所述控制设备生成的一个条带的分块;所述方法包括:
所述一个或多个存储设备中存储有所述条带的有效分块的第一存储设备读取存储的有效的分块并且根据读取的有效分块计算得到第一结果;
所述第一存储设备将所述第一结果发送给所述控制设备;
所述控制设备接收所述第一结果并根据所述第一结果恢复所述条带中损坏的分块。
一种可能的实现方式,所述条带是根据纠删码算法生成的。
一种可能的实现方式,所述一个或多个存储设备为硬盘框。
本发明另外一种实施例提供了一种存储系统中数据重构的方法,所述存储系统包括多个存储设备,所述多个存储设备中的每一个存储设备均包括一个或多个硬盘,所述多个存储设备用于存储一个条带的分块;所述方法包括:
所述多个存储设备中存储有所述条带的有效分块的第一存储设备读取存储的有效的分块并且根据读取的有效分块计算得到第一结果;
所述多个存储设备中的第二存储设备根据所述第一结果恢复所述条带中损坏的分块。
一种可能的实现方式,所述第二存储设备为所述多个存储设备中的主存储设备或者所述多个存储设备中存储所述条带的损坏的分块的存储设备。
进一步的,所述方法还包括:
所述第一存储设备向所述第二存储设备发送所述第一结果;其中,所述第一存储设备不包括所述第二存储设备;
所述第二存储设备接收所述第一结果。
进一步的,所述第一存储设备中除所述第二存储设备外的其他存储设备向所述第二存储设备发送所述第一结果;其中,所述第一存储设备包含所述第二存储设备;
所述第二存储设备接收所述其他存储设备发送的第一结果。
一种可能的实现方式,所述多个存储设备为硬盘框。
本发明上述实施例可以参考下面实施例中的描述,在此不再赘述。
对丢失的分块进行重构,可以使用图3所示的本发明实施例提供的一种数据重构的方法的流程图,来表明此过程,该方法的流程具体包括:
301、丢失分块的存储设备向控制设备发送重构请求。
该重构请求用于指示重构丢失的分块,该重构请求可以包括第一重构请求或第二重构请求,其中,第一重构请求存储设备中携带失效的存储介质的存储介质标识,当该存储设备内的任一存储介质失效时,该存储设备可以将携带任一存储介质的介质标识的第一重构请求发送至控制设备,因此,在本步骤301之前,该存储设备可以查询存储设备内的存储介质是否失效;当该存储设备中的存储介质失效时,该存储设备向控制设备发送该第一重构请求
第二重构请求携带存储设备中存储介质丢失的至少一个分块的块信息,当该存储设备内的任一存储介质部分失效,导致丢失至少一个分块时,该存储设备可以将该第二重构请求发送至控制设备,因此,在本步骤301之前,该存储设备还可以查询存储设备中的存储介质是否有分块丢失;当该存储设备内的任一存储介质丢失至少一个分块时,该存储设备向控制设备发送第二重构请求。
302、控制设备根据该重构请求,确定第一条带中已丢失分块中的第一分块,该第一条带中的分块由目标个数的存储设备存储。
该目标个数为用于存储第一条带的分块的存储设备的数目,该目标个数可以是1个也可以是多个,本发明实施例对该目标个数不做具体限定。该第一条带为丢失分块的任一条带。
对于不同的重构请求,控制设备可以通过方式1-2所示的过程,来实现本步骤302。
方式1、当该重构请求为第一重构请求时,本步骤302可以通过下述步骤21-23所示的过程来实现。
步骤21、控制设备根据该第一重构请求携带的存储介质标识,确定至少一个第二条带。
该至少一个第二条带也即是丢失了分块的条带,该存储介质标识所存储的分块为该至少一个第二条带上的分块,因此,该控制设备根据该第一重构请求携带的存储介质标识,确定至少一个第二条带。在一种可能的实现方式中,该控制设备可以从关联表中确定与该存储介质标识对应的至少一个第二条带。
步骤22、控制设备将该至少一个第二条带中任一个条带确定该第一条带。
该控制设备可以从该至少一个第二条带中随机选择一个第二条带作为该第一条带。若条带标识为编号,该控制设备还可以选择一个编号最大的或最小的第二条带作为该第一条带。本发明实施例对从该至少一个第二条带中选择该第一条带的方式不做具体限定。
步骤23、控制设备根据该存储介质标识,将该第一条带中已丢失分块中的任一个分块确定为该第一分块。
该控制设备可以先在关联表中,选择出与该存储介质的介质标识以及该第一条带的条带标识所对应的至少一个第四分块,则该至少一个第四分块也即是该存储介质丢失的该第一条带的分块。然后,该控制设备再从该至少一个第四分块中选择任意一个分块作为该第一分块。需要说明的是,控制设备从该至少一第个四分块中选择第一分块的方式和步骤22中从该至少一个第二条带中选择该第一条带的方式同理,在此本发明实施例对从该至少一个分块中选择第一分块的方式不做赘述。
方式2、当该重构请求为第二重构请求时,本步骤302可以通过下述步骤2A-2C所示的过程来实现。
步骤2A、该控制设备根据该第二重构请求携带的至少一个分块的块信息,确定至少一个第二条带。
该控制设备可以从关联表中确定与该至少一个分块的块信息对应的至少一个第二条带。
步骤2B、控制设备将该至少一个第二条带中任一个条带确定为该第一条带。
本步骤2B与步骤22的实现过程同理,在此,本发明实施例对本步骤2B不做赘述。
步骤2C、控制设备根据该丢失的至少一个分块的块信息,将该第一条带中已丢失分块中的任一个分块确定为该第一分块。
该控制设备可以先在关联表中,选择出与该至少一个分块的块信息以及该第一条带的条带标识所对应的至少一个第四分块,该控制设备可以从该至少一个第四分块选择一个分块作为该第一分块。在步骤23中有对从该至少一个第四分块中确定第一分块的描述,在此对从该至少一个第四分块中确定第一分块不做赘述。
303、控制设备将该第一条带的校验矩阵拆分成第一子矩阵和目标个数的第二子矩阵,该第一子矩阵包括该第一分块所对应的列以及第二分块所对应的列,每个第二子矩阵包括第一条带中在一个存储设备上所存储的至少一个第三分块所对应的列,该第二分块为所述第一条带中的有效分块中的任一分块,该第三分块为有效分块中除该第二分块以外的任一分块。
为了将求解第一分块的过程进行分解,该控制设备可以通过本步骤303将第一条带的校验矩阵进行分解。控制设备可以将校验矩阵中对应第一分块与第二分块的列拆分出来,组成第一子矩阵,也即是待求解的矩阵,控制设备可以将校验矩阵中第三分块所对应的列组成参量矩阵,控制设备再根据目标个数的存储设备所存储的第三分块,将参量矩阵拆分成目标个数的第二子矩阵,其中,一个第二子矩阵对应一个存储设备,一个第二子矩阵中的每一列与对应的存储设备存储的一个第三分块对应。
需要说明的是,本发明实施例以第一条带包括分块1-25其中分块1-23为数据块,分块24-25为校验块,第一分块为分块1,第二分块为分块25以及分块2-24为第三分块为例进行说明。
当目标个数大于1时,为了进一步说明本步骤303所述的过程,参见图4所示的本发明实施例提供的一种分块重构过程的示意图,在图4中有1个控制设备和2个硬盘框,每个硬盘框相当于一个存储设备,也即是目标个数为2,控制设备和硬盘框均包括CPU、内存以及IO单元,硬盘框还包括用于存储数据的存储介质,硬盘框中的IO单元还可以替换为网络接口单元(网络接口单元在图4中简称网络),其中,网络接口单元的作用和IO单元相同。控制设备把第一条带的分块按框分组,具体地,假设存储设备(硬盘框)1存储有第一条带上的分块1-12,存储设备(硬盘框)2存储有第一条带上的分块13-25,该控制设备可以将分块1(第一分块)和分块25(第二分块)作为待修复的分块,也即是待求解的分块,因此,存储设备1中存储的分块2-12为存储设备1存储的第一条带的第三分块,存储设备2中存储的分块13-24为存储设备2存储的第一条带的第三分块,进而控制设备可以将校验矩阵中分块2-12所对应的第2-12列拆分出来,组成存储设备1所对应的第二子矩阵H1,将校验矩阵中分块13-24所对应的第13-24列拆分出来,组成存储设备2所对应的第二子矩阵H2,将校验矩阵H中与分块1和25对应的第1和25列拆分出来,组成第一子矩阵H3,其中H1-H3可以表示为:
Figure GWB0000003492010000161
Figure GWB0000003492010000162
Figure GWB0000003492010000163
当目标个数等于1时,为了进一步说明本步骤303所述的过程,参见图5所示的本发明实施例提供的一种分块重构过程的示意图,在图5中有1个控制设备和1个硬盘框,也即是目标个数为1,控制设备和硬盘框均包括CPU、内存以及IO单元,硬盘框还包括用于存储数据的存储介质,硬盘框中的IO单元还可以替换为网络接口单元(网络接口单元在图4中简称网络),其中,网络接口单元的作用和IO单元相同。存储设备(硬盘框)3存储有第一条带上的分块1-25,该控制设备可以将分块1(第一分块)和分块25(第二分块)作为待修复的分块,也即是待求解的分块,因此,存储设备3中存储的分块2-24为存储设备3存储的第一条带的第三分块,进而控制设备可以将校验矩阵中分块2-24所对应的第2-24列拆分出来,组成存储设备3所对应的第二子矩阵H4,将校验矩阵H中与分块1和25对应的第1和25列拆分出来,组成第一子矩阵H3,其中H4可以表示为:
Figure GWB0000003492010000164
304、控制设备向每个第二子矩阵所对应的存储设备分别发送第一获取请求,该第一获取请求携带与存储设备对应的第二子矩阵、该一个第二子矩阵中每一列所对应的第三分块的块信息以及控制设备的标识。
每个第一获取请求用于指示向该控制设备发送第一结果,该第一获取请求为获取请求的一种,该获取请求携带与存储设备对应的第二子矩阵、该第二子矩阵中每一列所对应的第三分块的块信息以及控制设备的标识,当该目标设备的标识为控制的标识时,该获取请求为第四获取请求,此时,该目标设备也即是控制设备。
为了让各个存储设备可以计算求解第一子矩阵过程中的各个子过程,该控制设备可以将每个第二子矩阵发送至其对应的存储设备,由存储设备来完成子过程(步骤306-307所示的求解第一结果的过程)。
由于存储设备可能存储有多个条带的多个分块,该控制设备可以将第二子矩阵对应的第三分块的块信息发送给存储设备,以便存储设备可以根据第三分块的块信息,获取到与接收的第二子矩阵对应的第三分块,因此,控制设备可以将一个第二子矩阵以及与该一个子矩阵对应的第三分块的块信息,组成第一获取请求,并发送给对应的存储设备。
需要说明的是,在有的实施例中,是由控制设备完成对第一分块的重构,而有的实施例中,由目标存储设备完成对第一分块的重构,哪个设备在完成对第一分块的重构时,均需要获取目标个数的存储设备的计算结果,因此,当获取请求中携带目标设备的标识为控制设备的标识时,该获取请求也即是第一获取请求,用于指示向控制设备发送第一结果,其中,第一结果由存储设备读取存储的所述第一条带的有效分块并且根据读取的有效分块计算得到,也即是存储设备的计算结果)。
例如,图4中的控制设备通过IO单元,将第一获取请求1发送至存储设备1,第一获取请求1携带第二子矩阵H1以及分块2-12的块信息,控制设备通过IO单元,将第一获取请求2发送至存储设备2,第一获取请求2携带第二子矩阵H2以及分块13-24的块信息。再例如,图5中的控制设备通过IO单元,将第一获取请求3发送至存储设备3,第一获取请求3携带第二子矩阵H1以及分块2-24的块信息。
305、存储设备接收第一获取请求。
该存储设备为目标个数的存储设备中的任一个存储设备。通过本步骤305目标个数的存储设备均会接收到一个第一获取请求。例如,图4中的存储设备1和2通过IO单元,分别接收到第一获取请求1和2。再例如,图5中的存储设备3通过IO单元,接收到第一获取请求3。本步骤305也即是存储设备接收获取请求的步骤。
306、存储设备根据该第二子矩阵中每一列所对应的第三分块的块信息,读取该至少一个第三分块。
该存储设备可以根据第二子矩阵中每一列所对应的第三分块的块信息,确定第二子矩阵中每一列所对应的第三分块的存储位置,再从第二子矩阵中每一列所对应的第三分块的存储位置处读取至少一个第三分块。例如,图4中的存储设备1根据第一获取请求1中的分块2-12的块信息,通过IO单元,可以读取到分块2-12,存储设备2根据第一获取请求2中的分块13-24的块信息,通过IO单元,可以读取到分块13-24。再例如,图4中的存储设备3根据第一获取请求3中的分块2-24的块信息,通过IO单元,可以读取到分块2-24。
第三分块也即是是读取的有效分块,需要说明的是,本步骤306所示的过程也即是根据该第二子矩阵中每一列所对应的第三分块的块信息,读取该至少一个第三分块的过程
307、存储设备根据该至少一个第三分块以及该第二子矩阵计算,得到该第一结果
其中,该第一结果可以用于表示该第二子矩阵中每一列所对应的第三分块的特征。该存储设备可以将该至少一个第三分块组成分块矩阵,该分块矩阵的每一行为一个第三分块;将该第二子矩阵与该分块矩阵相乘,得到该第一结果。本步骤307所示的过程也即是根据读取的有效分块计算,得到第一结果的过程。
例如,图4中的存储设备1中的CPU将分块2-12组成分块矩阵P1,将H1与P1相乘得到第一结果Q1,存储设备2中的CPU将分块13-14组成分块矩阵P2,将H2与P2相乘得到第一结果Q2,其中,P1=(x1,x2,…,x12)T,Q1=H1*P1,P2=(x13,x14,…,x23)T,Q2=H2*P2
再例如,图5中的存储设备3中的CPU将分块2-24组成分块矩阵P3,将H4与P3相乘得到第一结果Q3,其中,P3=(x1,x2,…,x24)T,Q3=H4*P3
308、该存储设备向控制设备发送该第一结果。
由于第一请求中携带的是控制设备的标识,因此,该存储设备向控制设备发送第一结果。需要说明的是,由于该存储设备为该目标个数的存储设备中的任一个存储设备,因此,该目标个数的存储设备均要执行上述步骤305-308所示的过程。
309、控制设备获取目标个数的存储设备基于该第一获取请求返回的第一结果。
由于目标个数的存储设备均会执行步骤308,控制设备就可以接收到目标个数的第一结果,因此,控制设备可以获取到目标个数的第一结果,每个第一结果由该目标个数的存储设备中的一个存储设备读取存储的该第一条带的有效分块并且根据读取的有效分块计算得到。
例如,图4中的控制设备可以获取到存储设备1发送的第一结果Q1以及存储设备2发送的第一结果Q2。再例如,图5中的控制设备可以获取到存储设备3发送的第一结果Q3
310、控制设备根据该目标个数的存储设备的第一结果以及该第一子矩阵,对该第一分块进行重构。
由于第一子矩阵中一列对应第一分块,另一列对应第二分块,因此,控制设备除了根据该目标个数的存储设备的第一结果以及该第一子矩阵,对该第一分块进行重构以外,还可以根据该目标个数的存储设备第一结果以及该第一子矩阵,对第二分块进行重构。
在一种可能的实现方式中,该控制设备可以对该目标个数的存储设备的第一结果进行求和,得到求和矩阵;基于该第一子矩阵的逆矩阵以及该求和矩阵,获取目标分块矩阵;该控制设备将该目标分块矩阵的第一目标行确定为重构的第一分块;将该目标分块矩阵的第二目标行确定为重构的第二分块,其中,目标分块矩阵的转置矩阵的第一目标列为目标分块矩阵的第一目标行,第二目标列为目标分块矩阵的第二目标行,第一目标列对应第一分块,第二目标列对应第二分块。其中,基于该第一子矩阵的逆矩阵以及该求和矩阵,获取目标分块矩阵可以是将该第一子矩阵的逆矩阵乘以该求和矩阵并取负,得到目标分块矩阵。需要说明的是,本步骤310所示的过程也即是根据目标个数的存储设备的第一结果,对第一分块进行重构的过程。
例如,H*xT=H1*(x2,x3,…,x12)T+H2*(x13,x14,…,x23)T+H3*(x1,x25)T=0,也即是,H1*P1+H2*P2+H3*(x1,x25)T=0,也即是,Q1+Q2+H3*(x1,x25)T=0,也即是(x1,x25)T=-H3 -1*(Q1+Q2),从而图4中的控制设备可以执行(x1,x25)T=-H3 -1*(Q1+Q2)所示的计算过程,得到目标分块矩阵(x1,x25)T,其中,(x1,x25)也即是目标分块矩阵的转置矩阵,控制设备计算得到的x1也即是重构的第一分块,x25也即是重构的第二分块。
需要说明的是,当目标个数为1时,该控制设备无需计算求和矩阵,而是将直接基于该第一子矩阵的逆矩阵以及该第一结果,获取目标分块矩阵。
例如,H*xT=H4*(x2,x3,…,x24)T+H3*(x1,x25)T=0,也即是,Q3+H3*(x1,x25)T=0,从而图5中的控制设备可以执行(x1,x25)T=-H3 -1*Q3的计算过程,以获取x1和x25
311、控制设备向目标存储设备发送写请求,该写请求携带重构的第一分块以及该重构的第一分块的块信息。
需要说明的是,在一些实施例中,有的条带会出现计算过程正确,但是最终出现的计算结果不正确的静默错误,若第一条带出现静默错误,则重构的第一分块的内容可能与第一分块的内容不一致,由于第一分块已丢失,控制设备无法确定重构的第一分块的内容是否与第一分块原来的内容一致,则控制设备可以通过第二分块的内容与重构的第二分块的内容是否一致,来确定第一条带是否出现静默错误。
在一些实施例中,在本步骤311之前,控制设备从存储该第二分块的存储设备获取该第二分块;若该重构的第二分块与获取的第二分块相同,则执行该向目标存储设备发送写请求的步骤,否则,不执行向目标存储设备发送写请求的步骤,并且禁止使用该第一条带。
控制设备从存储该第二分块的存储设备获取该第二分块的过程可以是:控制设备向存储该第二分块的存储设备发送读请求,该读请求携带该第二分块的块信息;存储该第二分块的存储设备接收待该读请求后,根据该第二分块的块信息向控制设备发送第二分块,从而控制设备可以接收该第二分块。
例如,图6所示的本发明实施例提供的分块重构过程的示意图,图6所示的分块重构过程可以包括下述下步骤61-66。
步骤61、控制设备发起重构,扫描到故障的分块(分块1)。
本步骤61所示的过程也即是步骤302所示的过程。
步骤62、控制设备把分块1所在的条带的分块按框分组,假设分块1-12在存储设备1上,分块13-25在存储设备2上,需要修复分块1和分块25,那么,控制设备把校验矩阵H拆分成3个子矩阵(H1,H2,H3),通过IO单元向存储设备发送第一获取请求。
其中,矩阵H1和H2为第二子矩阵,子矩阵H3为第一子矩阵,控制设备把分块2-24分成2组:分块2-12为1组,存储设备1对子矩阵H1在进行计算;分块13-24为1组,存储设备2对子矩阵H2进行计算。本步骤62可以由控制设备的IO单元来执行。
步骤63:控制设备单独读取分块25。
也即是,控制设备从存储分块25的存储设备2处读取分块25。本步骤63可以由控制设备的IO单元来执行。
步骤64:存储设备收到请求后,通过IO单元读取存储介质上的分块。
本步骤64可以由存储设备的IO单元来执行。
步骤65:存储设备读取到分块后,通过计算得到中间结果Q(第一结果)。
存储设备1上,对子矩阵H1和其对应的第三分块进行计算,得到中间结果Q1;存储设备2上,对子矩阵H2和其对应的第三分块进行计算,得到中间结果Q2,最后存储设备1和2把中间结果(Q1,Q2)返回控制设备,其中,Q包括中间结果Q1和Q2。本步骤65可以由存储设备的CPU来执行。
步骤66、控制设备使用中间结果Q和子矩阵H3,计算最终结果,恢复分块1和分块25。并把恢复的分块25和步骤63读取到的分块25进行比较,如果数据一致,则把分块1写入目标存储设备的存储介质中;如果不一致,则表示分条遭遇了静默错误,对分条进行隔离保护。
本步骤65可以由控制设备的CPU来执行。需要说明的是,图6中的存储设备和控制设备的结构与图4中的存储设备和控制设备的结构类似。
312、目标存储设备根据该重构的第一分块的块信息,对该重构的第一分块进行存储。
该目标存储设备根据重构的第一分块的块信息,可以确定重构的第一分块在该目标存储设备的存储位置,从而该目标设备可以将接收到的重构的第一分块存储在确定的存储位置处。
需要说明的是,当目标存储设备存储完重构的第一分块后,目标存储设备向控制设备发送存储成功响应,该存储成功响应用于指示已经存储重构的第一分块。当接收到该存储成功响应后,控制设备查询该第一条带的已丢失的所有分块是否全部重构完成,若未全部重构完成,则对未重构的任一个分块继续执行上述分块重构过程,否则所述第一条带重构完成。
当控制设备完成第一分块的重构后,该控制设备还可以查询该第一条带上是否还有其他分块丢失,若有,则控制设备查询到的丢失的分块中的任一个分块执行步骤302-312所示的过程,该第一条带上的其他分块没有丢失,则可以视为该第一条带重构完成。
由于可能存在多个条带均丢失分块的情况,当重构完第一条带后,该控制设备还可以查询是否还有其他条带丢失分块,若有其他条带丢失分块,则控制设备重构其他条带上丢失的各个分块,也即是执行步骤302-312所示的过程。
为了进一步说明步骤301-312所示的过程,参见图7所示的本发明实施例提供的有一种数据重构的方法的流程图。在图7中,当控制器(控制设备)发起重构后,控制器扫描分条,确认是否存在故障的分块,若不存在故障的分块,则重构完成。若存在故障的分块,控制器获取故障的分块(所丢失的分块),并把需要读取的分块按框分组,并根据分组将获取的分条的校验矩阵进行拆分,将拆分出的第二子矩阵发送到对应的硬盘框,也即是按照组把各个第二子矩阵发送到各个硬盘框上。各个硬盘框读取对应组内的分块,读取完成后,计算EC/RAID的中间结果,并把中间结果返回控制器。控制器接收到各个硬盘框返回的中间结果,计算恢复的故障块,把恢复的故障块写入某个硬盘框的某个磁盘中,当写入完后,控制器接着扫描分条,以确定该分条上是否还存在故障块。
需要说明的是,当控制设备接收到该存储成功的响应后,该控制设备更新关联表中第一分块的信息,具体地,将第一分块的块信息更新成重构的第一分块的块信息,将第一分块的节点标识更新为目标存储设备的节点标识等,以便后续控制设备可以从目标存储设备处读取重构的第一分块。
本发明实施例提供的方法,通过控制设备直接根据获取的目标个数的存储设备的第一结果对第一条带中丢失的第一分块进行重构,从而控制设备无需从存储设备上读取第一条带上未丢的分块,仅需要从存储设备处获取目标个数的第一结果,就可以对第一分块进行重构,由于第一结果与第一条带上未丢的分块相比数据量较少,因此在重构第一分块的过程中,控制设备和存储设备之间传输的数据量比较少,在数据传输过程中,占用的网络带宽也比较少,从而提高了重构分块的性能。并且由于仅向各个存储设备发送一个第一获取请求就可以获取到各个存储设备发送的第一结果,而无需向各个存储设备发送大量的读请求,不仅降低了控制设备的CPU的开销,也进一步降低网络带宽的占用情况,进而可以进一步提高重构分块的性能。并且通过比较第二分块与重构的第二分块的内容是否一致,可以避免出现数据静默的故障,提高了系统的可靠性。由于传输过程中数据量较少时,因此数据传输的速度块,用传输时间短,由于降低了CPU的开销,在计算过程中可以使用更多的CPU进行计算,从而降低计算的时间,并且在各个第一结果分别在不同的设备上完成,更进一步降低计算时间,因此,重构分块的用时较少,提高了系统的可靠性。
在图3所示的实施例中,控制设备可以根据第一结果以及第一子矩阵,对第一分块进行重构,而在一些实施例中,目标存储设备也可以根据第一结果以及第一子矩阵,对第一分块进行重构。
为了进一步体现目标存储设备根据第一结果以及第一子矩阵,对第一分块进行重构过程,参见图8所示的本发明实施例提供的一种数据重构的方法的流程图,该方法的具体包括:
801、丢失分块的存储设备向控制设备发送重构请求。
本步骤801与步骤301所示的过程同理,在此,本发明实施例对本步骤801不做赘述。
802、控制设备根据该重构请求,确定第一条带中丢失的第一分块,该第一条带中的分块由目标个数的存储设备存储。
本步骤802与步骤302所示的过程同理,在此,本发明实施例对本步骤802不做赘述。
803、控制设备将该第一条带的校验矩阵拆分成第一子矩阵和目标个数的第二子矩阵,该第一子矩阵包括该校验矩阵中该第一分块所对应的列以及第二分块所对应的列,每个第二子矩阵包括第一条带中在一个存储设备上所存储的至少一个第三分块所对应的列,该第二分块为该第一条带的有效分块中的任一分块,该第三分块为有效分块中除该第二分块以外的任一分块。
本步骤803与步骤303所示的过程同理,在此,本发明实施例对本步骤803不做赘述。
804、控制设备向每个第二子矩阵所对应的存储设备分别发送第二获取请求,每个第二获取请求携带与存储设备对应的第二子矩阵、该第二子矩阵中每一列所对应的第三分块的块信息以及目标存储设备的标识,每个第二获取请求用于指示向该目标存储设备发送第一结果。
该第二获取请求为获取请求的一种,该获取请求携带与存储设备对应的第二子矩阵、该第二子矩阵中每一列所对应的第三分块的块信息以及目标设备的标识,当该目标设备的标识为目标存储设备的标识时,该获取请求为第二获取请求,此时,该目标设备也即是目标存储设备。
需要说明的是,当获取请求中携带目标设备的标识为控制设备的标识时,该获取请求也即是第二获取请求,该第二获取请求中还可以携带目标存储设备的IP地址,以便各个存储设备可以根据目标存储设备的IP地址,向目标存储设备发送第一结果。
805、控制设备向该目标存储设备发送目标重构请求,该目标重构请求携带第一子矩阵,目标重构请求用于指示根据第一子矩阵,对该第一分块进行重构。
该目标重构请求还可以携带该重构的第一分块的块信息,以便目标存储设备可以根据重构的第一分块的块信息,对重构的第一分块进行存储。需要说明的是,本步骤805可以在步骤811之前的任一时机执行。
806、存储设备接收第二获取请求。
需要说明的是,本步骤806或步骤305所示的过程,也即是存储设备接收获取请求的过程,当该获取请求为所述第一获取请求时,用于指示向控制设备发送第一结果,当该获取请求为第二获取请求时,用于指示向目标存储设备发送第一结果。
807、存储设备根据该第二子矩阵中每一列所对应的第三分块的块信息,读取该至少一个第三分块。
本步骤807与步骤306所示的过程同理,在此,本发明实施例对本步骤807不做赘述。
808、存储设备根据该至少一个第三分块以及该第二子矩阵计算,得到该第一结果。
本步骤808与步骤307所示的过程同理,在此,本发明实施例对本步骤808不做赘述。
809、存储设备向目标存储设备发送该第一结果。
该存储设备可以根据第二请求中携带的目标存储设备的IP地址,向该目标存储设备发送第一结果。该目标个数的存储设备均要执行上述步骤806-809所示的过程。
810、目标存储设备获取目标个数的存储设备基于该第二获取请求返回的第一结果。
本步骤810与步骤309中控制设备获取目标个数的存储设备基于该第一获取请求返回的第一结果的过程同理,在此,本发明实施例对本步骤810不做赘述。
811、目标存储设备根据该目标个数的存储设备的第一结果以及该第一子矩阵,重构该第一分块。
目标存储设备重构第一分块的过程与步骤310中控制设备重构第一分块的过程同理,在此,本发明实施例对本步骤811不做赘述。
812、目标存储设备对该重构的第一分块进行存储。
当第二获取请求中携带重构的第一分块的块信息时,该目标存储设备可以根据重构的第一分块的块信息,对重构的第一分块进行存储,若第二获取请求中未携带重构的第一分块的块信息时,该目标存储设备可以根据预设的存储规则,对重构的第一分块进行存储,本发明实施例对该预设的存储规则不做具体限定。
需要说明的是,在一些实施例中,在本步骤812之前,目标存储设备从存储该第二分块的存储设备获取该第二分块;若该重构的分块与获取的第二分块相同,则执行对重构后的第一分块进行存储的步骤,否则,不执行对重构后的第一分块进行存储的步骤,并且禁止使用所述第一条带需要说明的是,目标存储设备获取第二分块的过程与控制设备获取第二分块的过程同理,本发明实施例对目标存储设备获取第二分块的过程不做赘述。
813、当将重构的第一分块存储完成时,目标存储设备向控制设备发送重构完成响应,该重构完成的响应用于指示第一分块重构完成。
当目标存储设备根据预设的存储规则,对重构的第一分块进行存储时,该重构完成响应还可以携带重构的第一分块的块信息,以便控制设备接收到该重构的第一分块的块信息后,对关联表中第一分块的块信息进行更新。
当接收到该重构完成响应后,控制设备查询该第一条带的已丢失的所有分块是否全部重构完成,若未全部重构完成,则对未重构的任一个分块继续执行上述分块重构过程,否则所述第一条带重构完成。
需要说明的是,当控制设备接收到该重构完成响应后,该控制设备更新关联表中第一分块的信息,具体地,将第一分块的块信息更新成重构的第一分块的块信息,将第一分块的节点标识更新为目标存储设备的节点标识的等,以便后续控制设备可以从目标存储设备处重构的第一分块。
为了进一步说明,步骤801-813所示的过程,参见图9所示的本发明实施例提供的一种分块重构过程的示意图。图9所示的分块重构过程可以包括下述下步骤1-7。
步骤1、控制设备发起重构,扫描到故障的分块(分块1)。
本步骤1所示的过程也即是步骤802所示的过程。本步骤1可以通过控制设备的CPU来执行。
步骤2、控制设备把分块1所在的条带的分块按框分组,假设分块1-12在存储设备1上,分块13-25在存储设备2上,需要修复分块1和分块25,那么,控制设备把校验矩阵H拆分成3个子矩阵(H1,H2,H3),通过IO单元向存储设备发送第二获取请求。
其中,矩阵H1和H2为第二子矩阵,子矩阵H3为第一子矩阵,控制设备把分块2-24分成2组:分块2-12为1组,存储设备1对子矩阵H1在进行计算;分块13-24为1组,存储设备2对子矩阵H2进行计算。本步骤62可以由控制设备的IO单元来执行。
步骤3:存储设备收到请求后,通过IO单元读取存储介质上的分块。
步骤4:存储设备通过IO单元读取到分块后,通过CPU计算得到中间结果Q(第一结果)。
存储设备1上,对子矩阵H1和其对应的第三分块进行计算,得到中间结果Q1;存储设备2上,对子矩阵H2和其对应的第三分块进行计算,得到中间结果Q2
步骤5、存储设备1通过IO单元,把中间结果Q1发送存储设备2。
步骤6、存储设备2通过CPU使用中间结果Q1和Q2和子矩阵H3,计算最终结果,恢复分块1和分块25。并把恢复的分块25和步骤63读取到的分块25进行比较,如果数据一致,则把分块1写入存储介质中。
步骤7、存储设备2通知控制设备该分块已完成重构,控制设备通过CPU继续执行步骤1或者重构完成。
本发明实施例提供的方法,通过控制设备直接根据获取的目标个数的存储设备的第一结果对第一条带中丢失的第一分块进行重构,从而控制设备无需从存储设备上读取第一条带上未丢的分块,仅需要从存储设备处获取目标个数的第一结果,就可以对第一分块进行重构,由于第一结果与第一条带上未丢的分块相比数据量较少,因此在重构第一分块的过程中,控制设备和存储设备之间传输的数据量比较少,在传输过程中,占用的网络带宽也比较少,从而提高了重构分块的性能。并且由于仅向各个存储设备发送一个第二获取请求就可以获取到各个存储设备发送的第一结果,而无需向各个存储设备发送大量的读请求,不仅降低了控制设备的CPU的开销,也进一步降低网络带宽的占用情况,进而可以进一步提高重构分块的性能。并且通过比较第二分块与重构的第二分块的内容是否一致,可以避免出现数据静默的故障,提高了系统的可靠性。
对于一些特殊的应用场景(例如存储和控制一化的云存储场景),包括存储单元和控制单元的设备兼具控制设备、存储设备以及目标存储设备的功能。对于这样的设备可以根据图10所示的本发明实施例提供的一种数据重构的方法的流程图,对丢失的分块进行重构。该方法的流程下述步骤。
1001、第一存储设备确定第一条带中已丢失分块中的第一分块,该第一条带中的分块由目标个数的设备存储,其中,第一存储设备为目标个数的存储设备中的任一设备。
每个存储设备包括控制单元和存储单元,第一存储设备可以通过第一存储设备的控制单元执行本步骤1001。在本步骤1001之前,第一存储设备可以先查询第一存储设备的存储单元内的存储介质是否丢失分块,若存储介质有丢失的分块,则可以先确定哪个条带丢失了分块,再确定哪个条带上丢失了哪些分块。
对于整个存储介质失效的情况下,在一种可能的实现方式中,第一存储设备查询目标个数的存储设备中的第一存储设备内的存储介质是否失效;若第一存储设备内的存储介质失效时,该第一存储设备从失效的存储介质所存储的分块中,确定第一条带中已丢失分块中的第一分块。具体地,当第一存储设备内的存储介质中的任一介质失效时,第一存储设备从关联表中,确定该任一存储介质的标识对应的至少一个第二条带,然后再将该至少一个第二条带中的任一条带作为该第一条带,再确定与该任一存储介质的标识以及第一条带的条带标识均对应的至少一个第四分块,该第一存储设备将该至少一个第四分块中的任一分块确定为该第一分块。
对于存储介质部分失效的情况下,在一种可能的实现方式中,第一存储设备查询该目标个数的存储设备中的第一存储设备中的存储介质是否有分块丢失;当该第一存储设备内的任一存储介质丢失至少一个分块时,从至少一个分块中确定第一条带中已丢失分块中的第一分块。具体地,第一存储设备从关联表中,确定至少一个分块对应的至少一个第二条带,然后再将该至少一个第二条带中的任一条带作为该第一条带,该第一存储设备再将该第一条带内与该至少一个分块对应的至少一个第四分块中的任一分块确定为该第一分块。
1002、第一存储设备将该第一条带的校验矩阵拆分成第一子矩阵和目标个数的第二子矩阵。
本步骤1002可以由第一存储设备的控制单元来执行。本步骤1002与步骤303中控制设备将该第一条带的校验矩阵拆分成第一子矩阵和目标个数的第二子矩阵的过程同理,在此本发明实施例对本步骤1002不做赘述。
1003、第一存储设备向该每个第二子矩阵所对应的存储设备的存储单元分别发送第三获取请求,该第三获取请求携带与存储设备对应的第二子矩阵、该第二子矩阵中每一列所对应的第三分块的块信息以及该第一存储设备的标识,其中,该第二存储设备为该目标个数的存储设备中除该第一存储设备以外的任一设备。
由于每个存储设备都有存储单元,且每个存储设备内的存储单元均存储有第一条带的部分分块,每个存储设备内的存储单元具有一定的计算能力,因此,该第一存储设备可以向每个存储设备的存储单元发送第三获取请求,以便每个存储设备的存储单元可以基于第三获取请求的内容,获取第一结果。
该第三获取请求用于指示向第一存储设备发送第一结果,该第三获取请求为获取请求的一种,该获取请求携带与存储设备对应的第二子矩阵、该第二子矩阵中每一列所对应的第三分块的块信息以及第一存储设备的标识,当该目标设备的标识为第一存储设备的标识时,该获取请求为第三获取请求,此时,该目标设备也即是第一存储设备。
1004、存储设备的存储单元接收该第三获取请求。
1005、存储设备的存储单元根据该第二子矩阵中每一列所对应的第三分块的块信息,读取该至少一个第三分块。
本步骤1005与步骤306中存储设备该第二子矩阵中每一列所对应的第三分块的块信息,获取该至少一个第三分块的过程同理,在此,本发明实施例对本步骤1004不做赘述。
1006、存储设备的存储单元根据该至少一个第三分块以及该第二子矩阵计算,得到第一结果。
本步骤1006与步骤307中存储设备获取该第一结果的过程同理,在此,本发明实施例对本步骤1006不做赘述。
1007、存储设备的存储单元向第一存储设备发送该第一结果。
需要说明的是,该目标个数的存储设备的存储单元均要执行步骤1004-1007所示的过程。需要说明的是,1004-1007中的存储设备包括第一存储设备
1008、第一存储设备获取目标个数的存储设备的存储单元基于第三获取请求返回的第一结果。
由于该目标个数的存储设备的存储单元中均要执行步骤1004-1007,因此,第一存储设备获取目标个数的存储设备的存储单元基于第三获取请求返回的第一结果。
1009、第一存储设备根据目标个数的存储设备的第一结果以及第一子矩阵,对第一分块进行重构。
本步骤1009与步骤310中控制设备对该第一分块进行重构的过程同理,在此本发明实施例对本步骤1009不做赘述。
1010、第一存储设备将重构的第一分块存储在该第一存储设备的存储介质内。
第一存储设备的存储介质可以是第一存储设备的存储单元内的任一存储介质,当该第一存储设备存储完重构的第一分块后,可以更新关联表中与第一分块对应的信息,以便后续所有的存储设备均可以从第一存储设备处读取重构的第一分块。
为了避免出现静默错误,在本步骤1010之前,第一存储设备从存储该第二分块的存储设备获取该第二分块;若该重构的第二分块与获取的第二分块相同,则执行将重构的第一分块存储在该第一存储设备的存储介质内的步骤,否则,不执行将重构的第一分块存储在该第一存储设备的存储介质内的步骤,并且禁止使用该第一条带。需要说明的是,第一存储设备重构第二分块的过程与控制设备重构第二分块的过程同理。
1011、第一存储设备查询该第一条带的已丢失的所有分块是否全部重构完成,若未全部重构完成,则对未重构的任一个分块继续执行上述分块重构过程,否则该第一条带重构完成。
需要说明的是,该第一存储设备查询的第一条带上丢失的分块可以是第一存储设备丢失的分块,还可以其他存储设备丢失的分块。
为了进一步说明步骤1001-1011所示的过程,参见图11所示本发明实施例提供的一种分块重构过程的示意图。在图11中,以23+2为例,分块1故障(该故障可以是分块丢失),分块1-8在节点1上,分块9-16在节点2上,分块17-25在节点3上。每个节点都为运行了控制单元和存储单元的存储设备(也即是控制与存储一体的设备)。
1101、节点1的控制单元发起重构,扫描到故障的分块(分块1)。
1102、节点1的控制单元把分块1所在的条带的分块按框分组,需要修复分块1和分块25,节点1的控制单元把校验矩阵H拆分成4个子矩阵(Hx1,Hx2,Hx3,Hx4),节点1通过IO单元向各个节点的存储单元发送请求(第三获取请求)。
其中,子矩阵Hx1,Hx2以及Hx3为第二子矩阵,子矩阵Hx4为第一子矩阵,节点1的控制单元把分块2-24分成3组:分块2-8为1组,节点1的存储单元对子矩阵Hx1进行计算;分块9-16为1组,节点2的存储单元对子矩阵Hx2进行计算;分块17-24为1组,节点3的存储单元对子矩阵Hx3进行计算。
1103、接收到请求后,各个节点的存储单元通过IO单元读取存储介质上的分块。
节点1的存储单元读取到分块2-8,节点2的存储单元读取到分块9-16,节点3的存储单元读取到分块17-25。
1104、各个节点的存储单元读取到分块后,通过计算得到中间结果(第一结果)。
节点1的存储单元使用子矩阵Hx1进行计算,得到中间结果Qx1;节点2的存储单元使用子矩阵Hx2进行计算,得到Qx2;节点3的存储单元使用子矩阵Hx3进行计算,得到Qx3,其中,Qx1、Qx2和Qx3为第一结果。
1105、各个节点的存储单元把中间结果发送给节点1。节点1使用中间结果(Qx1、Qx2和Qx3)和子矩阵Hx4,计算最终结果,恢复分块1和分块25。并把恢复的分块1写入存储介质中。节点1的控制单元继续重构第一条带上故障的其他分块,或者重构完成结束。
本发明实施例提供的方法,通过第一存储设备直接根据获取的目标个数的存储设备的第一结果对第一条带中丢失的第一分块进行重构,从而第一存储设备无需从其他存储设备上读取第一条带上未丢的分块,仅需要从存储设备的存储单元处获取目标个数的第一结果,就可以对第一分块进行重构,由于第一结果与第一条带上未丢的分块相比数据量较少,因此在重构第一分块的过程中,第一存储设备和其他存储设备之间传输的数据量比较少,在数据传输过程中,占用的网络带宽也比较少,从而提高了重构分块的性能。并且由于仅向各个存储设备的存储单元发送一个第三获取请求就可以获取到各个存储设备的存储单元发送的第一结果,而无需向各个存储设备的存储单元发送大量的读请求,不仅降低了控制设备的CPU的开销,也进一步降低网络带宽的占用情况,进而可以进一步提高重构分块的性能。并且通过比较重构的第二分块与获取的分块的内容是否一致,可以避免出现数据静默的故障,提高了系统的可靠性。并且,当控制模块只接入一个存储模块的场景,控可以完全减少控制模块和存储模块间的重构带宽。
当第一条带被存储多个硬盘框或者多个AZ中时,目标个数的存储设备可以由至少一个主存储设备来管理,目标个数的存储设备可以将其存储单元生成的第一结果发送至对应的主存储设备,然后主存储设备对获取的第一结果进行求和,重构第一分块的设备可以在主存储设备处获取求和后的矩阵并根据求和后的矩阵,重构第一分块,为了说明该过程,参见图12所示的本发明实施例提供的一种数据重构的方法的流程图。该方法的流程包括以下步骤。
1201、第一存储设备确定第一条带中已丢失分块中的第一分块,该第一条带中的分块由目标个数的设备存储。
本步骤1201与步骤1001所示的过程同理,本发明实施例对本步骤1201不做赘述。
1202、第一存储设备将该第一条带的校验矩阵拆分成第一子矩阵和目标个数的第二子矩阵。
本步骤1202与步骤1002所示的过程同理,本发明实施例对本步骤1202不做赘述。
1203、第一存储设备向每个第二子矩阵所对应的存储设备的存储单元分别发送第四获取请求,该第四获取请求携带与存储设备对应的第二子矩阵、该第二子矩阵中每一列所对应的第三分块的块信息以及主存储设备的标识。
该第四获取请求用于指示向主存储设备发送第一结果,该第四获取请求为获取请求的一种,该获取请求携带与存储设备对应的第二子矩阵、该第二子矩阵中每一列所对应的第三分块的块信息以及目标设备的标识,当该目标设备的标识为主存储设备的标识时,该获取请求为第四获取请求,此时,该目标设备也即是主存储设备。
1204、存储设备的存储单元接收该第四获取请求。
1205、存储设备的存储单元根据该第二子矩阵中每一列所对应的第三分块的块信息,读取该至少一个第三分块。
本步骤1205与步骤1005所示的过程同理,本发明实施例对本步骤1205不做赘述。
1206、存储设备的存储单元根据该至少一个第三分块以及该第二子矩阵计算,得到第一结果。
本步骤1206与步骤1006所示的过程同理,本发明实施例对本步骤1206不做赘述。
1207、存储设备向管理该存储设备的主存储设备发送该第一结果。
需要说明的是,目标个数的存储设备均只执行步骤1204-1207的过程。
1208、对于至少一个主存储设备中的任一主存储设备,该任一主存储设备获取该任一主存储设备管理的至少一个存储设备基于该第四获取请求返回的第一结果。
1209、该任一主存储设备对获取的至少一个存储设备返回的第一结果进行求和,得到目标求和矩阵。
该目标求和矩阵,也即是至少一个存储设备基于该第四获取请求返回的第一结果的和。
1210、该任一主存储设备向第一存储设备发送目标求和矩阵。
由于每个存储设备均会向对应的主存储设备发送第一结果,因此,该至少一个主存储设备中的每个主存储设备均执行步骤1208-1210所示的过程。
1211、第一存储设备从至少一个主存储设备获取至少一个目标求和矩阵。
由于该至少一个主存储设备中的每个主存储设备均执行步骤1208-1210所示的过程,该第一存储设备会获取到至少一个主存储设备的目标求和矩阵,也即是获取到至少一个目标求和矩阵。
1212、第一存储设备根据至少一个目标求和矩阵以及该第一子矩阵,对该第一分块进行重构。
该第一存储设备的控制单元可以对该至少一个目标求和矩阵进行求和,得到求和矩阵;基于该第一子矩阵的逆矩阵以及该求和矩阵,获取目标分块矩阵;将该目标分块矩阵的第一目标行作为重构的第一分块,将该目标分块矩阵的第二目标行作为重构的第二分块。
需要说明的是,本步骤1212所示的过程也即是根据目标个数的存储设备的第一结果,对第一分块进行重构的过程
1213、第一存储设备将重构的第一分块存储在该第一存储设备的存储介质内。
本步骤1213与步骤1011所示的过程同理,本发明实施例对本步骤1213不做赘述。需要说明的是,该第一存储设备查询的第一条带上丢失的分块可以是第一存储设备丢失的分块,还可以其他存储设备丢失的分块。
为了避免出现静默错误,在本步骤1213之前,第一存储设备从存储该第二分块的存储设备获取该第二分块;若该重构的第二分块与获取的第二分块相同,则执行将重构的第一分块存储在该第一存储设备的存储介质内的步骤,否则,不执行将重构的第一分块存储在该第一存储设备的存储介质内的步骤,并且禁止使用该第一条带。需要说明的是,第一存储设备重构第二分块的过程与控制设备重构第二分块的过程同理。
1214、第一存储设备查询该第一条带的已丢失的所有分块是否全部重构完成,若未全部重构完成,则对未重构的任一个分块继续执行上述分块重构过程,否则该第一条带重构完成。
本步骤1214与步骤1012所示的过程同理,本发明实施例对本步骤1214不做赘述。
为了进一步说明步骤1201-1214所示的过程,参见图13所示本发明实施例提供的一种分块重构过程的示意图。在图13中,以23+2为例,分块1为故障分块,需要修复分块1和分块25,分块1-6在节点1上,分块7-12在节点2上,分块13-18在节点3上,分块19-25在节点4上。其中,节点1和节点2在框1或者AZ1中,节点2和节点3在框2或者AZ2中。每个节点都为运行了控制单元和存储单元的存储设备。
1301、节点1的控制单元发起重构,扫描到故障的分块(分块1)。
1302、节点1的控制单元把分块1所在的条带的分块按框分组。节点1的控制单元把校验矩阵H拆分成5个子矩阵(Hy1,Hy2,Hy3,Hy4,Hy5),节点1通过IO单元向各个节点的存储单元发送请求(第四获取请求)
其中,子矩阵Hy1,Hy2,Hy3,Hy4为第二子矩阵,子矩阵Hy5为第一子矩阵,节点1的控制单元把分块2-24分成4组:分块2-6为1组,节点1的存储单元对Hy1进行计算;分块7-12为1组,节点2的存储单元对Hy2进行计算;分块13-18为1组,节点3的存储单元对Hy3进行计算,分块19-23为1组,节点4的存储单元对Hy4进行计算。
1303、接收到请求后,各个节点的存储单元通过IO单元读取存储介质上的分块。
节点1的存储单元读取到分块2-6,节点2的存储单元读取到分块7-12,节点3的存储单元读取到分块13-18,节点2的存储单元读取到分块7-12,节点7的存储单元读取到分块13-24。
1304、各个节点存储单元读取到分块后,通过计算得到中间结果(第一结果)。
节点1的存储单元对子矩阵Hy1和其对应的第三分块进行计算,得到中间结果Qy1;节点2的存储单元对子矩阵Hy2和其对应的第三分块进行计算,得到Qy2;节点3的存储单元对子矩阵Hy3和其对应的第三分块进行计算,得到Qy3;节点4的存储单元对子矩阵Hy4和其对应的第三分块进行计算,得到Qy4;其中,Qy1、Qy2、Qy3和Qy4为第一结果。
1305、各个节点的存储单元把中间结果发送给框内或者AZ内的主节点(主存储设备),各个主节点计算目标求和矩阵。
节点2通过内部交换机把Qy2发送给节点1(主存储设备),节点1对中间结果(Qy2,Qy1)进行加法运算,得到目标求和矩阵T1;节点4通过内部交换机把Qy4发送给节点3(主存储设备),节点3对中间结果(Qy3,Qy4)进行加法运算,得到目标求和矩阵T2
1306、主节点3通过框间或AZ间的交换机,将计算的目标求和矩阵给节点1。
1307、节点1使用目标求和矩阵和子矩阵Hy5,计算最终结果,恢复分块1和分块25。并把恢复的分块1写入存储介质中。节点1的控制单元继续重构故障其他分块,或者重构完成结束。
本发明实施例提供的方法,通过第一存储设备将第一条带的校验矩阵拆分成第一子矩阵和所述目标个数的第二子矩阵,并将拆分出的第二子矩阵发送给对应的存储设备的存储单元,各个存储设备的存储单元生成第一结果,各个存储设备将生成的第一结果发送至主存储设备,由主存储设备先对接收到的第一结果进行求和,得到目标求和矩阵,再将目标求和矩阵发送给第一存储设备,最后第一存储设备根据至少一个目标求和矩阵以及第一子矩阵,重构第一分块。在该过程中第一存储设备无需从其他存储设备上读取第一条带上未丢的分块,仅需要从主存储设备获取目标第一结果,就可以对第一分块进行重构,由于第一结果或者是目标第一结果与第一条带上未丢的分块相比数据量较少,因此在重构第一分块的过程中,第一存储设备和其他存储设备之间传输的数据量比较少,在数据传输过程中,占用的网络带宽也比较少,从而提高了重构分块的性能。若该至少一个主存储设备在不同的硬盘框内,各个硬盘框之间交互的数据仅有第二子矩阵,因此,可以降低各个硬盘框之间的数据交互量。并且由于仅向各个存储设备的存储单元发送一个第四获取请求就可以各个主存储设备获取到各个存储设备的存储单元发送的第一结果,而无需向各个存储设备的存储单元发送大量的读请求,不仅降低了控制设备的CPU的开销,也进一步降低网络带宽的占用情况,进而可以进一步提高重构分块的性能。并且通过比较重构的第二分块与获取的分块的内容是否一致,可以避免出现数据静默的故障,提高了系统的可靠性。
图14是本发明实施例提供的一种数据重构的装置的结构示意图,该装置包括:
确定模块1401,用于执行上述步骤302;
第一获取模块1402,用于获取所述目标个数的存储设备的第一结果,每个第一结果由所述目标个数的存储设备中的一个存储设备读取存储的所述第一条带的有效分块并且根据读取的有效分块计算得到;
重构模块1403,用于根据所述目标个数的存储设备的第一结果,对所述第一分块进行重构。
可选地,该装置还包括拆分模块,用于执行上述步骤303;
所述重构模块1403,用于执行上述步骤3010。
可选地,该重构模块1403,用于:
对所述目标个数的存储设备的第一结果进行求和,得到求和矩阵;
基于所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行确定为重构的第一分块。
可选地,该装置还包括:
第一发送模块,用于执行上述步骤304;
所述第一获取模块1402,用于执行上述步骤309。
可选地,该第一发送模块,用于执行上述步骤311。
可选地,所述装置还包括执行模块;
所述第一获取模块1402,还用于从存储所述第二分块的存储设备获取所述第二分块;
所述重构模块1403,还用于根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第二分块进行重构;
所述执行模块,用于若重构的第二分块与获取的所述第二分块相同,则执行所述向目标存储设备发送写请求的步骤,否则,不执行所述向目标存储设备发送写请求的步骤,并且禁止使用所述第一条带。
可选地,所述装置还包括:
第二发送模块,用于执行上述步骤804;
所述第二发送模块,还用于执行上述步骤805;
第一接收模块,用于执行上述步骤813。
可选地,所述装置还包括:
第二接收模块,用于接收第一重构请求,所述第一重构请求携带存储设备中失效的存储介质的存储介质标识;
所述确定模块1401,还用于执行上述步骤21-23。
可选地,所述装置还包括:
第三接收模块,用于接收第二重构请求,所述第二重构请求携带存储设备中存储介质丢失的至少一个分块的块信息;
所述确定模块1401,还用于执行上述步骤2A-2C。
可选地,所述装置还包括:
第一查询模块,用于查执行上述步骤1012。
可选地,所述装置还包括:
第二查询模块,用于查询所述目标个数的存储设备中的第一存储设备内的存储介质是否失效:
所述确定模块1401,还用于若第一存储设备内的存储介质失效时,从失效的存储介质所存储的分块中,确定第一条带中已丢失分块中的第一分块。
可选地,所述装置还包括:
第三查询模块,用于查询所述目标个数的存储设备中的第一存储设备中的存储介质是否有分块丢失;
所述确定模块1401,还用于当所述第一存储设备内的任一存储介质丢失至少一个分块时,从所述至少一个分块中确定第一条带中已丢失分块中的第一分块。
可选地,所述装置还包括:
第三发送模块,用于执行上述步骤1003;
第二获取模块,用于获取执行上述步骤1008。
可选地,所述装置还包括:
第三获取模块,用于执行上述步骤1204;
所述第三获取模块,还用于执行上述步骤1211;
所述重构模块1403,还用于执行上述步骤1012。
可选地,所述重构模块1403还用于:
对所述至少一个目标求和矩阵进行求和,得到求和矩阵;
基于将所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行确定为重构的第一分块。
图15是本发明实施例提供的一种数据重构的装置的结构示意图,该装置包括:
读取模块1501,用于读取存储设备存储的第一条带的有效分块,所述第一条带由目标个数的存储设备存储;
计算模块1502,用于根据读取的有效分块计算,得到第一结果;
发送模块1503,用于执行上述步骤308。
可选地,该装置还包括:
接收模块,用于接收获取请求,所述获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标设备的标识,所述第二子矩阵包括第一条带中在对应的存储设备上所存储的至少一个第三分块所对应的列,所述第二分块为所述第一条带中未丢失的任一分块,所述第三分块为未丢失的分块中除所述第二分块以外的任一分块:
所述读取模块1501,用于执行上述步骤1205;
所述计算模块1502,用于执行上述步骤1206。
可选地,该计算模块1502还用于:
将所述至少一个第三分块组成分块矩阵,所述分块矩阵的每一行为一个第三分块;
将所述第二子矩阵与所述分块矩阵相乘,得到所述第一结果。
可选地,所述目标设备包括控制设备、目标存储设备、第一存储设备以及至少一个主存储设备,所述第一存储设备为所述目标存储设备中的任一设备,所述至少一个主存储设备用于管理所述目标个数的存储设备;
当所述目标设备的标识为控制设备的标识时,所述获取请求为第一获取请求,用于指示向所述控制设备发送所述第一结果;
当所述目标设备的标识为目标存储设备的标识时,所述获取请求为第二获取请求,用于指示向所述目标存储设备发送所述第一结果;
当所述目标设备的标识为第一存储设备的标识时,所述获取请求为第三获取请求,用于指示向所述第一存储设备发送所述第一结果;
当所述目标设备的标识为主存储设备的标识时,所述获取请求为第四获取请求,用于指示向所述主存储设备发送所述第一结果。
可选地,所述装置还包括:
第一查询模块,用于查询存储设备内的存储介质是否失效;
所述发送模块1503,还用于当所述存储设备中的存储介质失效时,向控制设备发送第一重构请求,所述第一重构请求携带所述存储设备中失效的存储介质的存储介质标识。
可选地,所述装置还包括:
第二查询模块,用于查询存储设备中的存储介质是否有分块丢失;
所述发送模块1503,还用于当所述存储设备内的任一存储介质丢失至少一个分块时,向控制设备发送第二重构请求,所述第二重构请求携带所述至少一个分块的块信息。
图16是本发明实施例提供的一种数据重构的装置的结构示意图,该装置包括:
接收模块1601,用于接收目标重构请求,所述目标重构请求携带第一子矩阵,所述目标重构请求用于指示根据所述第一子矩阵,对第一条带中已丢失分块中的第一分块进行重构,所述第一子矩阵包括所述第一条带中已丢失分块中的第一分块所对应的列以及第二分块所对应的列,所述第二分块为所述第一条带中未丢失的任一分块;
获取模块1602,用于执行上述步骤810;
重构模块1603,用于执行上述步骤811。
可选地,所述重构模块1603还用于:
对所述目标个数的存储设备的第一结果进行求和,得到求和矩阵;
基于将所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块的第一目标行作为重构的第一分块。
可选地,所述装置还包括:
存储模块,用于执行上述步骤812;
发送模块,用于执行上述步骤813。
可选地,所述装置还包括执行模块;
所述获取模块1602,还用于从存储所述第二分块的存储设备获取所述第二分块;
所述重构模块1603,还用于根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第二分块进行重构;
所述执行模块,用于若重构的第二分块与获取的所述第二分块相同,则执行所述对重构后的第一分块进行存储的步骤,否则,不执行所述对重构后的第一分块进行存储的步骤,并且禁止使用所述第一条带。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据重构的装置在对分块进行重构时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据重构的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,存储介质或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (62)

1.一种数据重构的方法,其特征在于,所述方法包括:
确定第一条带中已丢失分块中的第一分块,所述第一条带中的分块由目标个数的存储设备存储;
将所述第一条带的校验矩阵拆分成第一子矩阵和所述目标个数的第二子矩阵,所述第一子矩阵包括所述第一分块所对应的列以及第二分块所对应的列,每个第二子矩阵包括所述第一条带中在一个存储设备上所存储的至少一个第三分块所对应的列,所述第二分块为所述第一条带的有效分块中的任一分块,所述第三分块为所述有效分块中除所述第二分块以外的任一分块;
获取所述目标个数的存储设备的第一结果,每个第一结果由所述目标个数的存储设备中的一个存储设备读取存储的所述第一条带的有效分块并且根据读取的有效分块计算得到;
根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构包括:
对所述目标个数的存储设备的第一结果进行求和,得到求和矩阵;
基于所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行确定为重构的第一分块。
3.根据权利要求1-2所述的任一方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之前,所述方法还包括:
向所述每个第二子矩阵所对应的存储设备分别发送第一获取请求,所述第一获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及控制设备的标识;
获取所述目标个数的存储设备基于所述第一获取请求返回的第一结果。
4.根据权利要求1-2所述的任一方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之后,所述方法还包括:
向目标存储设备发送写请求,所述写请求携带重构的第一分块以及所述重构的第一分块的块信息,由所述目标存储设备根据所述重构的第一分块的块信息,对所述重构的第一分块进行存储。
5.根据权利要求4所述的方法,其特征在于,所述向目标存储设备发送写请求之前,所述方法还包括:
从存储所述第二分块的存储设备获取所述第二分块;
根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第二分块进行重构;
若重构的第二分块与获取的所述第二分块相同,则执行所述向目标存储设备发送写请求的步骤,否则,不执行所述向目标存储设备发送写请求的步骤,并且禁止使用所述第一条带。
6.根据权利要求1、2和5所述的任一方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之前,所述方法还包括:
向所述每个第二子矩阵所对应的存储设备分别发送第二获取请求,所述第二获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标存储设备的标识;
向所述目标存储设备发送目标重构请求,所述目标重构请求携带所述第一子矩阵,所述目标重构请求用于指示根据所述第一子矩阵,对所述第一分块进行重构;
接收所述目标存储设备发送的重构完成响应,所述重构完成响应用于指示所述第一分块重构完成。
7.根据权利要求1、2和5所述的任一方法,其特征在于,所述确定第一条带中已丢失分块中的第一分块之前,所述方法还包括:
接收第一重构请求,所述第一重构请求携带存储设备中失效的存储介质的存储介质标识;
根据所述第一重构请求携带的存储介质标识,确定至少一个第二条带;
将所述至少一个第二条带中任一个条带确定为所述第一条带;
所述确定第一条带中已丢失分块中的第一分块包括:
根据所述存储介质标识,将所述第一条带中已丢失分块中的任一个分块确定为所述第一分块。
8.根据权利要求1、2和5所述的任一方法,其特征在于,所述确定第一条带中已丢失分块中的第一分块之前,所述方法还包括:
接收第二重构请求,所述第二重构请求携带存储设备中存储介质丢失的至少一个分块的块信息;
根据所述第二重构请求携带的至少一个分块的块信息,确定至少一个第二条带;
将所述至少一个第二条带中任一个条带确定为所述第一条带;
所述确定第一条带中已丢失分块中的第一分块包括:
根据所述至少一个分块的块信息,将所述第一条带中已丢失分块中的任一个分块确定为所述第一分块。
9.根据权利要求1、2和5所述的任一方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之后,所述方法还包括:
查询所述第一条带的已丢失的所有分块是否全部重构完成,若未全部重构完成,则参照所述第一分块的重构过程对未重构的任一个分块进行重构,否则所述第一条带重构完成。
10.根据权利要求1、2和5所述的任一方法,其特征在于,所述确定第一条带中已丢失分块中的第一分块之前,所述方法还包括:
查询所述目标个数的存储设备中的第一存储设备内的存储介质是否失效;
所述确定第一条带中已丢失分块中的第一分块包括:
若第一存储设备内的存储介质失效时,从失效的存储介质所存储的分块中,确定第一条带中已丢失分块中的第一分块。
11.根据权利要求1、2和5所述的任一方法,其特征在于,所述确定第一条带中已丢失分块中的第一分块之前,所述方法还包括:
查询所述目标个数的存储设备中的第一存储设备中的存储介质是否有分块丢失;
当所述第一存储设备内的任一存储介质丢失至少一个分块时,从所述至少一个分块中确定第一条带中已丢失分块中的第一分块。
12.根据权利要求1、2和5所述的任一方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之前,所述方法还包括:
向所述每个第二子矩阵所对应的存储设备的存储单元分别发送第三获取请求,所述第三获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及第一存储设备的标识;
获取所述目标个数的存储设备的存储单元基于所述第三获取请求返回的第一结果。
13.根据权利要求1、2和5所述的任一方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之前,所述方法还包括:
向所述每个第二子矩阵所对应的存储设备的存储单元分别发送第四获取请求,所述第四获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及主存储设备的标识;
从至少一个主存储设备获取至少一个目标求和矩阵,所述至少一个主存储设备用于管理所述目标个数的存储设备,每个目标求和矩阵为至少一个存储设备基于所述第四获取请求返回的第一结果的和,所述至少一个存储设备为一个主存储设备所管理的设备;
所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构包括:
根据所述至少一个目标求和矩阵以及所述第一子矩阵,对所述第一分块进行重构。
14.根据权利要求13所述的方法,其特征在于,所述根据所述至少一个目标求和矩阵以及所述第一子矩阵,对所述第一分块进行重构包括:
对所述至少一个目标求和矩阵进行求和,得到求和矩阵;
基于将所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行确定为重构的第一分块。
15.一种数据重构的方法,其特征在于,所述方法包括:
接收获取请求,所述获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标设备的标识,所述第二子矩阵包括第一条带中在对应的存储设备上所存储的至少一个第三分块所对应的列,所述第三分块为所述第一条带的有效分块中除第二分块以外的任一分块,所述第二分块为所述有效分块中的任一分块,所述第一条带由目标个数的存储设备存储;
根据所述第二子矩阵中每一列所对应的第三分块的块信息,读取所述至少一个第三分块;
根据所述至少一个第三分块以及所述第二子矩阵计算,得到第一结果;
向所述目标设备发送所述第一结果,以便所述目标设备根据所述目标个数的存储设备的第一结果,对所述第一条带中已丢失分块中的第一分块进行重构。
16.根据权利要求15所述的方法,其特征在于,所述根据所述至少一个第三分块以及所述第二子矩阵计算,得到第一结果包括:
将所述至少一个第三分块组成分块矩阵,所述分块矩阵的每一行为一个第三分块;
将所述第二子矩阵与所述分块矩阵相乘,得到所述第一结果。
17.根据权利要求15-16所述的任一方法,其特征在于,所述目标设备包括控制设备、目标存储设备、第一存储设备以及至少一个主存储设备,所述第一存储设备为所述目标存储设备中的任一设备,所述至少一个主存储设备用于管理所述目标个数的存储设备;
当所述目标设备的标识为控制设备的标识时,所述获取请求为第一获取请求,用于指示向所述控制设备发送所述第一结果;
当所述目标设备的标识为目标存储设备的标识时,所述获取请求为第二获取请求,用于指示向所述目标存储设备发送所述第一结果;
当所述目标设备的标识为第一存储设备的标识时,所述获取请求为第三获取请求,用于指示向所述第一存储设备发送所述第一结果;
当所述目标设备的标识为主存储设备的标识时,所述获取请求为第四获取请求,用于指示向所述主存储设备发送所述第一结果。
18.根据权利要求15-16所述的任一方法,其特征在于,所述接收获取请求之前,所述方法还包括:
查询存储设备内的存储介质是否失效;
当所述存储设备中的存储介质失效时,向控制设备发送第一重构请求,所述第一重构请求携带所述存储设备中失效的存储介质的存储介质标识。
19.根据权利要求15-16所述的任一方法,其特征在于,所述接收获取请求之前,所述方法还包括:
查询存储设备中的存储介质是否有分块丢失;
当所述存储设备内的任一存储介质丢失至少一个分块时,向控制设备发送第二重构请求,所述第二重构请求携带所述至少一个分块的块信息。
20.一种数据重构的方法,其特征在于,所述方法包括:
接收目标重构请求,所述目标重构请求携带第一子矩阵,所述目标重构请求用于指示根据所述第一子矩阵,对第一条带中已丢失分块中的第一分块进行重构,所述第一子矩阵包括所述第一条带中已丢失分块中的第一分块所对应的列以及第二分块所对应的列,所述第二分块为所述第一条带的有效分块中的任一分块;
获取目标个数的存储设备基于第二获取请求返回的第一结果,所述第二获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标存储设备的标识,所述第一条带中的分块由所述目标个数的存储设备存储,每个第一结果由所述目标个数的存储设备中的一个存储设备读取存储的所述第一条带的有效分块并且根据读取的有效分块计算得到,所述第三分块为所述有效分块中除所述第二分块以外的任一分块;
根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构。
21.根据权利要求20所述的方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构包括:
对所述目标个数的存储设备的第一结果进行求和,得到求和矩阵;
基于将所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行作为重构的第一分块。
22.根据权利要求20-21所述的任一方法,其特征在于,所述根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构之后,所述方法还包括:
对重构后的第一分块进行存储;
当对所述重构后的第一分块存储完成时,向控制设备发送重构完成响应,所述重构完成响应用于指示所述第一分块重构完成。
23.根据权利要求22所述的方法,其特征在于,所述对重构后的第一分块进行存储之前,所述方法还包括:
从存储所述第二分块的存储设备获取所述第二分块;
根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第二分块进行重构;
若重构的第二分块与获取的所述第二分块相同,则执行所述对重构后的第一分块进行存储的步骤,否则,不执行所述对重构后的第一分块进行存储的步骤,并且禁止使用所述第一条带。
24.一种数据重构的装置,其特征在于,所述装置包括:
确定模块,用于确定第一条带中已丢失分块中的第一分块,所述第一条带中的分块由目标个数的存储设备存储;
拆分模块,用于将所述第一条带的校验矩阵拆分成第一子矩阵和所述目标个数的第二子矩阵,所述第一子矩阵包括所述第一分块所对应的列以及第二分块所对应的列,每个第二子矩阵包括所述第一条带中在一个存储设备上所存储的至少一个第三分块所对应的列,所述第二分块为所述第一条带的有效分块中的任一分块,所述第三分块为所述有效分块中除所述第二分块以外的任一分块;
第一获取模块,用于获取所述目标个数的存储设备的第一结果,每个第一结果由所述目标个数的存储设备中的一个存储设备读取存储的所述第一条带的有效分块并且根据读取的有效分块计算得到;
重构模块,用于根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构。
25.根据权利要求24所述的装置,其特征在于,所述重构模块用于:
对所述目标个数的存储设备的第一结果进行求和,得到求和矩阵;
基于所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行确定为重构的第一分块。
26.根据权利要求24-25所述的任一装置,其特征在于,所述装置还包括:
第一发送模块,用于向所述每个第二子矩阵所对应的存储设备分别发送第一获取请求,所述第一获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及控制设备的标识;
所述第一获取模块,还用于获取所述目标个数的存储设备基于所述第一获取请求返回的第一结果。
27.根据权利要求26所述的装置,其特征在于,所述第一发送模块还用于:
向目标存储设备发送写请求,所述写请求携带重构的第一分块以及所述重构的第一分块的块信息,由所述目标存储设备根据所述重构的第一分块的块信息,对所述重构的第一分块进行存储。
28.根据权利要求27所述的装置,其特征在于,所述装置还包括执行模块;
所述第一获取模块,还用于从存储所述第二分块的存储设备获取所述第二分块;
所述重构模块,还用于根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第二分块进行重构;
所述执行模块,用于若重构的第二分块与获取的所述第二分块相同,则执行所述向目标存储设备发送写请求的步骤,否则,不执行所述向目标存储设备发送写请求的步骤,并且禁止使用所述第一条带。
29.根据权利要求24、25、27和28所述的任一装置,其特征在于,所述装置还包括:
第二发送模块,用于向所述每个第二子矩阵所对应的存储设备分别发送第二获取请求,所述第二获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标存储设备的标识;
所述第二发送模块,还用于向所述目标存储设备发送目标重构请求,所述目标重构请求携带所述第一子矩阵,所述目标重构请求用于指示根据所述第一子矩阵,对所述第一分块进行重构;
第一接收模块,用于接收所述目标存储设备发送的重构完成响应,所述重构完成响应用于指示所述第一分块重构完成。
30.根据权利要求24、25、27和28所述的任一装置,其特征在于,所述装置还包括:
第二接收模块,用于接收第一重构请求,所述第一重构请求携带存储设备中失效的存储介质的存储介质标识;
所述确定模块还用于:
根据所述第一重构请求携带的存储介质标识,确定至少一个第二条带;
将所述至少一个第二条带中任一个条带确定为所述第一条带;
根据所述存储介质标识,将所述第一条带中已丢失分块中的任一个分块确定为所述第一分块。
31.根据权利要求24、25、27和28所述的任一装置,其特征在于,所述装置还包括:
第三接收模块,用于接收第二重构请求,所述第二重构请求携带存储设备中存储介质丢失的至少一个分块的块信息;
所述确定模块还用于:
根据所述第二重构请求携带的至少一个分块的块信息,确定至少一个第二条带;
将所述至少一个第二条带中任一个条带确定为所述第一条带;
根据所述至少一个分块的块信息,将所述第一条带中已丢失分块中的任一个分块确定为所述第一分块。
32.根据权利要求24、25、27和28所述的任一装置,其特征在于,所述装置还包括:
第一查询模块,用于查询所述第一条带的已丢失的所有分块是否全部重构完成,若未全部重构完成,则参照所述第一分块的重构过程对未重构的任一个分块进行重构,否则所述第一条带重构完成。
33.根据权利要求24、25和27所述的任一装置,其特征在于,所述装置还包括:
第二查询模块,用于查询所述目标个数的存储设备中的第一存储设备内的存储介质是否失效;
所述确定模块,还用于若第一存储设备内的存储介质失效时,从失效的存储介质所存储的分块中,确定第一条带中已丢失分块中的第一分块。
34.根据权利要求24、25、27和28所述的任一装置,其特征在于,所述装置还包括:
第三查询模块,用于查询所述目标个数的存储设备中的第一存储设备中的存储介质是否有分块丢失;
所述确定模块,还用于当所述第一存储设备内的任一存储介质丢失至少一个分块时,从所述至少一个分块中确定第一条带中已丢失分块中的第一分块。
35.根据权利要求24、25、27和28所述的任一装置,其特征在于,所述装置还包括:
第三发送模块,用于向所述每个第二子矩阵所对应的存储设备的存储单元分别发送第三获取请求,所述第三获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及第一存储设备的标识;
第二获取模块,用于获取所述目标个数的存储设备的存储单元基于所述第三获取请求返回的第一结果。
36.根据权利要求24、25、27和28所述的任一装置,其特征在于,所述装置还包括:
第三获取模块,用于向所述每个第二子矩阵所对应的存储设备的存储单元分别发送第四获取请求,所述第四获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及主存储设备的标识;
所述第三获取模块,还用于从至少一个主存储设备获取至少一个目标求和矩阵,所述至少一个主存储设备用于管理所述目标个数的存储设备,每个目标求和矩阵为至少一个存储设备基于所述第四获取请求返回的第一结果的和,所述至少一个存储设备为一个主存储设备所管理的设备;
所述重构模块,还用于根据所述至少一个目标求和矩阵以及所述第一子矩阵,对所述第一分块进行重构。
37.根据权利要求36所述的装置,其特征在于,所述重构模块还用于:
对所述至少一个目标求和矩阵进行求和,得到求和矩阵;
基于将所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块矩阵的第一目标行确定为重构的第一分块。
38.一种数据重构的装置,其特征在于,所述装置包括:
接收模块,用于接收获取请求,所述获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标设备的标识,所述第二子矩阵包括第一条带中在对应的存储设备上所存储的至少一个第三分块所对应的列,所述第三分块为所述第一条带的有效分块中除第二分块以外的任一分块,所述第二分块为所述有效分块中的任一分块,所述第一条带由目标个数的存储设备存储;
读取模块,用于根据所述第二子矩阵中每一列所对应的第三分块的块信息,读取所述至少一个第三分块;
计算模块,用于根据所述至少一个第三分块以及所述第二子矩阵计算,得到第一结果;
发送模块,用于向所述目标设备发送所述第一结果,以便所述目标设备根据所述目标个数的存储设备的第一结果,对第一条带中已丢失分块中的第一分块进行重构。
39.根据权利要求38所述的装置,其特征在于,所述计算模块用于:
将所述至少一个第三分块组成分块矩阵,所述分块矩阵的每一行为一个第三分块;
将所述第二子矩阵与所述分块矩阵相乘,得到所述第一结果。
40.根据权利要求38-39所述的任一装置,其特征在于,所述目标设备包括控制设备、目标存储设备、第一存储设备以及至少一个主存储设备,所述第一存储设备为所述目标存储设备中的任一设备,所述至少一个主存储设备用于管理所述目标个数的存储设备;
当所述目标设备的标识为控制设备的标识时,所述获取请求为第一获取请求,用于指示向所述控制设备发送所述第一结果;
当所述目标设备的标识为目标存储设备的标识时,所述获取请求为第二获取请求,用于指示向所述目标存储设备发送所述第一结果;
当所述目标设备的标识为第一存储设备的标识时,所述获取请求为第三获取请求,用于指示向所述第一存储设备发送所述第一结果;
当所述目标设备的标识为主存储设备的标识时,所述获取请求为第四获取请求,用于指示向所述主存储设备发送所述第一结果。
41.根据权利要求38-39所述的任一装置,其特征在于,所述装置还包括:
第一查询模块,用于查询存储设备内的存储介质是否失效;
所述发送模块,还用于当所述存储设备中的存储介质失效时,向控制设备发送第一重构请求,所述第一重构请求携带所述存储设备中失效的存储介质的存储介质标识。
42.根据权利要求38-39所述的任一装置,其特征在于,所述装置还包括:
第二查询模块,用于查询存储设备中的存储介质是否有分块丢失;
所述发送模块,还用于当所述存储设备内的任一存储介质丢失至少一个分块时,向控制设备发送第二重构请求,所述第二重构请求携带所述至少一个分块的块信息。
43.一种数据重构的装置,其特征在于,所述装置包括:
接收模块,用于接收目标重构请求,所述目标重构请求携带第一子矩阵,所述目标重构请求用于指示根据所述第一子矩阵,对第一条带中已丢失分块中的第一分块进行重构,所述第一子矩阵包括所述第一条带中已丢失分块中的第一分块所对应的列以及第二分块所对应的列,所述第二分块为所述第一条带的有效分块的任一分块;
获取模块,用于获取目标个数的存储设备基于第二获取请求返回的第一结果,所述第二获取请求携带与存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及目标存储设备的标识,所述第一条带中的分块由所述目标个数的存储设备存储,每个第一结果由所述目标个数的存储设备中的一个存储设备读取存储的所述第一条带的有效分块并且根据读取的有效分块计算得到,所述第三分块为所述有效分块中除所述第二分块以外的任一分块;
重构模块,用于根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第一分块进行重构。
44.根据权利要求43所述的装置,其特征在于,所述重构模块还用于:
对所述目标个数的存储设备的第一结果进行求和,得到求和矩阵;
基于将所述第一子矩阵的逆矩阵以及所述求和矩阵,获取目标分块矩阵;
将所述目标分块的第一目标行作为重构的第一分块。
45.根据权利要求43-44所述的装置,其特征在于,所述装置还包括:
存储模块,用于对重构后的第一分块进行存储;
发送模块,用于当对所述重构后的第一分块存储完成时,向控制设备发送重构完成响应,所述重构完成响应用于指示所述第一分块重构完成。
46.根据权利要求45所述的装置,其特征在于,所述装置还包括执行模块;
所述获取模块,还用于从存储所述第二分块的存储设备获取所述第二分块;
所述重构模块,还用于根据所述目标个数的存储设备的第一结果以及所述第一子矩阵,对所述第二分块进行重构;
所述执行模块,用于若重构的第二分块与获取的所述第二分块相同,则执行所述对重构后的第一分块进行存储的步骤,否则,不执行所述对重构后的第一分块进行存储的步骤,并且禁止使用所述第一条带。
47.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求23任一项所述的数据重构的方法所执行的操作。
48.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求23任一项所述的数据重构的方法所执行的操作。
49.一种存储系统中数据重构的方法,其特征在于,所述存储系统包括控制设备和一个或多个存储设备,所述一个或多个存储设备中的每一个均包括一个硬盘;所述一个或多个存储设备用于存储所述控制设备生成的一个条带的分块;所述方法包括:
所述一个或多个存储设备中存储有所述条带的有效分块的第一存储设备接收获取请求,所述获取请求携带与所述存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及所述控制设备的标识,所述第二子矩阵包括所述条带中在对应的存储设备上所存储的至少一个第三分块所对应的列,所述第三分块为所述条带的有效分块中除第二分块以外的任一分块,所述第二分块为所述有效分块中的任一分块;根据所述第二子矩阵中每一列所对应的第三分块的块信息,读取所述至少一个第三分块;根据所述至少一个第三分块以及所述第二子矩阵计算得到第一结果;
所述第一存储设备将所述第一结果发送给所述控制设备;
所述控制设备接收所述第一结果并根据所述第一结果恢复所述条带中损坏的分块。
50.根据权利要求49所述的方法,其特征在于,所述条带是根据纠删码算法生成的。
51.根据权利要求49或50所述的方法,其特征在于,所述一个或多个存储设备为硬盘框。
52.一种存储系统,其特征在于,所述存储系统包括控制设备和一个或多个存储设备,所述一个或多个存储设备中的每一个均包括一个硬盘;所述一个或多个存储设备用于存储所述控制设备生成的一个条带的分块;
所述一个或多个存储设备中存储有所述条带的有效分块的第一存储设备用于:接收获取请求,所述获取请求携带与所述存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及所述控制设备的标识,所述第二子矩阵包括所述条带中在对应的存储设备上所存储的至少一个第三分块所对应的列,所述第三分块为所述条带的有效分块中除第二分块以外的任一分块,所述第二分块为所述有效分块中的任一分块;根据所述第二子矩阵中每一列所对应的第三分块的块信息,读取所述至少一个第三分块;根据所述至少一个第三分块以及所述第二子矩阵计算得到第一结果,将所述第一结果发送给所述控制设备;
所述控制设备用于接收所述第一结果并根据所述第一结果恢复所述条带中损坏的分块。
53.根据权利要求52所述的存储系统,其特征在于,所述一个或多个存储设备为硬盘框。
54.根据权利要求52或53所述的存储系统,其特征在于,所述条带是根据纠删码算法生成的。
55.一种存储系统中数据重构的方法,其特征在于,所述存储系统包括多个存储设备,所述多个存储设备中的每一个存储设备均包括一个或多个硬盘,所述多个存储设备用于存储一个条带的分块;所述方法包括:
所述多个存储设备中存储有所述条带的有效分块的第一存储设备接收获取请求,所述获取请求携带与所述存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及所述多个存储设备中的第二存储设备的标识,所述第二子矩阵包括所述条带中在对应的存储设备上所存储的至少一个第三分块所对应的列,所述第三分块为所述条带的有效分块中除第二分块以外的任一分块,所述第二分块为所述有效分块中的任一分块;根据所述第二子矩阵中每一列所对应的第三分块的块信息,读取所述至少一个第三分块;根据所述至少一个第三分块以及所述第二子矩阵计算得到第一结果;
所述多个存储设备中的第二存储设备根据所述第一结果恢复所述条带中损坏的分块。
56.根据权利要求55所述的方法,其特征在于,所述第二存储设备为所述多个存储设备中的主存储设备或者所述多个存储设备中存储所述条带的损坏的分块的存储设备。
57.根据权利要求56所述的方法,其特征在于,所述方法还包括:
所述第一存储设备向所述第二存储设备发送所述第一结果;其中,所述第一存储设备不包括所述第二存储设备;
所述第二存储设备接收所述第一结果。
58.根据权利要求56所述的方法,其特征在于,所述方法还包括:
所述第一存储设备中除所述第二存储设备外的其他存储设备向所述第二存储设备发送所述第一结果;其中,所述第一存储设备包含所述第二存储设备;
所述第二存储设备接收所述其他存储设备发送的第一结果。
59.一种存储系统,其特征在于,所述存储系统包括多个存储设备,所述多个存储设备中的每一个存储设备均包括一个或多个硬盘,所述多个存储设备用于存储一个条带的分块;
所述多个存储设备中存储有所述条带的有效分块的第一存储设备用于:接收获取请求,所述获取请求携带与所述存储设备对应的第二子矩阵、所述第二子矩阵中每一列所对应的第三分块的块信息以及所述多个存储设备中的第二存储设备的标识,所述第二子矩阵包括所述条带中在对应的存储设备上所存储的至少一个第三分块所对应的列,所述第三分块为所述条带的有效分块中除第二分块以外的任一分块,所述第二分块为所述有效分块中的任一分块;根据所述第二子矩阵中每一列所对应的第三分块的块信息,读取所述至少一个第三分块;根据所述至少一个第三分块以及所述第二子矩阵读取存储的有效分块并且根据读取的有效分块计算得到第一结果;
所述多个存储设备中的第二存储设备用于根据所述第一结果恢复所述条带中损坏的分块。
60.根据权利要求59所述的存储系统,其特征在于,所述第二存储设备为所述多个存储设备中的主存储设备或者所述多个存储设备中存储所述条带的损坏的分块的存储设备。
61.根据权利要求60所述的存储系统,其特征在于,所述第一存储设备用于向所述第二存储设备发送所述第一结果;其中,所述第一存储设备不包括所述第二存储设备;
所述第二存储设备用于接收所述第一结果。
62.根据权利要求60所述的存储系统,其特征在于,所述第一存储设备中除所述第二存储设备外的其他存储设备用于向所述第二存储设备发送所述第一结果;其中,所述第一存储设备包含所述第二存储设备;
所述第二存储设备用于接收所述其他存储设备发送的第一结果。
CN201980008279.9A 2019-07-22 2019-07-22 数据重构的方法、装置、计算机设备、存储介质及系统 Active CN112543920B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/097155 WO2021012164A1 (zh) 2019-07-22 2019-07-22 数据重构的方法、装置、计算机设备、存储介质及系统

Publications (2)

Publication Number Publication Date
CN112543920A CN112543920A (zh) 2021-03-23
CN112543920B true CN112543920B (zh) 2023-02-10

Family

ID=74192748

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980008279.9A Active CN112543920B (zh) 2019-07-22 2019-07-22 数据重构的方法、装置、计算机设备、存储介质及系统

Country Status (4)

Country Link
US (1) US20220138046A1 (zh)
EP (1) EP3989069B1 (zh)
CN (1) CN112543920B (zh)
WO (1) WO2021012164A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114168064A (zh) * 2020-09-10 2022-03-11 伊姆西Ip控股有限责任公司 用于重建存储系统的方法、设备和计算机程序产品
US11983080B2 (en) * 2021-11-16 2024-05-14 Netapp, Inc. Use of cluster-level redundancy within a cluster of a distributed storage management system to address node-level errors
CN116846546B (zh) * 2023-04-24 2024-03-22 广州智臣信息科技有限公司 信息防丢失防重复的跨网络数据交换系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102981778A (zh) * 2012-11-15 2013-03-20 浙江宇视科技有限公司 一种raid阵列重建方法及装置
CN103975309A (zh) * 2012-11-28 2014-08-06 华为技术有限公司 数据恢复方法、数据恢复装置、存储器及存储系统
CN104461394A (zh) * 2014-12-09 2015-03-25 华为技术有限公司 一种raid及从其读取数据的方法
CN104536698A (zh) * 2014-12-10 2015-04-22 华为技术有限公司 一种基于raid的磁盘重构方法及相关设备
WO2018112980A1 (zh) * 2016-12-24 2018-06-28 华为技术有限公司 存储控制器、数据处理芯片及数据处理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623595A (en) * 1994-09-26 1997-04-22 Oracle Corporation Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US20050091452A1 (en) * 2003-10-28 2005-04-28 Ying Chen System and method for reducing data loss in disk arrays by establishing data redundancy on demand
US7263629B2 (en) * 2003-11-24 2007-08-28 Network Appliance, Inc. Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
US7206899B2 (en) * 2003-12-29 2007-04-17 Intel Corporation Method, system, and program for managing data transfer and construction
US7512862B1 (en) * 2005-04-13 2009-03-31 Network Appliance, Inc. Compression of data for protection
US20080104445A1 (en) * 2006-10-31 2008-05-01 Hewlett-Packard Development Company, L.P. Raid array
US8156405B1 (en) * 2007-12-07 2012-04-10 Emc Corporation Efficient redundant memory unit array
US8386834B1 (en) * 2010-04-30 2013-02-26 Network Appliance, Inc. Raid storage configuration for cached data storage
US8914706B2 (en) * 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8683296B2 (en) * 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
CN104991740B (zh) * 2015-06-24 2018-05-22 华中科技大学 一种加速纠删码编解码过程的通用矩阵优化方法
EP3208714B1 (en) * 2015-12-31 2019-08-21 Huawei Technologies Co., Ltd. Data reconstruction method, apparatus and system in distributed storage system
KR102580123B1 (ko) * 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
US9841908B1 (en) * 2016-06-30 2017-12-12 Western Digital Technologies, Inc. Declustered array of storage devices with chunk groups and support for multiple erasure schemes
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
CN107656832B (zh) * 2017-09-18 2019-10-25 华中科技大学 一种低数据重建开销的纠删码方法
CN108334280B (zh) * 2017-12-28 2021-01-08 深圳创新科技术有限公司 一种raid5磁盘组快速重建方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102981778A (zh) * 2012-11-15 2013-03-20 浙江宇视科技有限公司 一种raid阵列重建方法及装置
CN103975309A (zh) * 2012-11-28 2014-08-06 华为技术有限公司 数据恢复方法、数据恢复装置、存储器及存储系统
CN104461394A (zh) * 2014-12-09 2015-03-25 华为技术有限公司 一种raid及从其读取数据的方法
CN104536698A (zh) * 2014-12-10 2015-04-22 华为技术有限公司 一种基于raid的磁盘重构方法及相关设备
WO2018112980A1 (zh) * 2016-12-24 2018-06-28 华为技术有限公司 存储控制器、数据处理芯片及数据处理方法

Also Published As

Publication number Publication date
EP3989069A4 (en) 2022-07-27
EP3989069A1 (en) 2022-04-27
US20220138046A1 (en) 2022-05-05
WO2021012164A1 (zh) 2021-01-28
EP3989069B1 (en) 2023-10-25
CN112543920A (zh) 2021-03-23

Similar Documents

Publication Publication Date Title
EP3101530B1 (en) Data distribution method, data storage method, related apparatus, and system
CN112543920B (zh) 数据重构的方法、装置、计算机设备、存储介质及系统
US9846540B1 (en) Data durability using un-encoded copies and encoded combinations
US20200004447A1 (en) System and method for combining erasure-coded protection sets
EP3745269B1 (en) Hierarchical fault tolerance in system storage
CN109582213B (zh) 数据重构方法及装置、数据存储系统
US11394777B2 (en) Reliable data storage for decentralized computer systems
CN109491835B (zh) 一种基于动态分组码的数据容错方法
CN104902009B (zh) 一种基于可擦除编码和链式备份的分布式存储系统
US10740198B2 (en) Parallel partial repair of storage
JP2018508073A (ja) データ除去、割り当て、及び再構築
CN113821373B (zh) 提高磁盘地址转换速度的方法、系统、设备和存储介质
CN113918083A (zh) 分条管理方法、存储系统、分条管理装置及存储介质
WO2018235132A1 (en) DISTRIBUTED STORAGE SYSTEM
JP2021086289A (ja) 分散ストレージシステムおよび分散ストレージシステムのパリティ更新方法
JP2018524705A (ja) データ転送中にデータアクセス要求を処理するための方法及びシステム
CN114528139A (zh) 数据处理和节点部署的方法、装置、电子设备及介质
CN110474787B (zh) 一种节点故障检测方法和装置
Li et al. Exploiting decoding computational locality to improve the I/O performance of an XOR-coded storage cluster under concurrent failures
CN112667443A (zh) 一种面向用户的可变分布式存储副本容错方法
Singal et al. Storage vs repair bandwidth for network erasure coding in distributed storage systems
CN113268374A (zh) 用于存储数据的方法、存储装置和数据存储系统
CN111443872A (zh) 分布式存储系统构建方法、装置、设备、介质
WO2021190232A1 (zh) 存储系统、数据处理方法、装置、节点以及存储介质
CN116781606A (zh) 一种网络链路处理方法及计算机可读存储介质

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
GR01 Patent grant
GR01 Patent grant