CN113626250A - 一种基于纠删码的条带合并方法及系统 - Google Patents

一种基于纠删码的条带合并方法及系统 Download PDF

Info

Publication number
CN113626250A
CN113626250A CN202110774701.0A CN202110774701A CN113626250A CN 113626250 A CN113626250 A CN 113626250A CN 202110774701 A CN202110774701 A CN 202110774701A CN 113626250 A CN113626250 A CN 113626250A
Authority
CN
China
Prior art keywords
erasure code
stripe
erasure
merging
strip
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
Application number
CN202110774701.0A
Other languages
English (en)
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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202110774701.0A priority Critical patent/CN113626250A/zh
Priority to US17/477,476 priority patent/US11467905B1/en
Publication of CN113626250A publication Critical patent/CN113626250A/zh
Pending legal-status Critical Current

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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0673Single storage device
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于纠删码的条带合并方法及系统,首先通过StripeMerge‑P算法基于预处理的哈希表确定纠删码条带校验块的对齐信息,通过贪心策略选择要合并的纠删码条带对进行合并,通过哈希表可以直接查找校验块位置信息,不需要额外增加计算开销,且结合贪心策略更加减少挑选合并纠删码条带对的开销。且相比直接采用StripeMerge‑G算法两两计算任意两个纠删码条带对的合并开销对比的方式,本发明先通过StripeMerge‑P算法以相对较小的计算开销挑选合并开销相对较少的纠删码条带对,然后再在剩余纠删码条带中采用StripeMerge‑G算法挑选合并的纠删码条带对,保证整体的计算开销和合并开销都相对较小,降低了纠删码条带合并过程中的计算开销。

Description

一种基于纠删码的条带合并方法及系统
技术领域
本发明属于计算机存储领域,更具体地,涉及一种基于纠删码的条带合并方法及系统。
背景技术
纠删码已广泛部署在现代大规模存储系统中,通过存储数据块和校验块来实现高效存储的容错。纠删码种类很多,Reed-Solonon码最受欢迎并已经被广泛应用于工业界。在实践中,大规模存储系统会存储多个条带,这些条带独立编码并分布在不同的k+m个节点集上。此外,每个块通常配置为大尺寸,例如,64MiB或256MiB,以减轻I/O开销。最近,企业探索了大条带的概念,以抑制每个条带中校验块的比例,以实现极大的存储节省。然而,如何以更小的开销生成大条带仍然是一个重要的问题。特别是,将当前存储的纠删码条带(称为小条带)重新编码为大条带会在为大条带重新放置数据块和重新生成校验块时触发大量带宽开销。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种基于纠删码的条带合并方法及系统,旨在解决现有技术将纠删码条带重新编码合并为大条带时会触发大量宽带开销的问题。
为实现上述目的,第一方面,本发明提供了一种基于纠删码的条带合并方法,包括如下步骤:
S1,对若干个纠删码条带进行预处理,确定每个纠删码条带校验块的存放位置,并构建哈希表;所述哈希表指示各个纠删码条带校验块的位置和各个纠删码条带的编号;
S2,基于所述哈希表确定若干个纠删码条带中与某一个纠删码条带校验块位置全部对齐和部分对齐的纠删码条带的集合,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,将选取的纠删码条带与所述某一个纠删码条带合并,生成合并后的条带;
S3,在所述若干个纠删码条带中删除选取的纠删码条带和所述某一个纠删码条带,得到更新的若干个纠删码条带;
S4,重复执行步骤S2和步骤S3,当无法选取出可以合并的两个纠删码条带时,执行步骤S5;
S5,在所述步骤S3得到的更新的若干个纠删码条带中,计算任意两个纠删码条带组成的纠删码条带对的合并开销;
S6,在所有纠删码条带对中选取合并开销最低的纠删码条带对,并将选取的纠删码条带对合并,生成合并后的条带;
S7,在所有纠删码条带对中删除与步骤S6选取的纠删码条带对相关的纠删码条带对,得到新的所有纠删码条带对;所述与步骤S6选取的纠删码条带对相关的纠删码条带对指的是含有步骤S6选取的纠删码条带对中之一纠删码条带的纠删码条带对;
S8,重复执行步骤S6和步骤S7,直至步骤S7得到的所有纠删码条带对为空。
在一个可选的示例中,所述步骤S2中,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,具体为:
当所述纠删码条带集合中包括校验块位置与所述某一个纠删码条带校验块位置全部对齐的纠删码条带时,从对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;
当所述纠删码条带集合中不包括校验块位置与所述某一个纠删码条带校验块位置对齐的纠删码条带时,从部分对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;其中,部分对齐的纠删码条带按照对齐校验块数量从大到小的顺序被选取;所述对齐校验块数量指的是部分对齐的两个纠删码条带中对齐的校验块的数量。
可以理解的是,本发明中选取合并的纠删码条带对时,是先从对齐校验块数量最多的纠删码条带对中进行选择,然后再从对齐校验块相对多的纠删码条带对中进行选择,以此类推。可以将此过程理解为“贪心策略”,所谓贪心策略指的是:每次都采取在当前状况下最好的选择,从而希望得到整体最好的结果。本发明基于“贪心策略”选择要合并的小条带对,减少了大量不必要的计算开销。
在一个可选的示例中,将两个纠删码条带合并,具体包括如下步骤:
检查纠删码条带各个数据块的位置,如果某个节点中同时存储了两个数据块,则将其中一个数据块迁移到对于当前合并后条带而言的空闲节点;
将具有相同编码系数的所有校验块迁移至同一个节点中;
在存储校验块的节点中如果仍然有数据块,则将该数据块进行迁移;
上述过程中所有迁移的校验块数量和数据块数量总和即为合并开销。
在一个可选的示例中,所述步骤S5-步骤S8的过程称为StripeMerge-G算法,具体步骤包括:
S10,在输入的小条带集合中,计算任意两个小条带的合并开销,并将三元组(c,si,sj)存储在集合
Figure BDA0003154297310000031
中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S20,对集合
Figure BDA0003154297310000032
中的所有三元组依照c进行升序排序;
S30,取出集合
Figure BDA0003154297310000033
中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合
Figure BDA0003154297310000034
中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
S40,重复步骤S30,直到集合
Figure BDA0003154297310000041
为空。
具体地,本发明中小条带指的是合并前的纠删码条带。每个纠删码条带包括数据块个数相同,合并后条带的数据块个数为小条带数据块个数的2倍,因此可将合并后的条带称为大条带。
在一个可选的示例中,所述步骤S2-步骤S4的过程称为StripeMerge-P算法,具体步骤包括:
确定小条带集合以及校验块全部或部分对齐集合;
将校验块全部或部分对齐集合中的小条带对按照对齐数据块数量从大到小排序,依次寻找合并开销最小或合并开销小于阈值的小条带对,将其进行合并;
对剩余的小条带使用所述StripeMerge-G算法。
第二方面,本发明提供了一种基于纠删码的条带合并系统,包括:
纠删码条带预处理单元,用于执行步骤S1:S1,对若干个纠删码条带进行预处理,确定每个纠删码条带校验块的存放位置,并构建哈希表;所述哈希表指示各个纠删码条带校验块的位置和各个纠删码条带的编号;
第一合并单元,用于执行步骤S2-步骤S4:S2,基于所述哈希表确定若干个纠删码条带中与某一个纠删码条带校验块位置全部对齐和部分对齐的纠删码条带的集合,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,将选取的纠删码条带与所述某一个纠删码条带合并,生成合并后的条带;S3,在所述若干个纠删码条带中删除选取的纠删码条带和所述某一个纠删码条带,得到更新的若干个纠删码条带;S4,重复执行步骤S2和步骤S3,当无法选取出可以合并的两个纠删码条带时,指示第二合并单元执行步骤S5;
第二合并单元,用于执行步骤S5-步骤S8:S5,在所述步骤S3得到的更新的若干个纠删码条带中,计算任意两个纠删码条带组成的纠删码条带对的合并开销;S6,在所有纠删码条带对中选取合并开销最低的纠删码条带对,并将选取的纠删码条带对合并,生成合并后的条带;S7,在所有纠删码条带对中删除与步骤S6选取的纠删码条带对相关的纠删码条带对,得到新的所有纠删码条带对;所述与步骤S6选取的纠删码条带对相关的纠删码条带对指的是含有步骤S6选取的纠删码条带对中之一纠删码条带的纠删码条带对;S8,重复执行步骤S6和步骤S7,直至步骤S7得到的所有纠删码条带对为空。
在一个可选的示例中,所述第一合并单元执行步骤S2过程中,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,具体为:当所述纠删码条带集合中包括校验块位置与所述某一个纠删码条带校验块位置全部对齐的纠删码条带时,从对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;当所述纠删码条带集合中不包括校验块位置与所述某一个纠删码条带校验块位置对齐的纠删码条带时,从部分对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;其中,部分对齐的纠删码条带按照对齐校验块数量从大到小的顺序被选取;所述对齐校验块数量指的是部分对齐的两个纠删码条带中对齐的校验块的数量。
在一个可选的示例中,所述第一合并单元和第二合并单元将两个纠删码条带合并,具体包括如下步骤:检查纠删码条带各个数据块的位置,如果某个节点中同时存储了两个数据块,则将其中一个数据块迁移到对于当前合并后条带而言的空闲节点;将具有相同编码系数的所有校验块迁移至同一个节点中;在存储校验块的节点中如果仍然有数据块,则将该数据块进行迁移;上述过程中所有迁移的校验块数量和数据块数量总和即为合并开销。
在一个可选的示例中,所述第二合并单元执行步骤S5-步骤S8的过程称为所述StripeMerge-G算法,具体步骤包括:
S10,在输入的小条带集合中,计算任意两个小条带的合并开销,并将三元组(c,si,sj)存储在集合
Figure BDA0003154297310000061
中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S20,对集合
Figure BDA0003154297310000062
中的所有三元组依照c进行升序排序;
S30,取出集合
Figure BDA0003154297310000063
中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合
Figure BDA0003154297310000064
中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
S40,重复步骤S30,直到集合
Figure BDA0003154297310000065
为空。
在一个可选的示例中,所述第一合并单元执行步骤S2-步骤S4的过程称为StripeMerge-P算法,具体步骤包括:
确定小条带集合以及校验块全部或部分对齐集合;
将校验块全部或部分对齐集合中的小条带对按照对齐数据块数量从大到小排序,依次寻找合并开销最小或合并开销小于阈值的小条带对,将其进行合并;
对剩余的小条带使用所述StripeMerge-G算法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
本发明提供一种基于纠删码的条带合并方法及系统,首先通过StripeMerge-P算法基于预处理的哈希表确定纠删码条带校验块的对齐信息,通过“贪心策略”选择要合并的纠删码条带对进行合并,通过哈希表可以直接查找校验块完全对齐的条带集和校验块部分对齐的条带集,不需要额外增加计算开销,且结合贪心策略更加减少挑选合并纠删码条带对的开销。相比直接采用StripeMerge-G算法两两计算任意两个纠删码条带对的合并开销对比的方式,本发明先通过StripeMerge-P算法以相对较小的计算开销挑选合并开销相对较少的纠删码条带对,然后再在剩余纠删码条带中采用StripeMerge-G算法挑选合并的纠删码条带对,保证整体的计算开销和合并开销都相对较小,降低了纠删码条带合并过程中的计算开销。
附图说明
图1为本发明实施例提供的基于纠删码的条带合并方法流程图;
图2为本发明实施例提供的两个小条带合并为一个大条带过程中块迁移步骤示意图;
图3为本发明实施例提供的StripeMerge-P算法操作步骤示意图;
图4为本发明实施例提供的基于纠删码的条带合并系统架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
针对现有技术的缺陷和改进需求,本发明提供了一种基于纠删码的条带合并方法及系统,其目的在于最小化大条带的生成带宽。算法包括两个小条带合并开销的计算方法、StripeMerge-G算法和StripeMerge-P算法;两个小条带的合并开销是大条带生成过程中关注的重要指标之一,基于这个指标,执行StripeMerge-G算法和StripeMerge-P算法,以更小的开销生成大条带。
图1为本发明实施例提供的基于纠删码的条带合并方法流程图,如图1所示,包括如下步骤:
S1,对若干个纠删码条带进行预处理,确定每个纠删码条带校验块的存放位置,并构建哈希表;所述哈希表指示各个纠删码条带校验块的位置和各个纠删码条带的编号;
S2,基于所述哈希表确定若干个纠删码条带中与某一个纠删码条带校验块位置全部对齐和部分对齐的纠删码条带的集合,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,将选取的纠删码条带与所述某一个纠删码条带合并,生成合并后的条带;
S3,在所述若干个纠删码条带中删除选取的纠删码条带和所述某一个纠删码条带,得到更新的若干个纠删码条带;
S4,重复执行步骤S2和步骤S3,当无法选取出可以合并的两个纠删码条带时,执行步骤S5;
S5,在所述步骤S3得到的更新的若干个纠删码条带中,计算任意两个纠删码条带组成的纠删码条带对的合并开销;
S6,在所有纠删码条带对中选取合并开销最低的纠删码条带对,并将选取的纠删码条带对合并,生成合并后的条带;
S7,在所有纠删码条带对中删除与步骤S6选取的纠删码条带对相关的纠删码条带对,得到新的所有纠删码条带对;所述与步骤S6选取的纠删码条带对相关的纠删码条带对指的是含有步骤S6选取的纠删码条带对中之一纠删码条带的纠删码条带对;
S8,重复执行步骤S6和步骤S7,直至步骤S7得到的所有纠删码条带对为空。
在一个可选的示例中,所述步骤S2中,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,具体为:
当所述纠删码条带集合中包括校验块位置与所述某一个纠删码条带校验块位置全部对齐的纠删码条带时,从对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;
当所述纠删码条带集合中不包括校验块位置与所述某一个纠删码条带校验块位置对齐的纠删码条带时,从部分对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;其中,部分对齐的纠删码条带按照对齐校验块数量从大到小的顺序被选取;所述对齐校验块数量指的是部分对齐的两个纠删码条带中对齐的校验块的数量。
在一个可选的示例中,将两个纠删码条带合并,具体包括如下步骤:
检查纠删码条带各个数据块的位置,如果某个节点中同时存储了两个数据块,则将其中一个数据块迁移到对于当前合并后条带而言的空闲节点;
将具有相同编码系数的所有校验块迁移至同一个节点中;
在存储校验块的节点中如果仍然有数据块,则将该数据块进行迁移;
上述过程中所有迁移的校验块数量和数据块数量总和即为合并开销。
在一个可选的示例中,所述步骤S5-步骤S8的过程称为StripeMerge-G算法,具体步骤包括:
S10,在输入的小条带集合中,计算任意两个小条带的合并开销,并将三元组(c,si,sj)存储在集合
Figure BDA0003154297310000091
中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S20,对集合
Figure BDA0003154297310000092
中的所有三元组依照c进行升序排序;
S30,取出集合
Figure BDA0003154297310000093
中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合
Figure BDA0003154297310000094
中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
S40,重复步骤S30,直到集合
Figure BDA0003154297310000095
为空。
在一个可选的示例中,所述步骤S2-步骤S4的过程称为StripeMerge-P算法,具体步骤包括:
确定小条带集合以及校验块全部或部分对齐集合;
将校验块全部或部分对齐集合中的小条带对按照对齐数据块数量从大到小排序,依次寻找合并开销最小或合并开销小于阈值的小条带对,将其进行合并;
对剩余的小条带使用所述StripeMerge-G算法。
更具体地,在一个具体的实施例中,在基于Reed-solomon(RS)码的存储系统中,对于每一个条带,将所有k个数据使用RS码进行编码,生成n-k个校验块,其中,RS码属于纠删码的一种。这n个块组成了一个条带,且这n个块中的任意k个块可以修复出原始数据。
图2中所示的是一个将(n,k)=(4,2)的小条带合并成(n,k)=(6,2)的大条带的过程中进行块迁移的例子,N1~N6为6个节点。
本发明所提供的基于纠删码的条带合并方法的步骤包括:
(F1)检查数据块的放置,如果某个节点中同时存储了两个数据块,则将其中一个数据块迁移到对于当前这个合并后的大条带而言的空闲节点;
如图2所示,节点N2中同时存储着数据块b和数据块c,将数据块c迁移至节点N6
(F2)将具有相同编码系数的所有校验块迁移至同一个节点中;
如图2所示,节点N1中的校验块c+d与节点N3中的校验块a+b有着相同的编码系数,故将他们迁移至同一个节点中;
(F3)在存储校验块的节点中如果仍然有数据块,则将数据块进行迁移;
如图2所示,完成前两次迁移后,节点N3中仍然存储着数据块d,将数据块d迁移至节点N5
(F4)本过程中迁移的块数量即为合并开销;
如图2所示,本过程中共迁移3个块,合并开销为3;
图3中所示的是一个将(n,k)=(4,2)的小条带合并成(n,k)=(6,2)的大条带的例子。
本发明所提供的基于纠删码的条带合并方法的步骤包括:
(T1)输入小条带集合以及i-部分校验对齐集合;
如图2所示,根据条带中校验块的分布情况构建哈希表,哈希表的key为校验块P1,P2的位置,哈希表的value为校验块满足对应分布的条带的编号。通过哈希表可以高效地获取i-部分校验对齐集合。
其中,i-部分校验对齐集合指的是:对于某个小条带而言有i个校验块对齐的条带组成的集合,i表示对齐校验块的数量。
(T2)按照i从大到小的顺序,依次选择每个i-部分校验对齐集合,并检查每个小条带,找到集合中有最小合并开销的对,如果这个对接近于最佳匹配,就对齐进行合并;
如图3所示,在2-部分校验对齐集合中,条带1与条带5满足最佳匹配,故将条带1与条带5进行合并;在1-部分校验对齐集合中,条带2与条带3接近于最佳匹配,故将条带2与条带3进行合并。
(T3)对剩余的小条带使用StripeMerge-G算法;
如图3所示,对剩余的条带4与条带6使用StripeMerge-G算法进行合并。
总体而言,本发明所提供的基于纠删码的条带合并方法,可以降低大条带生成开销,显著提升大条带生成效率。
图4为本发明实施例提供的基于纠删码的条带合并系统架构图,如图4所示,包括:
纠删码条带预处理单元410,用于执行步骤S1:S1,对若干个纠删码条带进行预处理,确定每个纠删码条带校验块的存放位置,并构建哈希表;所述哈希表指示各个纠删码条带校验块的位置和各个纠删码条带的编号;
第一合并单元420,用于执行步骤S2-步骤S4:S2,基于所述哈希表确定若干个纠删码条带中与某一个纠删码条带校验块位置全部对齐和部分对齐的纠删码条带的集合,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,将选取的纠删码条带与所述某一个纠删码条带合并,生成合并后的条带;S3,在所述若干个纠删码条带中删除选取的纠删码条带和所述某一个纠删码条带,得到更新的若干个纠删码条带;S4,重复执行步骤S2和步骤S3,当无法选取出可以合并的两个纠删码条带时,指示第二合并单元执行步骤S5;
第二合并单元430,用于执行步骤S5-步骤S8:S5,在所述步骤S3得到的更新的若干个纠删码条带中,计算任意两个纠删码条带组成的纠删码条带对的合并开销;S6,在所有纠删码条带对中选取合并开销最低的纠删码条带对,并将选取的纠删码条带对合并,生成合并后的条带;S7,在所有纠删码条带对中删除与步骤S6选取的纠删码条带对相关的纠删码条带对,得到新的所有纠删码条带对;所述与步骤S6选取的纠删码条带对相关的纠删码条带对指的是含有步骤S6选取的纠删码条带对中之一纠删码条带的纠删码条带对;S8,重复执行步骤S6和步骤S7,直至步骤S7得到的所有纠删码条带对为空。
可以理解的是,上述各个单元的详细功能实现可参见前述方法实施例中的介绍,在此不做赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于纠删码的条带合并方法,其特征在于,包括如下步骤:
S1,对若干个纠删码条带进行预处理,确定每个纠删码条带校验块的存放位置,并构建哈希表;所述哈希表指示各个纠删码条带校验块的位置和各个纠删码条带的编号;
S2,基于所述哈希表确定若干个纠删码条带中与某一个纠删码条带校验块位置全部对齐和部分对齐的纠删码条带的集合,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,将选取的纠删码条带与所述某一个纠删码条带合并,生成合并后的条带;
S3,在所述若干个纠删码条带中删除选取的纠删码条带和所述某一个纠删码条带,得到更新的若干个纠删码条带;
S4,重复执行步骤S2和步骤S3,当无法选取出可以合并的两个纠删码条带时,执行步骤S5;
S5,在所述步骤S3得到的更新的若干个纠删码条带中,计算任意两个纠删码条带组成的纠删码条带对的合并开销;
S6,在所有纠删码条带对中选取合并开销最低的纠删码条带对,并将选取的纠删码条带对合并,生成合并后的条带;
S7,在所有纠删码条带对中删除与步骤S6选取的纠删码条带对相关的纠删码条带对,得到新的所有纠删码条带对;所述与步骤S6选取的纠删码条带对相关的纠删码条带对指的是含有步骤S6选取的纠删码条带对中之一纠删码条带的纠删码条带对;
S8,重复执行步骤S6和步骤S7,直至步骤S7得到的所有纠删码条带对为空。
2.根据权利要求1所述的条带合并方法,其特征在于,所述步骤S2中,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,具体为:
当所述纠删码条带集合中包括校验块位置与所述某一个纠删码条带校验块位置全部对齐的纠删码条带时,从对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;
当所述纠删码条带集合中不包括校验块位置与所述某一个纠删码条带校验块位置对齐的纠删码条带时,从部分对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;其中,部分对齐的纠删码条带按照对齐校验块数量从大到小的顺序被选取;所述对齐校验块数量指的是部分对齐的两个纠删码条带中对齐的校验块的数量。
3.根据权利要求1所述的条带合并方法,其特征在于,将两个纠删码条带合并,具体包括如下步骤:
检查纠删码条带各个数据块的位置,如果某个节点中同时存储了两个数据块,则将其中一个数据块迁移到对于当前合并后条带而言的空闲节点;
将具有相同编码系数的所有校验块迁移至同一个节点中;
在存储校验块的节点中如果仍然有数据块,则将该数据块进行迁移;
上述过程中所有迁移的校验块数量和数据块数量总和即为合并开销。
4.根据权利要求2所述的条带合并方法,其特征在于,所述步骤S5-步骤S8的过程称为StripeMerge-G算法,具体步骤包括:
S10,在输入的小条带集合中,计算任意两个小条带的合并开销,并将三元组(c,si,sj)存储在集合
Figure FDA0003154297300000021
中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S20,对集合
Figure FDA0003154297300000022
中的所有三元组依照c进行升序排序;
S30,取出集合
Figure FDA0003154297300000023
中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合
Figure FDA0003154297300000024
中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
S40,重复步骤S30,直到集合
Figure FDA0003154297300000031
为空。
5.根据权利要求4所述的条带合并方法,其特征在于,所述步骤S2-步骤S4的过程称为StripeMerge-P算法,具体步骤包括:
确定小条带集合以及校验块全部或部分对齐集合;
将校验块全部或部分对齐集合中的小条带对按照对齐数据块数量从大到小排序,依次寻找合并开销最小或合并开销小于阈值的小条带对,将其进行合并;
对剩余的小条带使用所述StripeMerge-G算法。
6.一种基于纠删码的条带合并系统,其特征在于,包括:
纠删码条带预处理单元,用于执行步骤S1:S1,对若干个纠删码条带进行预处理,确定每个纠删码条带校验块的存放位置,并构建哈希表;所述哈希表指示各个纠删码条带校验块的位置和各个纠删码条带的编号;
第一合并单元,用于执行步骤S2-步骤S4:S2,基于所述哈希表确定若干个纠删码条带中与某一个纠删码条带校验块位置全部对齐和部分对齐的纠删码条带的集合,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,将选取的纠删码条带与所述某一个纠删码条带合并,生成合并后的条带;S3,在所述若干个纠删码条带中删除选取的纠删码条带和所述某一个纠删码条带,得到更新的若干个纠删码条带;S4,重复执行步骤S2和步骤S3,当无法选取出可以合并的两个纠删码条带时,指示第二合并单元执行步骤S5;
第二合并单元,用于执行步骤S5-步骤S8:S5,在所述步骤S3得到的更新的若干个纠删码条带中,计算任意两个纠删码条带组成的纠删码条带对的合并开销;S6,在所有纠删码条带对中选取合并开销最低的纠删码条带对,并将选取的纠删码条带对合并,生成合并后的条带;S7,在所有纠删码条带对中删除与步骤S6选取的纠删码条带对相关的纠删码条带对,得到新的所有纠删码条带对;所述与步骤S6选取的纠删码条带对相关的纠删码条带对指的是含有步骤S6选取的纠删码条带对中之一纠删码条带的纠删码条带对;S8,重复执行步骤S6和步骤S7,直至步骤S7得到的所有纠删码条带对为空。
7.根据权利要求6所述的条带合并系统,其特征在于,所述第一合并单元执行步骤S2过程中,在所述纠删码条带集合中选取与所述某一个纠删码条带合并开销相对较小的纠删码条带,具体为:当所述纠删码条带集合中包括校验块位置与所述某一个纠删码条带校验块位置全部对齐的纠删码条带时,从对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;当所述纠删码条带集合中不包括校验块位置与所述某一个纠删码条带校验块位置对齐的纠删码条带时,从部分对齐的纠删码条带中选取合并开销最小或合并开销小于阈值的一个纠删码条带;其中,部分对齐的纠删码条带按照对齐校验块数量从大到小的顺序被选取;所述对齐校验块数量指的是部分对齐的两个纠删码条带中对齐的校验块的数量。
8.根据权利要求6所述的条带合并系统,其特征在于,所述第一合并单元和第二合并单元将两个纠删码条带合并,具体包括如下步骤:检查纠删码条带各个数据块的位置,如果某个节点中同时存储了两个数据块,则将其中一个数据块迁移到对于当前合并后条带而言的空闲节点;将具有相同编码系数的所有校验块迁移至同一个节点中;在存储校验块的节点中如果仍然有数据块,则将该数据块进行迁移;上述过程中所有迁移的校验块数量和数据块数量总和即为合并开销。
9.根据权利要求5所述的条带合并系统,其特征在于,所述第二合并单元执行步骤S5-步骤S8的过程称为所述StripeMerge-G算法,具体步骤包括:
S10,在输入的小条带集合中,计算任意两个小条带的合并开销,并将三元组(c,si,sj)存储在集合
Figure FDA0003154297300000051
中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S20,对集合
Figure FDA0003154297300000052
中的所有三元组依照c进行升序排序;
S30,取出集合
Figure FDA0003154297300000053
中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合
Figure FDA0003154297300000054
中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
S40,重复步骤S30,直到集合
Figure FDA0003154297300000055
为空。
10.根据权利要求9所述的条带合并系统,其特征在于,所述第一合并单元执行步骤S2-步骤S4的过程称为StripeMerge-P算法,具体步骤包括:
确定小条带集合以及校验块全部或部分对齐集合;
将校验块全部或部分对齐集合中的小条带对按照对齐数据块数量从大到小排序,依次寻找合并开销最小或合并开销小于阈值的小条带对,将其进行合并;
对剩余的小条带使用所述StripeMerge-G算法。
CN202110774701.0A 2021-07-08 2021-07-08 一种基于纠删码的条带合并方法及系统 Pending CN113626250A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110774701.0A CN113626250A (zh) 2021-07-08 2021-07-08 一种基于纠删码的条带合并方法及系统
US17/477,476 US11467905B1 (en) 2021-07-08 2021-09-16 Stripe merging method and system based on erasure codes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110774701.0A CN113626250A (zh) 2021-07-08 2021-07-08 一种基于纠删码的条带合并方法及系统

Publications (1)

Publication Number Publication Date
CN113626250A true CN113626250A (zh) 2021-11-09

Family

ID=78379585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110774701.0A Pending CN113626250A (zh) 2021-07-08 2021-07-08 一种基于纠删码的条带合并方法及系统

Country Status (2)

Country Link
US (1) US11467905B1 (zh)
CN (1) CN113626250A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114143174A (zh) * 2021-11-30 2022-03-04 深信服科技股份有限公司 一种节点修复方法、装置、设备及可读存储介质
CN115599315A (zh) * 2022-12-14 2023-01-13 阿里巴巴(中国)有限公司(Cn) 数据处理方法、装置、系统、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090313526A1 (en) * 2004-08-19 2009-12-17 Neuman Paul S Apparatus and method for merging data blocks with error correction code protection
US20190179818A1 (en) * 2017-12-13 2019-06-13 Electronics And Telecommunications Research Institute Merge join system and method
CN109901946A (zh) * 2019-02-27 2019-06-18 深信服科技股份有限公司 一种纠删码操作方法、装置、设备及存储介质
CN110618895A (zh) * 2019-09-29 2019-12-27 北京天融信网络安全技术有限公司 一种基于纠删码的数据更新方法、装置和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080091916A1 (en) * 2006-10-17 2008-04-17 Agere Systems, Inc. Methods for data capacity expansion and data storage systems
KR20150061258A (ko) * 2013-11-27 2015-06-04 한국전자통신연구원 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치
US9454333B2 (en) * 2014-10-27 2016-09-27 International Business Machines Corporation Parity logs for RAID systems with variable capacity media
US10540231B2 (en) * 2018-04-04 2020-01-21 International Business Machines Corporation Log-structured array (LSA) partial parity eviction and reassembly
US10831602B2 (en) * 2018-04-06 2020-11-10 International Business Machines Corporation Dynamically merging parity data for multiple data stripes
KR102226184B1 (ko) * 2020-02-25 2021-03-10 한국과학기술원 디스크 배열을 위한 캐시베리어 명령 처리 방법 및 이를 위한 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090313526A1 (en) * 2004-08-19 2009-12-17 Neuman Paul S Apparatus and method for merging data blocks with error correction code protection
US20190179818A1 (en) * 2017-12-13 2019-06-13 Electronics And Telecommunications Research Institute Merge join system and method
CN109901946A (zh) * 2019-02-27 2019-06-18 深信服科技股份有限公司 一种纠删码操作方法、装置、设备及存储介质
CN110618895A (zh) * 2019-09-29 2019-12-27 北京天融信网络安全技术有限公司 一种基于纠删码的数据更新方法、装置和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YUAN HUI JUAN等: "Study on 3D measurement and merge technology based on color stripes permutation encoding", 《PROCEEDINGS OF 2011 6TH INTERNATIONAL FORUM ON STRATEGIC TECHNOLOGY》, 15 September 2011 (2011-09-15), pages 1082 - 1085 *
张耀等: "纠删码存储系统数据更新方法研究综述", 《计算机研究与发展》, 10 November 2020 (2020-11-10), pages 2419 - 2431 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114143174A (zh) * 2021-11-30 2022-03-04 深信服科技股份有限公司 一种节点修复方法、装置、设备及可读存储介质
CN115599315A (zh) * 2022-12-14 2023-01-13 阿里巴巴(中国)有限公司(Cn) 数据处理方法、装置、系统、设备及介质

Also Published As

Publication number Publication date
US11467905B1 (en) 2022-10-11

Similar Documents

Publication Publication Date Title
CN108540520B (zh) 基于部分重复码的局部性修复编码及节点故障修复方法
US10031806B2 (en) Efficient repair of erasure coded data based on coefficient matrix decomposition
US8788913B1 (en) Selection of erasure code parameters for no data repair
CN107086870B (zh) 修复多节点失效的mds阵列码编码以及解码方法
CN113626250A (zh) 一种基于纠删码的条带合并方法及系统
US9141679B2 (en) Cloud data storage using redundant encoding
CN111697976B (zh) 一种基于分布式存储的rs纠删快速解码方法及系统
CN111149093A (zh) 分布式存储系统的数据编码、解码及修复方法
KR20190039554A (ko) 이레이저 코드를 위한 데이터의 인코딩 및 디코딩을 위한 장치 및 관련 방법
CN110190926B (zh) 基于网络计算的纠删码更新方法及系统
CN114153651B (zh) 一种数据编码方法、装置、设备及介质
CN107689983B (zh) 基于低修复带宽的云存储系统及方法
US10922201B2 (en) Method and device of data rebuilding in storage system
CN105159618A (zh) 用于单盘失效修复的优化方法及优化装置
CN111831223B (zh) 提高数据去重系统可扩展性的容错编码方法、装置及系统
CN112835738B (zh) 一种条带数据存储结构的构建方法
CN102843212B (zh) 编解码处理方法及装置
CN111045843B (zh) 具有容错能力的分布式数据处理方法
CN114116297B (zh) 一种数据编码方法、装置、设备及介质
CN109344009B (zh) 基于分级检查点的移动云系统容错方法
CN104123347B (zh) 一种应用于boss系统的数据重删方法及系统
WO2018119976A1 (zh) 应用于数据仓库系统的高效优化数据布局方法
US10599520B2 (en) Meta-copysets for fault-tolerant data storage
CN110231999B (zh) 提升基于局部修复编码的存储系统可靠性的方法及装置
CN104268034A (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