CN107665152B - 一类纠删码的译码方法 - Google Patents
一类纠删码的译码方法 Download PDFInfo
- Publication number
- CN107665152B CN107665152B CN201710973448.5A CN201710973448A CN107665152B CN 107665152 B CN107665152 B CN 107665152B CN 201710973448 A CN201710973448 A CN 201710973448A CN 107665152 B CN107665152 B CN 107665152B
- Authority
- CN
- China
- Prior art keywords
- matrix
- code element
- decoding
- dnum
- row
- 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
Links
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/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
本发明属于计算机信息存储技术领域,具体是一种纠删码的译码方法。目前对基于二进制异或运算的纠删码,解码方法几乎都采用了循环迭代法,即不断循环遍历,这造成了解码的算法时间复杂度高,解码的速度低下;并且在没有解码前,难以对是否完全解码成功进行预判。本发明所述的一种纠删码的译码方法与传统循环迭代译码方法相比,解码的时间复杂度降低、速度提高;且适用于任何基于二进制异或运算的纠删码,包括EVENODD码、X码、STAR码、RDP码、斜率码等,应用范围广。
Description
技术领域
本发明属于计算机信息存储技术领域,具体是一种纠删码的译码方法。
背景技术
随着网络和服务器的迅速成长,数据的容量越来越大,数据的重要性和安全性也更加得到重视。为了应对由数据量的快速增长而带来的数据存储可靠性问题,海量存储系统必须能够提供安全的存储服务、以及持续的在线运行和高效、可靠的容错机制;同时也为了提高数据访问的并发效率和降低成本,通常有效的做法是使用多个存储节点共同构建一个存储系统,该存储系统通常是基于网络的分布式存储系统。
针对传统数据冗余保护技术在大容量磁盘存储系统中所表现出的不足,以分布式、大规模、大容量磁盘存储为特点的海量存储系统中出现了一种更加高效的数据冗余技术——纠删码。纠删码起源于通信传输领域,目前逐渐出现在大规模存储系统中,特别是分布式存储环境。纠删码技术基本思想是将一份数据划分为k块原始的数据,基于k块原始数据冗余计算获得m块冗余数据。对于这k+m块数据,其中任意的m块码元出错时,存储系统均可以通过重构算法恢复出原来的k块数据,纠删码冗余保护技术解决了传统冗余保护技术不适于分布式生产存储系统的问题。
纠删码可以用于有大量数据和任何需要容错的应用程序或系统中,比如磁盘阵列系统、数据网格、分布式存储应用程序、对象存储或归档存储。基于纠删码的方法与传统的镜像、副本技术相比,具有冗余度低、磁盘利用率高等优点。目前,纠删码的一个常见的使用案例是基于对象的云存储,其针对云计算、大数据业务对海量存储系统的多样性、大规模存储容量需求,能够较好的适应分布式存储应用环境。
纠删码是一类特殊的编码删码,它是一种前向错误纠正技术,即在译码时码字中错误的位置已知。目前对基于二进制异或运算的纠删码而言,解码方法几乎都采用了循环迭代法,即不断循环遍历。这造成了解码的算法时间复杂度高,解码的速度低下;并且在没有解码前,难以对是否完全解码成功进行预判。
发明内容
本发明的目的是,提供一种降低解码算法时间复杂度、提升解码速度、适用范围广的纠删码译码方法。
为实现上述目的,本发明所述纠删码的译码方法的具体方案如下:
已知某纠删码的校验矩阵H和错误的位置,码字中数据位的个数为dNum,所述方法求得错误码元的值的具体步骤为:
S1、假设矩阵H的尺寸为m×n;构造一个dNum×dNum的单位矩阵,记作I;构造一个(n-dNum)×(n-dNum)的零矩阵,记作O;根据矩阵H、I、O,拼接出一个新的矩阵W,如下所示:
S2、对码字中每一个码元赋予一个从0开始的递增整数编号:0、1、2、...;将所有发生错误码元的编号集合,记作errIDs;按顺序从errIDs中取出一个码元,即错误码元的编号,记作eID;
S3、搜索矩阵W的第eID列中等于1的所有行,记作dqRows,其中,行列编号均从0开始;然后遍历dqRows中的行编号,找出对应矩阵W中行重最小且编号大于等于dNum的编号,记作bRow;
S4、矩阵W中,将bRow对应的行采用异或运算加到dqRows中其他所有编号对应的行,结果模2;
S5、矩阵W中,将bRow对应的行中的所有值置0;
S6、重复步骤S3到S5,直至所有errIDs中的所有对应的编号eID处理完成;
S7、截取已转换后的W矩阵0到dNum-1行,形成一个新的矩阵,记作M;矩阵M的每一列分别对应每一个码元,而M的每一行则分别对应一个数据码元;对于矩阵M的第i行,其中所有数值为1的码元所在的列序号对应的码元异或和即为第i个码元的值。
更进一步的,当存在校验位上的错误时,先用权利要求1中所述步骤求出所有数据码元,再按照已知的原存储阵列的校验码元编码公式推导出校验位上错误码元的值。
本发明的有益效果体现在:(1)在没有进行解码运算前,提供一种判断能否完全解码成功依据;(2)与传统循环迭代译码方法相比,解码的时间复杂度降低、速度提高;(3)本方法适用于任何基于二进制异或运算的纠删码,包括EVENODD码、X码、STAR码、RDP码、斜率码等,适用范围广。
具体实施方式
下面结合实施例,对本发明的实施作进一步的描述。
实施例一
已知一个2×6的数据存储阵列,每一列表示一个存储节点;其中前3列为存储数据码元,后3列存储校验码元,如下所示:
该存储阵列中各个校验码元由如下方式产生,即按照如下设定的该存储阵列的校验码元的编码公式得出,其中的+号代表异或:
则该码字的校验矩阵H可得,如下:
校验矩阵上面的0~11标号表示校验矩阵的这一列所对应的存储阵列中的码元。
存储阵列中第1、2列发生错误后失效,即码元1、2、4、5变成未知。即在本实施例中,已知如上某纠删码的校验矩阵H和错误的位置码元,数据存储阵列中数据位的个数dNum为6,所述方法求得错误码元的值的具体步骤为:
S1、矩阵H的尺寸m×n为6×12;构造一个6×6的单位矩阵,记作I;构造一个(n-dNum)×(n-dNum)的零矩阵,即6×6的零矩阵记作O;根据矩阵H、I、O,拼接出一个新的矩阵W,如下所示:
S2、对码字中每一个码元赋予一个从0开始的递增整数编号:0、1、2、...;将所有发生错误码元的编号位置集合,记作errIDs,即集合1,2,4,5;按顺序从errIDs中取出一个码元,即错误码元的编号,记作eID,分别等于1,2,4,5;
S3、搜索矩阵W的第1列中等于1的所有行,记作dqRows,其中,行列编号均从0开始;然后遍历dqRows中的所有行编号,找出对应矩阵W中行重最小且编号大于等于dNum的编号,记作bRow。第7列与第10列的行重相同的情况下,可任选一列,标记结果如下:
S4、矩阵W中,将bRow对应的行采用异或运算加到dqRows中其他所有编号对应的行,结果模2;
S5、矩阵W中,将bRow对应的行中的所有值置0,得出结果如下;
S6、重复步骤S3到S5,直至所有errIDs中的所有对应的编号eID处理完成;即对于未知码元2、4、5作同样的操作,过程如下:
码元2:
码元4:
码元5:
S7、截取已转换后的W矩阵0到5行,形成一个新的矩阵,记作M,如下:
矩阵M的每一列分别对应每一个码元,而M的每一行则分别对应一个数据码元;对于矩阵M的第i行,其中所有1码元所在的列序号对应的码元异或和即为第i个码元的值;即,根据矩阵M,每一个错误
码元可以按如下公式计算恢复(其中‘+’代表异或):
V(1)=V(0)+V(7)+V(9)
V(1)=V(7)+V(9)
V(2)=V(3)+V(8)
V(4)=V(0)+V(6)
V(5)=V(0)+V(9)
实施例二 当存在校验位上的错误时
仍然使用实施例1中的存储阵列结构和校验码元生成方法,此次假设存储阵列中第2、3列发生错误后失效,即数据码元2、5和校验码元6、7变成未知。则具体步骤如下:
S1如实施例1中,不在赘述:
S2、对码字中每一个码元赋予一个从0开始的递增整数编号:0、1、2、...;将所有发生错误码元的编号集合,记作errIDs,即集合2,5,6,7;按顺序从errIDs中取出一个码元,即错误码元的编号,记作eID,分别等于2,5,6,7;
实施步骤S3到S5,并重复直至所有errIDs中的所有对应的编号eID处理完成;即对于未知码元2、5、6、7作同样的操作,得到如下:码元2:
码元5:
码元6:
码元7:
S7、截取已转换后的W矩阵0到5行,形成一个新的矩阵,记作M,如下:
矩阵M的每一列分别对应每一个码元,而M的每一行则分别对应一个数据码元;对于矩阵M的第i行,其中所有1码元所在的列序号对应的码元异或和即为第i个码元的值;即,根据矩阵M,未知数据码元可以按如下公式计算恢复(其中‘+’代表异或):
V(2)=V(3)+V(8)=1+0=1
V(5)=V(1)=1
此时所有未知数据码元2、5已经求得,再按照已知的原存储阵列的校验码元编码公式即可求得剩余的校验位置码元。
V(6)=V(0)+V(4)=1+0=1
V(7)=V(1)+V(5)=1+0=1
以上结合对本发明进行了示例性描述,显然本发明具体实现并不受上述方式的限制,只要采用了本发明的方法构思和技术方案进行的各种非实质性的改进,或未经改进将本发明的构思和技术方案直接应用于其它场合的,均在本发明的保护范围之内。
Claims (2)
1.一种纠删码的译码方法,已知某纠删码的校验矩阵H和错误的位置,码字中数据位的个数为dNum,所述方法的特征在于:所述方法求得错误码元的值的具体步骤为:
S1、假设矩阵H的尺寸为m×n;构造一个dNum×dNum的单位矩阵,记作I;构造一个(n-dNum)×(n-dNum)的零矩阵,记作O;根据矩阵H、I、O,拼接出一个新的矩阵W,如下所示:
S2、对码字中每一个码元赋予一个从0开始的递增整数编号:0、1、2、...;将所有发生错误码元的编号集合,记作errIDs;按顺序从errIDs中取出一个码元,即错误码元的编号,记作eID;
S3、搜索矩阵W的第eID列中等于1的所有行,记作dqRows,其中,行列编号均从0开始;然后遍历dqRows中的行编号,找出对应矩阵W中行重最小且编号大于等于dNum的编号,记作bRow;
S4、矩阵W中,将bRow对应的行采用异或运算加到dqRows中其他所有编号对应的行,结果模2;
S5、矩阵W中,将bRow对应的行中的所有值置0;
S6、重复步骤S3到S5,直至所有errIDs中的所有对应的编号eID处理完成;
S7、截取已转换后的W矩阵0到dNum-1行,形成一个新的矩阵,记作M;矩阵M的每一列分别对应每一个码元,而M的每一行则分别对应一个数据码元;对于矩阵M的第i行,其中所有码元数值为1的码元所在的列序号对应的码元异或和即为第i个码元的值。
2.根据权利要求1所述的一种纠删码的译码方法,其特征在于:当存在校验位上的错误时,先用权利要求1中所述步骤求出所有数据码元,再按照已知的原存储阵列的校验码元编码公式推导出校验位上错误码元的值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710529817 | 2017-07-02 | ||
CN2017105298171 | 2017-07-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107665152A CN107665152A (zh) | 2018-02-06 |
CN107665152B true CN107665152B (zh) | 2020-10-16 |
Family
ID=61098816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710973448.5A Active CN107665152B (zh) | 2017-07-02 | 2017-10-18 | 一类纠删码的译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107665152B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595988A (zh) * | 2018-04-27 | 2018-09-28 | 成都信息工程大学 | 一种可同时加密并容错的硬盘 |
CN110837436B (zh) * | 2019-11-05 | 2023-10-13 | 成都信息工程大学 | 有限域上纠删码轻量化自动解码方法、智能终端模块 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387975A (zh) * | 2008-10-20 | 2009-03-18 | 中科院成都信息技术有限公司 | 一种磁盘阵列系统 |
CN103309766A (zh) * | 2013-06-20 | 2013-09-18 | 中国科学院微电子研究所 | 基于并行编码译码的循环汉明码的纠错方法 |
CN104850468A (zh) * | 2015-05-31 | 2015-08-19 | 上海交通大学 | 基于校验矩阵的纠删码解码方法 |
CN106484559A (zh) * | 2016-10-17 | 2017-03-08 | 成都信息工程大学 | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 |
-
2017
- 2017-10-18 CN CN201710973448.5A patent/CN107665152B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387975A (zh) * | 2008-10-20 | 2009-03-18 | 中科院成都信息技术有限公司 | 一种磁盘阵列系统 |
CN103309766A (zh) * | 2013-06-20 | 2013-09-18 | 中国科学院微电子研究所 | 基于并行编码译码的循环汉明码的纠错方法 |
CN104850468A (zh) * | 2015-05-31 | 2015-08-19 | 上海交通大学 | 基于校验矩阵的纠删码解码方法 |
CN106484559A (zh) * | 2016-10-17 | 2017-03-08 | 成都信息工程大学 | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 |
Non-Patent Citations (1)
Title |
---|
张建斌、卢丹、陆剑.基于PEG-QC算法的LDPC码校验矩阵的构造.《中北大学学报(自然科学版)》.2012,第33卷(第6期), * |
Also Published As
Publication number | Publication date |
---|---|
CN107665152A (zh) | 2018-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7265688B2 (en) | Systems and processes for decoding a chain reaction code through inactivation | |
US9141679B2 (en) | Cloud data storage using redundant encoding | |
CN111078460B (zh) | 一种快速纠删码计算方法 | |
CN106484559B (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
US10644726B2 (en) | Method and apparatus for reconstructing a data block | |
US10425106B2 (en) | Balanced Reed-Solomon codes | |
Shahabinejad et al. | A class of binary locally repairable codes | |
CN112000512B (zh) | 一种数据修复方法及相关装置 | |
WO2023151290A1 (zh) | 一种数据编码方法、装置、设备及介质 | |
CN111858169A (zh) | 一种数据恢复方法、系统及相关组件 | |
CN107665152B (zh) | 一类纠删码的译码方法 | |
Ivanichkina et al. | Mathematical methods and models of improving data storage reliability including those based on finite field theory | |
CN112181707B (zh) | 分布式存储数据恢复调度方法、系统、设备及存储介质 | |
CN111125014A (zh) | 一种基于u-型设计的柔性部分重复码的构造方法 | |
El Rouayheb et al. | Synchronization and deduplication in coded distributed storage networks | |
WO2017041232A1 (zh) | 一种二进制循环码的编解码框架 | |
CN110287716B (zh) | 数据存储方法及装置 | |
CN112534724A (zh) | 用于解码极化码和乘积码的解码器和方法 | |
CN114244376B (zh) | 一种数据编码方法、系统、设备以及介质 | |
CN114625571A (zh) | 一种用于数据恢复的三冗余mds阵列码编译方法 | |
CN117271199A (zh) | 码生成、编码及解码方法及其装置 | |
CN117591336A (zh) | 基于纠删码的去中心化数据冗余存储方法及系统 | |
CN115686926A (zh) | 硬件实现方法、终端及存储介质 | |
CN115599298A (zh) | 一种编码/解码方法和系统 | |
CN115934413A (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 |