CN113626250A - 一种基于纠删码的条带合并方法及*** - Google Patents
一种基于纠删码的条带合并方法及*** Download PDFInfo
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 23
- 238000007781 pre-processing Methods 0.000 claims description 9
- 230000005012 migration Effects 0.000 claims description 8
- 238000013508 migration Methods 0.000 claims description 8
- 230000001174 ascending effect Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1515—Reed-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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Error Detection And Correction (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)存储在集合中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S30,取出集合中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
具体地,本发明中小条带指的是合并前的纠删码条带。每个纠删码条带包括数据块个数相同,合并后条带的数据块个数为小条带数据块个数的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)存储在集合中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S30,取出集合中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
在一个可选的示例中,所述第一合并单元执行步骤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)存储在集合中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S30,取出集合中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
在一个可选的示例中,所述步骤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)存储在集合中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S30,取出集合中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
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)存储在集合中,其中si和sj表示两个不同的小条带,c表示si和sj的合并开销;所述小条带集合指的是纠删码条带的集合,每个纠删码条带对应一个小条带;
S30,取出集合中的第一个三元组(c*,si*,sj*),将si*和sj*合并,并将集合中所有包含si*和sj*的三元组都删除;其中,si*和sj*表示排序后的两个不同的小条带,c*表示si*和sj*的合并开销;
10.根据权利要求9所述的条带合并***,其特征在于,所述第一合并单元执行步骤S2-步骤S4的过程称为StripeMerge-P算法,具体步骤包括:
确定小条带集合以及校验块全部或部分对齐集合;
将校验块全部或部分对齐集合中的小条带对按照对齐数据块数量从大到小排序,依次寻找合并开销最小或合并开销小于阈值的小条带对,将其进行合并;
对剩余的小条带使用所述StripeMerge-G算法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110774701.0A CN113626250B (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 CN113626250B (zh) | 2021-07-08 | 2021-07-08 | 一种基于纠删码的条带合并方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113626250A true CN113626250A (zh) | 2021-11-09 |
CN113626250B CN113626250B (zh) | 2024-06-28 |
Family
ID=78379585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110774701.0A Active CN113626250B (zh) | 2021-07-08 | 2021-07-08 | 一种基于纠删码的条带合并方法及*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US11467905B1 (zh) |
CN (1) | CN113626250B (zh) |
Cited By (2)
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) | 数据处理方法、装置、***、设备及介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112835738B (zh) * | 2021-02-20 | 2022-05-20 | 华中科技大学 | 一种条带数据存储结构的构建方法 |
Citations (4)
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)
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 | 한국과학기술원 | 디스크 배열을 위한 캐시베리어 명령 처리 방법 및 이를 위한 장치 |
-
2021
- 2021-07-08 CN CN202110774701.0A patent/CN113626250B/zh active Active
- 2021-09-16 US US17/477,476 patent/US11467905B1/en active Active
Patent Citations (4)
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)
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)
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 |
---|---|
CN113626250B (zh) | 2024-06-28 |
US11467905B1 (en) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113626250B (zh) | 一种基于纠删码的条带合并方法及*** | |
US10031806B2 (en) | Efficient repair of erasure coded data based on coefficient matrix decomposition | |
CN107656832B (zh) | 一种低数据重建开销的纠删码方法 | |
CN107086870B (zh) | 修复多节点失效的mds阵列码编码以及解码方法 | |
US9983941B2 (en) | Method and apparatus for recovering data | |
US9141679B2 (en) | Cloud data storage using redundant encoding | |
CN111697976B (zh) | 一种基于分布式存储的rs纠删快速解码方法及*** | |
CN110190926B (zh) | 基于网络计算的纠删码更新方法及*** | |
CN114153651B (zh) | 一种数据编码方法、装置、设备及介质 | |
US10922201B2 (en) | Method and device of data rebuilding in storage system | |
CN112835738B (zh) | 一种条带数据存储结构的构建方法 | |
CN105159618A (zh) | 用于单盘失效修复的优化方法及优化装置 | |
US20160285476A1 (en) | Method for encoding and decoding of data based on binary reed-solomon codes | |
US20210216225A1 (en) | Method, device and computer program product for storage | |
CN102843212B (zh) | 编解码处理方法及装置 | |
CN111045843B (zh) | 具有容错能力的分布式数据处理方法 | |
CN104123347B (zh) | 一种应用于boss***的数据重删方法及*** | |
CN110268397B (zh) | 应用于数据仓库***的高效优化数据布局方法 | |
US10599520B2 (en) | Meta-copysets for fault-tolerant data storage | |
CN115454343A (zh) | 一种基于raid芯片的数据处理方法、装置及介质 | |
CN104268034A (zh) | 一种数据备份方法及装置和数据恢复方法及装置 | |
CN110908835A (zh) | 一种分布式***中支持私有标签的数据冗余方法及*** | |
CN115599315B (zh) | 数据处理方法、装置、***、设备及介质 | |
CN117420969B (zh) | 一种分布式数据存储方法、装置、设备及存储介质 | |
KR101482011B1 (ko) | 염기 서열 정렬 시스템 및 방법 |
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 |