CN111240597B - 存储数据的方法、装置、设备和计算机可读存储介质 - Google Patents

存储数据的方法、装置、设备和计算机可读存储介质 Download PDF

Info

Publication number
CN111240597B
CN111240597B CN202010041997.0A CN202010041997A CN111240597B CN 111240597 B CN111240597 B CN 111240597B CN 202010041997 A CN202010041997 A CN 202010041997A CN 111240597 B CN111240597 B CN 111240597B
Authority
CN
China
Prior art keywords
data
check
fragments
row
column
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
CN202010041997.0A
Other languages
English (en)
Other versions
CN111240597A (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.)
Scholar Star Beijing Technology Co ltd
Original Assignee
Scholar Star Beijing Technology 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 Scholar Star Beijing Technology Co ltd filed Critical Scholar Star Beijing Technology Co ltd
Priority to CN202010041997.0A priority Critical patent/CN111240597B/zh
Publication of CN111240597A publication Critical patent/CN111240597A/zh
Priority to US17/145,547 priority patent/US20210218419A1/en
Priority to EP21151347.8A priority patent/EP3852275A1/en
Application granted granted Critical
Publication of CN111240597B publication Critical patent/CN111240597B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/062Securing storage systems
    • 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
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

本申请提供一种存储数据的方法、装置、设备和计算机可读存储介质,方法包括:将数据划分为X个数据分片,X个数据分片构成包括m行和n列的阵列,每行包括至少一个并且至多n个数据分片,每列包括至少一个并且至多m个数据分片,其中X、m、n均为大于或等于2的正整数;用纠错码的编码算法对每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n;存储X个数据分片、M个行校验分片和N个列校验分片。根据本申请的方案,数据存储更加安全,存储效率得到提高。

Description

存储数据的方法、装置、设备和计算机可读存储介质
技术领域
本发明涉及信息技术领域,特别涉及一种存储数据的方法、装置、设备和计算机可读存储介质。
背景技术
在数据存储使用的纠错编码算法一般都沿用通信领域的纠错编码算法,只关注了编码的容错纠错能力,但并没有很好地满足数据重建时的性能需求,在数据重建时一般都需要读取所有未损坏的数据分片和足够多的校验分片来恢复损坏的数据分片,导致数据重建的性能比较低下,重建时对网络带宽的损耗也比较大。
发明内容
有鉴于此,本发明实施例致力于提供一种存储数据的方法、装置、设备和计算机可读存储介质,能够在绝大部分情况下可以只读取极少数量的数据分片就可以恢复损坏的数据分片。
本发明一方面提供一种存储数据的方法,包括:将数据划分为X个数据分片,X个数据分片构成包括m行和n列的阵列,每行包括至少一个并且至多n个数据分片,每列包括至少一个并且至多m个数据分片,其中X、m、n均为大于或等于2的正整数;用纠错码的编码算法对每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n;存储X个数据分片、M个行校验分片和N个列校验分片。
在本申请的一个特别实施例中,所述方法还包括:当X个数据分片中有至少一个数据分片的数据损坏时,通过读取损坏数据分片所在行中的未损坏数据分片和行校验分片并采用该行的纠错码的译码算法来恢复损坏数据分片;或者,通过读取损坏数据分片所在列中的未损坏数据分片和列校验分片并采用该列的纠错码的译码算法来恢复损坏数据分片。
在本申请的一个特别实施例中,所述存储X个数据分片、M个行校验分片和N个列校验分片,包括:将X个数据分片、M个行校验分片和N个列校验分片分别存储在不同的网络节点中。
在本申请的一个特别实施例中,纠错码包括戈雷Golay码、里德-所罗门RS码、里德-穆勒RM码、博斯-乔赫里-霍克文黑姆BCH码、低密度奇偶校验LDPC码、卷积码、和涡轮Turbo码中的至少一种。
在本申请的一个特别实施例中,里德-所罗门RS码在有限域GF(256)中生成。
在本申请的一个特别实施例中,所述方法还包括:对X个数据分片中每个数据分片求哈希值;存储哈希值。
在本申请的一个特别实施例中,所述方法还包括:用纠错码的编码算法对X个数据分片进行编码得到x个全局校验分片;存储x个全局校验分片。
在本申请的一个特别实施例中,所述方法还包括:用纠错码的编码算法对x个全局校验分片进行编码得到全局校验码的至少一个局部校验分片;存储至少一个局部校验分片。
在本申请的一个特别实施例中,所述方法还包括:对M个行校验分片和/或对N个列校验分片进行计算得到y个全局校验分片。
在本申请的一个特别实施例中,用纠错码的编码算法对每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n,包括:纠错码的编码算法是基于编码矩阵计算编码结果,分别采用至少一个全局校验码的编码矩阵的不同片段来计算行校验分片和列校验分片。编码时使用的片段合计覆盖一个完整的编码矩阵的多个行/列校验码,经过计算后就可以得到所述编码矩阵对应的全局校验码。例如,编码算法是一个有限域上的多项式,每一个全局校验码都是用一个mxn的编码矩阵计算出来的,用一个全局校验码的编码矩阵的每一行构成一个1xn的编码矩阵来计算行校验编码,则将这些行校验编码用有限域加法即可计算出该全局校验码。同理,用另一个编码矩阵来每一列构成一个mx1的编码矩阵来计算列校验编码,将这些列校验编码用有限域加法即可计算出另一个全局校验码。
在本申请的一个特别实施例中,所述方法还包括:当X个数据分片中有至少一个数据分片的数据损坏时,通过读取未损坏的数据分片和至少一个全局校验分片并采用计算全局校验分片时所采用的纠错码的译码算法来恢复损坏的至少一个数据分片。
在另一方面,本申请提供一种存储数据的装置,包括:划分模块,用于将数据划分为X个数据分片,X个数据分片构成包括m行和n列的阵列,每行包括至少一个并且至多n个数据分片,每列包括至少一个并且至多m个数据分片,其中X、m、n均为大于或等于2的正整数;编码模块,用于用纠错码的编码算法对每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n;存储模块,用于存储X个数据分片、M个行校验分片和N个列校验分片。
在另一方面,本申请提供一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行上述存储数据的方法。
在另一方面,本申请提供一种数据存储设备,数据存储设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于执行上述存储数据的方法。
根据本申请的数据存储方法通过生成行和列两个维度上的校验分片,可以对数据分片进行多个维度上的读取和恢复,既提高了可以恢复的数据分片的数量,又降低了需要读取的数据分片的数量,从而提高了存储效率。
附图说明
图1所示为根据本申请一实施例的存储数据的方法的流程图;
图2所示为根据本申请一实施例的数据分片阵列;
图3所示为根据本申请一实施例的全局校验分片;
图4所示为根据本申请一实施例的存储数据的装置的示意性结构框图;
图5所示为根据本申请一实施例的数据存储装置的示意性结构框图。
具体实施方式
为了使本领域技术人员更加清楚地理解本发明的概念和思想,以下结合具体实施例详细描述本发明。应理解,本文给出的实施例都只是本发明可能具有的所有实施例的一部分。本领域技术人员在阅读本申请的说明书以后,有能力对下述实施例的部分或整体作出改进、改造、或替换,这些改进、改造、或替换也都包含在本发明要求保护的范围内。
在本文中,术语“第一”、“第二”和其它类似词语并不意在暗示任何顺序、数量和重要性,而是仅仅用于对不同的元件进行区分。在本文中,术语“一”、“一个”和其它类似词语并不意在表示只存在一个所述事物,而是表示有关描述仅仅针对所述事物中的一个,所述事物可能具有一个或多个。在本文中,术语“包含”、“包括”和其它类似词语意在表示逻辑上的相互关系,而不能视作表示空间结构上的关系。例如,“A包括B”意在表示在逻辑上B属于A,而不表示在空间上B位于A的内部。另外,术语“包含”、“包括”和其它类似词语的含义应视为开放性的,而非封闭性的。例如,“A包括B”意在表示B属于A,但是B不一定构成A的全部,A还可能包括C、D、E等其它元素。
在本文中,术语“实施例”、“本实施例”、“一实施例”、“一个实施例”并不表示有关描述仅仅适用于一个特定的实施例,而是表示这些描述还可能适用于另外一个或多个实施例中。本领域技术人员应理解,在本文中,任何针对某一个实施例所做的描述都可以与另外一个或多个实施例中的有关描述进行替代、组合、或者以其它方式结合,所述替代、组合、或者以其它方式结合所产生的新实施例是本领域技术人员能够容易想到的,属于本发明的保护范围。
在本申请的一些实施例中,数据可以是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合,例如数字、文字、字母、图形、图像、视频、音频等。在本申请的一些实施例中,存储数据可以是指,将数据存储在一定的介质中,能够在以后任意时间内对数据进行读取。
图1示出根据本申请一实施例的数据存储方法的流程图。图1的数据存储方法可以由计算设备(例如服务器)执行。
如图1所示,根据本实施例的存储数据的方法包括:
S110,将数据划分为X个数据分片,X个数据分片构成包括m行和n列的阵列,每行包括至少一个并且至多n个数据分片,每列包括至少一个并且至多m个数据分片,其中X、m、n均为大于或等于2的正整数;
S120,用纠错码的编码算法对每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n;
S130,存储X个数据分片、M个行校验分片和N个列校验分片。
根据本实施例的数据存储方法通过生成行和列两个维度上的校验分片,可以对数据分片进行多个维度上的读取和恢复,既提高了可以恢复的数据分片的数量,又降低了需要读取的数据分片的数量,从而提高了存储效率。
在本实施例中,数据分片可以是指具有一定数据量的部分数据,所有数据分片组合起来能够构成原始数据。不同数据分片的数据量可以相同,也可以不同。阵列可以是指按一定规律排列的多个元素所构成的整体。阵列元素的排列规律可以是沿某个方向对齐,例如沿行和列对齐,或者沿更多个方向对齐。阵列可以是二维的,也可以是三维的,还可以是更多维的。
纠错码原本用于通信领域,指在传输过程中发生错误后能在收端自行发现或纠正的码,又称信道编码。用于储存时,纠错码是指能够发现存储数据存在错误或损坏,并能够对错误进行纠正的码。纠错码的编码算法可以是指,为使纠错码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别,即把原码字按某种规则变成有一定冗余度的码字,并使每个码字的码之间有一定的关系,关系的建立称为编码,编码的计算方法称为编码算法。在本实施例中,各行或各列所采用的纠错码的编码算法可以不同。
校验分片可以是指能够判断数据分片是否出错并且能够对其进行纠错的分片,包括全局校验分片和局部校验分片。全局校验分片可以是指能够对原始数据所划分成的所有数据分片进行校验和纠错的分片,利用一个全局校验分片能够发现所有数据分片中任何一个数据分片存在错误,并且能够对其进行纠错。局部校验分片可以是指仅能够对所有数据分片中的一部分进行校验和纠错的分片,包括行校验分片和列校验分片。其中,行校验分片可以是指用于校验其所在的行中的数据分片的校验分片,列校验分片可以是指用于校验其所在的列中的数据分片的校验分片。
在本实施例中,用纠错码的编码算法对数据分片进行编码得到校验分片,可以是指,对数据分片中的数据,按照纠错码的编码算法进行数学计算,得到的计算结果就是构成校验分片的数据。在本实施例中,存储X个数据分片、M个行校验分片和N个列校验分片,可以是指,将这些分片存储在一个或多个网络节点中,可以各自存储在不同的节点中,也可以其中部分存储在相同的节点中。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,当X个数据分片中有至少一个数据分片的数据损坏时,通过读取损坏数据分片所在行中的未损坏数据分片和行校验分片并采用该行的纠错码的译码算法来恢复损坏数据分片;或者,通过读取损坏数据分片所在列中的未损坏数据分片和列校验分片并采用该列的纠错码的译码算法来恢复损坏数据分片。
根据本实施例,通过读取行或列的数据分片和校验分片来恢复损坏分片,可以从不同维度来恢复分片,从而增大可恢复分片的数量,并且可以减少读取分片的数量,降低计算成本。
在本实施例中,纠错码的译码算法可以是指,对数据分片进行校验时,根据编码规则是否满足以判定数据分片的数据有无错误。当不能满足时,按一定规则确定错误所在位置并予以纠正。纠错并恢复原数据的过程称为译码。译码的计算方法称为译码算法。
在本实施例中,通过读取损坏数据分片所在行中的未损坏数据分片和行校验分片并采用该行的纠错码的译码算法来恢复所述损坏数据分片,可以是指,根据纠错码的译码算法,针对该行未损坏的数据分片和行校验分片中的数据进行数学计算,得到的计算结果即包含损坏的数据分片中的原始数据。在本实施例中,通过读取损坏数据分片所在列中的未损坏数据分片和列校验分片并采用该列的纠错码的译码算法来恢复所述损坏数据分片,可以是指,根据纠错码的译码算法,针对该列未损坏的数据分片和列校验分片中的数据进行数学计算,得到的计算结果即包含损坏的数据分片中的原始数据。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,存储X个数据分片、M个行校验分片和N个列校验分片,包括:
将X个数据分片、M个行校验分片和N个列校验分片分别存储在不同的网络节点中。
根据本实施例,将数据分片和校验分片等多个分片存储在不同的网络节点中,有利于提高数据的安全性,使得数据发生大面积损坏的概率降低。
在本实施例中,网络节点可以是指构成存储网络的节点,节点之间可以相互通信,例如相互连接的服务器。在本实施例中,将X个数据分片、M个行校验分片和N个列校验分片分别存储在不同的网络节点中,可以是指,将这些分片存储在X+M+N个不同的网络节点中,每个网络节点存储其中一个分片;也可以是指,将这些分片存储在2至X+M+N个不同的网络节点中,其中至少一个网络节点存储两个或更多个分片。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,纠错码包括Golay(戈雷)码、RS(里德-所罗门)码、RM(里德-穆勒)码、BCH(博斯-乔赫里-霍克文黑姆)码、LDPC(低密度奇偶校验)码、卷积码、和Turbo(涡轮)码中的至少一种。
根据本实施例,这些不同的纠错码被证明能够有效恢复损坏数据,实现存储数据安全性的提高。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,RS码在有限域GF(256)中生成。
根据本实施例的存储方法,使得编码和译码计算方式可以按字节计算而不是按位计算。
在本实施例中,RS码是BCH码的一种。BCH码的定义可以是:给定任意一个有限域GF(q)及其扩展域GF(qm),其中q是素数或素数的幂,m为正整数。对于任意一个码元取自扩展域GF(qm)的循环码(n,k),其中n=2m-1,其生成多项式g(x)具有2t个连续的根{a1,a2,a3,...,a2t-1,a2t},则由生成多项式g(x)编码产生的循环码称为q进制的BCH码,记为(n,k,t)。RS码可以是指,对于任意选取的正整数s,可构造一个相应的码长为n=q-1的q进制BCH码,其中码元符号取自有限域GF(q),其中q为某一素数的幂。当s=1,q>2时所建立的码长为n=q-1的q进制BCH码便称为里德-所罗门码,简称为RS码。
在本实施例中,域是一个可以在其上进行加法、减法、乘法和除法运算而结果不会超出域的集合,如果域只包含有限个元素,则称其为有限域,又称伽罗瓦域(GaloisField)。GF(256)可以是指含有256个元素的有限域。在本实施例中,在GF(256)中生成RS码,可以是指码元取自GF(256)中的RS码。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,所述方法还包括:
对X个数据分片中每个数据分片求哈希值;
存储哈希值。
根据本实施例,针对每个数据分片求哈希值,可以通过核对哈希值是否前后一致来发现是否存在数据损坏,并且定位发生损坏的数据分片。
在本实施例中,哈希值可以是指通过哈希函数(即Hash,又称数字摘要,例如MD5、SHA1、SHA256、SHA3)确定的数值。在本实施例中,对数据分片求哈希值,可以是指,将数据分片中的所有数据代入哈希函数中,得到的计算结果即为哈希值。在本实施例中,存储哈希值,可以是指,可以将得到的哈希值存储在一个或多个的网络节点中,这些网络节点可以与存储数据分片和校验分片的网络节点相同或不同,还可以存储哈希值的至少一个备份。
在每次读取数据分片时,都重新计算读取的数据分片的哈希值,与存储的哈希值相对比,如果对比后不相等,就代表所存储的数据分片或者哈希值出现了错误(例如静默错误,硬盘存储过程中某些位出现了翻转)。用这个方法可以非常确定地发现数据错误,而不需要像传统译码那样即使检错成功也要猜测是哪部分数据出现了错误(通常是寻找编码空间中离得最近的有效编码,但可靠性远远不如用Hash值来确定)。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,所述方法还包括:
用纠错码的编码算法对X个数据分片进行编码得到x个全局校验分片;
存储x个全局校验分片。
根据本实施例,通过全局校验分片可以在有行校验分片和列校验分片无法恢复的数量的数据分片损坏时,与行/列校验分片共同参与恢复数据分片,从而提高数据存储的容灾性。
在本实施例中,用纠错码的编码算法对X个数据分片进行编码得到x个全局校验分片,可以是指,按照纠错码的编码算法,针对所有X个数据分片中的数据进行数学计算,得到的计算结果就是构成一个全局校验分片的数据。在本实施例中,存储x个全局校验分片,可以是指,所有全局校验分片可以存储在一个或多个网络节点中,所述网络节点可以与存储数据分片和局部校验分片的网络节点相同或不同。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,所述方法还包括:
用纠错码的编码算法对x个全局校验分片进行编码得到全局校验分片的至少一个局部校验分片;
存储至少一个局部校验分片。
根据本实施例,可以实现对全局校验分片的校验和纠错。当全局校验分片存在错误和损坏时,可以通过全局校验分片的局部校验分片来发现存在错误的全局校验分片,并对其错误进行纠正。
在本实施例中,用纠错码的编码算法对所述x个全局校验分片进行编码得到至少一个局部校验分片,可以是指,按照纠错码的编码算法,针对所有x个全局校验分片的数据进行数学计算,计算结果构成一个局部校验分片的数据。在本实施例中,存储所述至少一个局部校验分片,可以是指,将得到的至少一个局部校验分片存储在一个或多个网络节点中,可以与上文提到的各种分片存储在相同或不同的网络节点中。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,所述方法还包括:
对M个行校验分片和/或对N个列校验分片进行计算得到y个全局校验分片。
根据本实施例,增加全局校验分片的数量,可以提高数据存储系统的安全性,能够容忍更多个数据分片发生损坏。通过行/列校验分片计算出的全局校验分片可以临时获取,不需要事先存储,从而降低了对设备存储资源的要求。
在本实施例中,对M个行校验分片进行计算得到全局校验分片,可以是指,按照特定的计算方法,将全部或部分行校验分片的数据进行数学计算,得到一个全局校验分片。在本实施例中,对N个列校验分片进行计算得到全局校验分片,可以是指,按照特定的计算方法,将全部或部分列校验分片的数据进行数学计算,得到一个全局校验分片。也可以用部分行校验分片和部分列校验分片进行计算得到一个全局校验分片。用不同的行校验分片/列校验分片进行计算可以得到不同的全局校验分片。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,图1实施例的S120具体包括:
纠错码的编码算法是基于编码矩阵计算编码结果,分别采用至少一个全局校验码的编码矩阵的不同片段来计算行校验分片和列校验分片。
根据本实施例,采用不同编码矩阵分别得到行校验分片和列校验分片,可以保证分别根据行校验分片和列校验分片计算得到的两个全局校验分片互不相同,从而可以起到恢复两个损坏数据分片的作用。
例如,编码矩阵可以是指取自有限域中的码元通过生成多项式生成的矩阵,称为编码矩阵。编码矩阵中的片段可以是指编码矩阵的部分元素构成的片段,例如一行或一列构成的片段。
在本实施例中,纠错码的编码算法是基于编码矩阵计算编码结果,可以是指,纠错码的编码算法包括首先生成编码矩阵,再根据编码矩阵计算编码结果。在本实施例中,采用编码矩阵中的片段计算校验分片,可以是指,编码矩阵中的部分码元(例如一行)与一行数据分片的数据进行数学计算,从而得到一个行校验分片。
以下描述根据本发明的另一实施例,本实施例是图1实施例的一个具体示例,可以包括上述所有实施例中的一个或多个实施例中的一个或多个特征。
在本实施例中,所述方法还包括:
当X个数据分片中有至少一个数据分片的数据损坏时,通过读取未损坏的数据分片和至少一个全局校验分片(其中每个全局校验分片可以是事先存储的全局校验分片,也可以是根据局部校验分片计算出来的全局校验分片)并采用计算全局校验分片时所采用的纠错码的译码算法来恢复损坏的至少一个数据分片。
根据本实施例,采用全局校验分片可以针对数据分片中的任意一个进行恢复,从而对行/列校验分片和其它局部校验分片进行补充,提高数据存储的可靠性。
在本实施例中,通过读取未损坏的数据分片和至少一个所述全局校验分片并采用计算所述全局校验分片时所采用的纠错码的译码算法来恢复损坏的所述至少一个数据分片,可以是指,根据全局校验分片编码时所采用的纠错码的译码算法,针对未损坏的数据分片和全局校验分片中的数据进行数学计算,得到的计算结果即包含损坏的数据分片中的原始数据。
以下参照图2和图3详细描述根据本申请一实施例的存储数据的方法的整个过程。
参见图2,数据被划分为128个数据分片,即A(1)至A(128),排列在8×16的矩阵中。针对每行生成一个行校验分片,即R(1)至R(16),一共有16个行校验分片。针对每列生成一个列校验分片,即C(1)至C(8),一共有8个列校验分片。具体计算过程可以是:
设有限域为GF(256),记W(n)为第n个编码矩阵,每个编码矩阵有128个元素,W(n,m)表示W(n)的第m个元素。行校验分片的计算公式为:
列校验分片的计算公式为:
参见图3,利用数据分片A(1)至A(128)计算得到10个全局校验分片P(1)至P(10),其中P(11)为用于恢复全局校验分片的局部校验分片。
其中,全局校验分片的计算公式为:
其中,T表示转置,而
再次参见图2,当一个数据分片损坏,例如A(1)损坏时,可以读取A(2)至A(8)这7个同行的数据分片和行校验分片R(1)来恢复A(1)。
当A(1)和A(2)损坏时,可以读取A(1)所在的列中的所有未损坏的数据分片和列校验分片C(1)来首先恢复A(1),再读取A(3)至A(8)这同行中的未损坏分片和行校验分片R(1)来恢复A(2)。
当A(1)、A(2)、A(9)损坏时,可以首先读取A(9)所在的行中的未损坏分片(即A(10)至A(16))行校验分片R(2)来恢复A(9),再通过读取A(1)所在列中的未损坏分片和列校验分片来恢复A(1),再通过读取A(2)所在行中的未损坏分片和行校验分片来恢复A(2)。
当A(1)、A(2)、A(9)、A(10)损坏时,此时需要读取全局校验分片。例如,可以读取所有未损坏的124个数据分片和4个全局校验分片P(1)至P(4),来恢复所有损坏的数据分片。利用全局校验分片恢复数据时,需要保证全局校验分片与未损坏数据分片的数量之和不少于最初的数据分片的数量。
图4示出根据本申请一实施例的存储数据的装置的示意性结构框图。
根据本实施例,存储数据的装置400包括:
划分模块410,用于将数据划分为X个数据分片,X个数据分片构成包括m行和n列的阵列,每行包括至少一个并且至多n个数据分片,每列包括至少一个并且至多m个数据分片,其中X、m、n均为大于或等于2的正整数;
编码模块420,用于用纠错码的编码算法对每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n;
存储模块430,用于存储X个数据分片、M个行校验分片和N个列校验分片。
在一实施例中,存储数据的装置400还包括:
第一恢复模块,用于当所述X个数据分片中有至少一个数据分片的数据损坏时,通过读取损坏数据分片所在行中的未损坏数据分片和行校验分片并采用该行的纠错码的译码算法来恢复所述损坏数据分片;或者,通过读取损坏数据分片所在列中的未损坏数据分片和列校验分片并采用该列的纠错码的译码算法来恢复所述损坏数据分片。
在一实施例中,存储模块430被配置成:
将X个数据分片、M个行校验分片和N个列校验分片分别存储在不同的网络节点中。
在一实施例中,存储数据的装置400还包括:
哈希值计算模块,用于对所述X个数据分片中每个数据分片求哈希值;
哈希值存储模块,用于存储所述哈希值。
在一实施例中,存储数据的装置400还包括:
第一全局校验分片计算模块,用于用纠错码的编码算法对X个数据分片进行编码得到x个全局校验分片;
全局校验分片存储模块,用于存储x个全局校验分片。
在一实施例中,存储数据的装置400还包括:
局部校验分片计算模块,用于用纠错码的编码算法对所述x个全局校验分片进行编码得到全局校验分片的至少一个局部校验分片;
局部校验分片存储模块,用于存储所述至少一个局部校验分片。
在一实施例中,存储数据的装置400还包括:
第二全局检验分片计算模块,用于对所述M个行校验分片和/或对所述N个列校验分片进行计算得到y个全局校验分片。
在一实施例中,编码模块420被配置成:
所述纠错码的编码算法是基于编码矩阵计算编码结果,分别采用至少一个全局校验码的编码矩阵的不同片段来计算行校验分片和列校验分片。
在一实施例中,存储数据的装置400还包括:
第二恢复模块,用于当所述X个数据分片中有至少一个数据分片的数据损坏时,通过读取未损坏的数据分片和至少一个所述全局校验分片并采用计算所述全局校验分片时所采用的纠错码的译码算法来恢复损坏的所述至少一个数据分片。
图5示出根据本申请一实施例的数据存储设备的框图。下面,参考图5来描述根据本申请实施例的数据存储设备。
如图5所示,数据存储设备500包括一个或多个处理器510和存储器520。
处理器510可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制数据存储设备500中的其他组件以执行期望的功能。
存储器520可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器510可以运行所述程序指令,以实现上文所述的本申请的各个实施例的数据存储方法以及/或者其他期望的功能。
在一个示例中,数据存储设备500还可以包括:输入装置530和输出装置540,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,该输入装置530可以是麦克风或麦克风阵列,用于捕捉语音输入信号;可以是通信网络连接器,用于从云端或其它设备接收所采集的输入信号;还可以包括例如键盘、鼠标等等。
该输出装置540可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备540可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图5中仅示出了该数据存储设备500中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,数据存储设备500还可以包括任何其他适当的组件。
除了上述方法和设备以外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的泊车方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施方式(包括实施例和实例)详细描述了本发明的概念、原理和思想。本领域技术人员应理解,本发明的实施方式不止上文给出的这几种形式,本领域技术人员在阅读本申请文件以后,可以对上述实施方式中的步骤、方法、装置、部件做出任何可能的改进、替换和等同形式,这些改进、替换和等同形式应视为落入在本发明的范围内。本发明的保护范围仅以权利要求书为准。

Claims (13)

1.一种存储数据的方法,包括:
将所述数据划分为X个数据分片,所述X个数据分片构成包括m行和n列的阵列,每行包括1至n个数据分片,每列包括1至m个数据分片,其中X、m、n均为大于或等于2的正整数,所述数据分片指具有一定数据量的部分数据,所有数据分片组合起来能够构成原始数据;
用纠错码的编码算法对所述每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对所述每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n;
存储所述X个数据分片、所述M个行校验分片和所述N个列校验分片,以将所述X个数据分片、所述M个行校验分片和所述N个列校验分片分别存储在不同的网络节点中;
用纠错码的编码算法对所述X个数据分片进行编码得到x个全局校验分片,其中,对所述M个行校验分片进行计算得到x1个全局校验分片,和/或对所述N个列校验分片进行计算得到x2个全局校验分片;
所述x个全局校验分片用于:当所述X个数据分片中有至少一个数据分片的数据损坏时,通过读取未损坏的数据分片和至少一个所述全局校验分片并采用计算所述全局校验分片时所采用的纠错码的译码算法来恢复损坏的所述至少一个数据分片,其中,全局校验分片与未损坏的数据分片的数量之和不少于最初的数据分片的数量。
2.根据权利要求1所述的方法,还包括:
当所述X个数据分片中有至少一个数据分片的数据损坏时,通过读取损坏数据分片所在行中的未损坏数据分片和行校验分片并采用该行的纠错码的译码算法来恢复所述损坏数据分片;或者,
通过读取损坏数据分片所在列中的未损坏数据分片和列校验分片并采用该列的纠错码的译码算法来恢复所述损坏数据分片。
3.根据权利要求1所述的方法,其中,所述纠错码包括戈雷Golay码、里德-所罗门RS码、里德-穆勒RM码、博斯-乔赫里-霍克文黑姆BCH码、低密度奇偶校验LDPC码、卷积码、和涡轮Turbo码中的至少一种。
4.根据权利要求3所述的方法,其中,所述里德-所罗门RS码在有限域GF(256)中生成。
5.根据权利要求1至4中任一项所述的方法,其中,所述用纠错码的编码算法对所述每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对所述每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n,包括:
通过纠错码编码算法对所述X个数据分片中每个数据分片进行编码,共得到Z个局部校验位,其中Z≥X。
6.根据权利要求1至4中任一项所述的方法,还包括:
对所述X个数据分片中每个数据分片求哈希值;
存储所述哈希值。
7.根据权利要求1至4中任一项所述的方法,其中,所述用纠错码的编码算法对所述每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对所述每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n,包括:
通过纠错码的编码算法得到第一编码矩阵;
分别采用所述第一编码矩阵中的不同片段来得到所述M个行校验分片,使得所述M个行校验分片所采用的所有片段构成所述第一编码矩阵。
8.根据权利要求1至4中任一项所述的方法,其中,所述用纠错码的编码算法对所述每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对所述每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n,包括:
通过纠错码的编码算法得到第二和第三编码矩阵,其中所述第二编码矩阵与所述第三编码矩阵不相同;
采用所述第二编码矩阵得到所述M个行校验分片,并采用所述第三编码矩阵得到所述N个列校验分片。
9.根据权利要求1所述的方法,还包括:
存储所述x个全局校验分片。
10.根据权利要求9所述的方法,还包括:
用纠错码的编码算法对所述x个全局校验分片进行编码得到至少一个局部校验分片;
存储所述至少一个局部校验分片。
11.一种存储数据的装置,包括:
划分模块,用于将所述数据划分为X个数据分片,所述X个数据分片构成包括m行和n列的阵列,每行包括1至n个数据分片,每列包括1至m个数据分片,其中X、m、n均为大于或等于2的正整数,所述数据分片指具有一定数据量的部分数据,所有数据分片组合起来能够构成原始数据;
编码模块,用于用纠错码的编码算法对所述每行中至少一个数据分片进行编码得到至少一个行校验分片,共得到M个行校验分片,并用纠错码的编码算法对所述每列中至少一个数据分片进行编码得到至少一个列校验分片,共得到N个列校验分片,其中M≥m,N≥n;
存储模块,用于存储所述X个数据分片、所述M个行校验分片和所述N个列校验分片,以将所述X个数据分片、所述M个行校验分片和所述N个列校验分片分别存储在不同的网络节点中;
第一全局校验分片计算模块,用于用纠错码的编码算法对X个数据分片进行编码得到x个全局校验分片,其中,对所述M个行校验分片进行计算得到x1个全局校验分片,和/或对所述N个列校验分片进行计算得到x2个全局校验分片;
第二恢复模块,用于当所述X个数据分片中有至少一个数据分片的数据损坏时,通过读取未损坏的数据分片和至少一个所述全局校验分片并采用计算所述全局校验分片时所采用的纠错码的译码算法来恢复损坏的所述至少一个数据分片。
12.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1至10中任一项所述的存储数据的方法。
13.一种数据存储设备,其特征在于,所述数据存储设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于执行上述权利要求1至10中任一项所述的存储数据的方法。
CN202010041997.0A 2020-01-15 2020-01-15 存储数据的方法、装置、设备和计算机可读存储介质 Active CN111240597B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010041997.0A CN111240597B (zh) 2020-01-15 2020-01-15 存储数据的方法、装置、设备和计算机可读存储介质
US17/145,547 US20210218419A1 (en) 2020-01-15 2021-01-11 Method, device and apparatus for storing data, computer readable storage medium
EP21151347.8A EP3852275A1 (en) 2020-01-15 2021-01-13 Method, device and apparatus for storing data, computer readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010041997.0A CN111240597B (zh) 2020-01-15 2020-01-15 存储数据的方法、装置、设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111240597A CN111240597A (zh) 2020-06-05
CN111240597B true CN111240597B (zh) 2024-05-17

Family

ID=70874549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010041997.0A Active CN111240597B (zh) 2020-01-15 2020-01-15 存储数据的方法、装置、设备和计算机可读存储介质

Country Status (3)

Country Link
US (1) US20210218419A1 (zh)
EP (1) EP3852275A1 (zh)
CN (1) CN111240597B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259689A (zh) * 2021-05-10 2021-08-13 杭州叙简科技股份有限公司 一种分布式视频存储方法、装置及电子设备
CN115543181A (zh) * 2021-06-30 2022-12-30 中兴通讯股份有限公司 访问存储器中数据的方法、电子设备及存储介质
CN114442950B (zh) * 2022-01-21 2024-01-23 山东云海国创云计算装备产业创新中心有限公司 一种数据恢复方法、系统、装置及计算机可读存储介质
CN116820829A (zh) * 2022-03-21 2023-09-29 华为技术有限公司 一种数据纠错方法及装置
CN115454712B (zh) * 2022-11-11 2023-02-28 苏州浪潮智能科技有限公司 一种校验码恢复方法、系统、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102346693A (zh) * 2010-07-30 2012-02-08 海信集团有限公司 一种数据存储和数据恢复方法
CN109542668A (zh) * 2018-10-29 2019-03-29 百富计算机技术(深圳)有限公司 基于nand flash存储器的校验方法、终端设备及存储介质
CN109785895A (zh) * 2019-01-28 2019-05-21 西安紫光国芯半导体有限公司 纠正NAND Flash中多比特错误的ECC装置和方法
CN110502365A (zh) * 2019-07-11 2019-11-26 平安科技(深圳)有限公司 数据存储及恢复的方法、装置及计算机设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10104045B2 (en) * 2009-04-20 2018-10-16 International Business Machines Corporation Verifying data security in a dispersed storage network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102346693A (zh) * 2010-07-30 2012-02-08 海信集团有限公司 一种数据存储和数据恢复方法
CN109542668A (zh) * 2018-10-29 2019-03-29 百富计算机技术(深圳)有限公司 基于nand flash存储器的校验方法、终端设备及存储介质
CN109785895A (zh) * 2019-01-28 2019-05-21 西安紫光国芯半导体有限公司 纠正NAND Flash中多比特错误的ECC装置和方法
CN110502365A (zh) * 2019-07-11 2019-11-26 平安科技(深圳)有限公司 数据存储及恢复的方法、装置及计算机设备

Also Published As

Publication number Publication date
US20210218419A1 (en) 2021-07-15
CN111240597A (zh) 2020-06-05
EP3852275A1 (en) 2021-07-21

Similar Documents

Publication Publication Date Title
CN111240597B (zh) 存储数据的方法、装置、设备和计算机可读存储介质
US10997024B2 (en) Method and system utilizing quintuple parity to provide fault tolerance
US8448050B2 (en) Memory system and control method for the same
US9722632B2 (en) Sliding window list decoder for error correcting codes
US9647690B2 (en) Systems and methods for error correction coding
US10439649B2 (en) Data dependency mitigation in decoder architecture for generalized product codes for flash storage
US8806295B2 (en) Mis-correction and no-correction rates for error control
JP2015508917A (ja) 消失エラー訂正符号を用いてストレージ・アレイにデータを格納する方法、システム及びプログラム
US10498366B2 (en) Data dependency mitigation in parallel decoders for flash storage
US20170331500A1 (en) System and method for parallel decoding of codewords sharing common data
EP3635554B1 (en) Layered error correction encoding for large scale distributed object storage system
CN113297001B (zh) 一种raid编解码方法及编解码电路
US20130139028A1 (en) Extended Bidirectional Hamming Code for Double-Error Correction and Triple-Error Detection
WO2013185271A1 (zh) 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置
JP7116374B2 (ja) 短縮レイテンシ誤り訂正復号
US10387254B2 (en) Bose-chaudhuri-hocquenchem (BCH) encoding and decoding tailored for redundant array of inexpensive disks (RAID)
US9183076B2 (en) Using carry-less multiplication (CLMUL) to implement erasure code
US9400715B1 (en) System and method for interconnecting storage elements
CN114691414A (zh) 一种校验块生成方法及一种数据恢复方法
WO2017082750A1 (en) Method and apparatus for encoding data for storage
WO2020107301A1 (zh) 一种编码方法、译码方法以及存储控制器
CN114244376B (zh) 一种数据编码方法、系统、设备以及介质
RU2801198C1 (ru) Способ структурно-параметрического синтеза крипто-кодовых конструкций при вынужденном сокращении мерности пространства контроля и восстановления целостности структурированных массивов данных
RU2801124C1 (ru) Способ контроля и восстановления целостности многомерных массивов данных в условиях деградации систем хранения
US20220179739A1 (en) Multiple Responder Approach to Systems with Different Types of Failures

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