CN108432170B - 用于多码分布式存储的装置和方法 - Google Patents
用于多码分布式存储的装置和方法 Download PDFInfo
- Publication number
- CN108432170B CN108432170B CN201780005371.0A CN201780005371A CN108432170B CN 108432170 B CN108432170 B CN 108432170B CN 201780005371 A CN201780005371 A CN 201780005371A CN 108432170 B CN108432170 B CN 108432170B
- Authority
- CN
- China
- Prior art keywords
- symbols
- code
- encoded
- source
- file
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0076—Distributed coding, e.g. network coding, involving channel coding
- H04L1/0077—Cooperative coding
-
- 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/3769—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using symbol combining, e.g. Chase combining of symbols received twice or more
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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]
-
- 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
-
- 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/158—Finite field arithmetic processing
-
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/255—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with Low Density Parity Check [LDPC] 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2903—Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—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 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/2927—Decoding strategies
-
- 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/47—Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Abstract
这里描述的系统和技术包括联合解码不同码的编码数据,包括不同的编码算法、有限域和/或源块大小。这里描述的技术可以用于通过允许逐渐的数据迁移来改进现有的分布式存储系统。这些技术可以进一步在现有的存储客户端中使用,以允许应用数据存储在各种不同的分布式存储系统中。
Description
相关申请的交叉引用
本申请根据35U.S.C.§119(e)要求于2016年1月29日提交的美国临时申请第62/288,791号的优先权,该申请通过引用整体并入本文。
背景技术
如本领域所知,分布式存储系统可能需要一定程度的冗余来克服节点故障,增加高度请求的内容的读取带宽等。一种解决方案是在不同节点上存储内容的副本。另一种解决方案是使用前向纠错(FEC)编码,该编码允许类似的功能,但需要较少的存储开销,代价是增加的复杂性。已经使用里德所罗门(RS)码、Luby变换(LT)码、低密度奇偶校验(LDPC)码或随机线性网络码(RLNC)提出了不同的FEC编码解决方案。
发明内容
在此意识到许多现有的存储客户端(例如,应用)可以受益于将数据存储在两个或更多个分布式存储系统(例如,云存储系统)中。例如,存储分集可以提供对高可用性应用至关重要的附加冗余层。可用的FEC码的多样性可以使现有存储客户端难以或不可能利用各种分布式存储系统。当将数据从一个码迁移到同一分布式存储系统内的另一个码时,可能会出现同样的问题。目前唯一的解决方案是重新引入整个数据。一个更具成本效益的解决方案是保留引入的数据,并逐渐将数据转换为新的码。
前述场景需要不同的FEC码的编码数据的能力,而不管所实现的编码算法、有限域大小或所选的源块大小能够被组合和联合处理。但是,缺乏用于组合不同FEC码的整体方法。关于有限域大小,存在用于将有限域的RS码变换成其基本域(即,二元基本域)的已知技术,其目的是避免复数有限域乘法运算或如何结合不同有限域的元素。然而,现有技术不允许组合码所依赖的方程式系统。
这里描述的是用于组合多个不同码的编码数据的系统和技术。这里描述的系统和技术允许组合使用不同编码算法、有限域和/或源块大小的码。这些技术可以应用于任何线性码,包括但不限于RS和RLNC。
这里描述的技术可以用于通过允许逐渐的数据迁移来改进现有的分布式存储系统。这些技术可以进一步在现有的存储客户端中使用,以允许应用数据存储在各种不同的分布式存储系统中。
根据本公开的一个方面,一种用于多码存储系统的方法包括:接收与文件相关联的第一符号;接收与所述文件相关联的第二符号,其中所述第一或第二符号是使用线性码编码的编码符号;并联合解码第一和第二符号以恢复文件。
在某些实施例中,接收第一符号包括从第一分布式存储系统接收第一符号;并且接收第二符号包括从第二分布式存储系统接收第二符号。在其他实施例中,接收第一符号和接收第二符号包括从相同的分布式存储系统接收第一和第二符号。
在一些实施例中,接收第一符号包括接收使用第一线性码编码的第一编码符号;接收第二符号包括接收使用第二线性码编码的第二编码符号,其中第一和第二线性码使用不同的生成矩阵、不同的有限域或不同的块大小;并且联合解码第一和第二符号包括联合解码第一和第二编码符号。
在某些实施例中,联合解码第一和第二编码符号以恢复文件包括:基于由第一码使用的生成矩阵和由第二码使用的生成矩阵来构建联合生成矩阵;并且使用联合生成矩阵、第一编码符号和第二编码符号来恢复文件。
在特定实施例中,其中第一线性码使用第一生成矩阵和第二线性码使用不同的第二生成矩阵联合解码第一和第二编码符号以恢复文件包括:从第一和第二生成矩阵中的每一个提取子矩阵;组合提取的子矩阵、第一编码符号中的一个或多个和第二编码符号中的一个或多个;以及使用提取的子矩阵、第一编码符号中的一个或多个和第二编码符号中的一个或多个的组合来恢复文件。
在一些实施例中,第一线性编码使用第一有限域,并且第二线性码使用不同的第二有限域,并且联合解码第一和第二编码符号以恢复文件包括:将第一和第二编码符号映射到公共子域;导出针对第一和第二码符号的映射表,以用于基于第一和第二有限域的域大小将第一和第二有限域的运算映射到映射的第一和第二编码符号上的运算;并使用映射的第一和第二编码符号以及映射表来恢复文件。在某些实施例中,第一和第二线性码中的每一个使用二进制扩展域,并且映射第一和第二编码符号包括将第一和第二编码域映射到公共二进制扩展域。
在特定实施例中,其中第一和第二线性码使用不同块大小,联合解码第一和第二编码符号以恢复文件包括:取决于包含在较大源块大小的编码符号中的编码符号的数目从较小源块大小的编码符号的生成矩阵中提取一个或多个子矩阵,并且从较大源块大小的编码符号的生成矩阵中提取一个或多个子矩阵;将子矩阵级联为联合矩阵;并使用联合矩阵来恢复文件。
在许多实施例中,第一和/或第二符号是使用前向纠错(FEC)码、随机线性网络码(RLNC)、里德所罗门(RS)码、低密度奇偶校验(LDPC)码和/或Luby变换(LT)码来进行编码的编码符号。
根据本公开的另一方面,一种系统包括:一个或多个处理器;易失性存储器;以及存储计算机程序代码的非易失性存储器,所述计算机程序代码当在所述处理器上执行时导致跨所述一个或多个处理器上执行可操作来执行上文所述方法的实施例的过程。
根据本公开的又一方面,一种有形地体现在非暂时性计算机可读介质中的计算机程序产品,所述计算机可读介质存储能执行以执行上文描述的方法的实施例的程序指令。
附图说明
从以下对附图的描述中可以更全面地理解前述特征,其中:
图1是示出了根据本公开实施例的多码存储系统的系统图;
图2是示出了根据本公开的另一实施例的多码存储系统的系统图;
图3是示出了根据一些实施例的联合解码过程的图;
图4是示出了根据实施例的可能在存储系统节点内发生的处理的流程图;以及
图5是根据本公开的实施例的可以在其上实现本文描述的处理的处理设备的框图。
附图不一定按比例绘制,或者包括系统的所有元素,重点通常放在说明本文中寻求保护的概念、结构和技术上。
具体实施方式
在描述本文试图保护的概念、结构和技术的实施例之前,解释一些术语。如本文所使用的,术语“多码”用于描述其中可使用两个不同码来存储数据的系统和技术。如这里所使用的,术语“存储设备”是指具有非易失性存储器并且被配置为在其上存储数据的装置。存储设备的非限制性示例包括磁盘驱动器、磁带驱动器、闪存以及其他非易失性存储器(NVM)设备。
如这里所使用的,术语“线性码”是指其中码操作的数据的处理可以根据该数据在数学组上的线性函数来表示的码。在一些实施例中,这样的组也是域。
如本文所使用的,术语“联合解码”和“联合地解码”是指这样的过程:符号的两个或更多个不同的集合用于恢复文件或其他数据,并且不能使用它自己的任何符号集合来恢复数据。在一些实施例中,两个符号集合都可以被编码。在其他实施例中,这些符号集中的一个可以是未编码的。
参考图1,根据本公开的实施例,多码存储系统100包括连接到第一存储系统104a和第二存储系统104a的存储客户端102。存储客户端(或者简称为“客户端”)102可以对应于利用存储在多个存储系统104a、104b(一般称为104)内的数据的应用。在某些实施例中,客户端102还可以将数据写入存储系统104中的一个或多个。
每个存储系统104包括一个或多个存储节点,并且每个存储节点可以包括一个或多个存储设备。在本实施例中,存储系统104a和104b分别包括一个存储节点106a和106b,而存储节点106a和106b分别包括一个存储设备116a和116b。在一些实施例中,存储系统104可被提供为具有可以存储数据的许多存储节点106的分布式存储系统。在特定实施例中,存储系统104可对应于云存储系统。
存储系统104a、104b中的每个被配置为以未编码形式或编码形式(例如,使用FEC码)存储数据。在图1的实施例中,存储系统104a被配置为使用第一码110a来编码数据,而存储系统104b被配置为使用第二码110b来编码数据。在其他实施例中,存储系统104a或存储系统104b可以以未编码形式存储数据。
在大多数实施例中,码110a、110b(一般地称为110)是线性码。在各种实施例中,一个或两个码110可以是前向纠错(FEC)码。在许多实施例中,码110可以由函数Ax(Gx,kx)来描述,其中Gx对应于基于所选编码算法的生成矩阵,对应于有限域,并且kx对应于源块大小(即,每个源块的源符号数量,其中源符号的大小由的元素的大小确定)。在某些实施例中,域可以被限制为二进制基本域及其域扩展应该意识到的是,许多现有的码(例如FEC码)利用二进制域。
在某些实施例中,第一码110a里德所罗门(RS)码并且第二码110b是随机线性网络码(RLNC)。在此可以意识到,这种码组合具有实际应用。例如,许多传统存储系统使用RS码,而下一代存储系统可能使用RLNC。然而,应该理解,可以使用其他码,例如LT码和LDPC码。
回到图1的实施例,第一存储系统104a使用具有生成矩阵G1、有限域和块大小k1的第一码110a(这里表示为A1)。第一存储系统104b使用具有生成矩阵G2、有限域和块大小k2的第二码110b(这里表示为A2)。
可以引入文件114并将其存储在存储系统108a、108b中的每个内。具体而言,可以通过将文件114分成表示为X(A1)的k1个源符号的多个段而将文件114引入到存储系统108中。文件段X(A1)被输入到由将k1个源符号映射到n1个编码符号C(A1)的生成矩阵G1所描述的编码算法。编码符号C(A1)跨存储系统104a的一个或多个存储节点和/或存储设备(例如,存储设备116a)存储。可以同样使用第二码A2(G1,k1)引入文件114并将其存储在第二存储系统104b内。
通常,对于给定码Ax,编码符号C(Ax)可以如下生成:
这也可以通过映射来描述:
在各种实施例中,码110可以是系统码,其中C(Ax)的第一kx个符号与源符号X(Ax)相同。尽管系统码可以降低复杂性,但本文试图保护的系统和技术并不依赖于使用系统码。
回到图1的实施例,如图所示,第一码110a、第二码110b可以是不同的码。在特定实施例中,这意味着参数Gx、或kx中的至少一个在第一和第二码之间不同:即,G1≠G2、和/或k1≠k2。因此,系统100可以被称为多码存储系统。
客户端102可以被配置为接收和解码来自任何可用存储节点106的数据,而不管对应的存储系统104使用的码110如何。例如,为了取回文件114,客户端可以接收来自第一存储系统104a的编码符号C(A1)中的一些和来自第二存储系统104b的编码符号C(A2)中的一些。
通常,客户端102可以从多个(n个)存储系统中的每一个接收mx个编码符号,总共M=m1+m2…mn个编码符号。这里接收到的编码符号的组合被表示为C(A1,A2,…,An),其中A1,A2,…,An对应于各个存储系统使用的编码算法。在存储系统104以未编码形式存储数据的情况下,客户端104接收到的符号中的至少一些可能未被编码。
应该理解,由客户端102接收的符号可以包括使用单个码或多个不同码(例如,码110a和110b)编码的符号。在前一种情况下,客户端可以使用传统的解码技术来解码文件114。在后面的情况下,客户端102可以使用下面描述的联合解码概念和技术来联合解码编码符号C(A1,A2,…,An)。
为了解码接收到的编码符号C(A1,A2,…,An),客户端102可能需要知道每个存储系统104使用的编码参数。这些参数可以包括对于每个码,生成矩阵Gx、有限域和/或源块大小kx。客户端102可以使用任何合适的带外或带内技术从存储系统106接收编码参数。
参考图2,其中图1的相似元素使用相似的附图标记示出了根据本公开的另一实施例的多码存储系统200包括存储客户端102和一个分布式存储系统204。分布式存储系统204包括多个存储节点206a、206b(一般地206)。在所示的示例中,第一存储节点206a包括存储设备216a-216c并且第二存储节点206b包括存储设备216d、216e。第一存储节点206a使用第一码A1,而第二存储节点206b使用不同于第一码的第二码A2。
图2的实施例可以表示使用传统FEC码A1存储的数据逐渐迁移到下一代FEC码A2的情况。特别地,使用码A1将文件114可以引入第一存储节点206a中并且作为编码符号存储在多个网络实体中。在所示的示例中,文件114分别使用第一码A1作为编码符号C1(A1)、C2(A1)和C3(A1)跨存储设备216a、216b和216c存储。随后,可能是必要的或者期望的将编码数据中的一些迁移到不同的网络实体。例如,响应于节点中断或磁盘故障,可能需要迁移数据。在图2所示的示例中,响应于存储设备216c失败,使用第一码A1(例如,编码符号C3(A1))存储在其上的编码文件数据中的一些或全部可以使用第二码A2被迁移到存储设备216e(例如,作为编码符号C5(A2))。
当从存储系统204取回文件时,客户端(或“接收器”)102可以从两个不同的码A1和A2接收编码符号,这两个编码符号可以通过连同编码数据一起发送的带内或带外元数据来指示。客户端102可以使用这里描述的联合解码技术来恢复文件。
现在参照图1和图2,根据本公开的一些实施例,多码存储系统(例如,图1的系统100和/或图2的系统200)可以利用里德所罗门(RS)码和随机线性网络码(RLNC)。
如本领域已知的,RS码是最大距离可分离(MDS)码,这意味着可以从任何n个编码符号重构k个源符号。在各种实施例中,RS码的编码过程可以通过大小为k x n的生成矩阵G来描述,其向码提供所需的结构以保证矩阵的所有列是线性独立的,从而实现MDS码行为。例如,这可以通过转置的范德蒙德矩阵来构造:
矩阵G可以被解释为一组系数向量β,其中每个系数向量表示转置矩阵G的一列。用于解码RS码的一种方式是通过求解编码函数C(Ax)=X(kx)Gx,其中Gx包含接收符号C(Ax)的系数向量。
如本领域所公知的,对于RLNC码,可以通过以下生成C(Ax)的每个编码符号
本领域还已知,当使用随机线性编码自变量时,可以收集k个线性独立组合之前的接收信息符号的期望数目E[x]由下式给出
这可以通过下式由上限界定
E[x]=kq/(q-1)
RLNC码可以通过求解函数C(Ax)=X(kx)Gx来解码(和编码),其中Gx对应于编码系数β的级联。
如以上结合图1所讨论的,在许多实施例中,多码存储系统可利用两个不同码A1(G1,k1)和A2(G2,k2),其中码在它们各自的参数中的一个或多个中不同(即,G1≠G2、和/或k1≠k2)。接下来描述三种情况中的每一种情况下用于联合解码编码符号C(A1,A2)的技术。应该理解,下面描述的三种技术中的每一种技术都可以单独使用或者与其他技术中的一种或多种结合使用(即,在多个编码参数不同的情况下)。
在两个码使用不同的编码算法G1≠G2的情况下,这两个码可以被描述为A1(G1,k1)和A2(G2,k1)。这里,存储客户端(例如,图1中的客户端102)可以使用如下构造的联合生成矩阵联合地解码来自组合码C(A1,A2)的M=m1+m2个接收符号:
其中k=k1。
参考图3,根据一些实施例,可以使用马尔科夫链300来描述联合解码过程。在所示的实施例中,马尔科夫链可以描述联合解码来自RS码302和RLNC码304的编码符号(即,G1可以由RS码302生成并且G2通过RLNC码304生成)。在这种情况下,接收分组之间的转换概率取决于接收到的编码分组是线性无关的概率。因此,RS码302的符号可以被看作是恰好与RS结构相同的RLNC码304的随机符号。由于RS码302作为MDS码的特性,RS码符号的m1个状态(即,图3中标记为“k”到“k-1”的状态)之间的转移概率等于一(1),而RLNC码状态(例如,图3中标记为“k-m1”至“k-m1-1”,“1”和“0”的状态)的转移概率取决于给定的有限域
马尔科夫链300可以用于导出在成功解码之前需要接收的编码分组的数量的边界,其中分组是可能已经由码处理的数据的有序子集。与现有的RLNC解码技术相比,由于组合码的成功解码仍然至少需要接收k个分组,所以下界不会随着组合码C(A1,A2)而改变。
在成功解码之前需要接收的编码分组数量的上限取决于所选择的域大小如果相同的k个分组使用相同的域大小q和相同的有限域用RS码302和RLNC码304编码,则必须在完全解码原始k个分组之前从RS码m1和RLNC码m2接收的编码分组的平均数按下式定上界:
接下来进行证明。
从马尔科夫链300可以看出,组合码的上限取决于接收到的RS和RLNC分组的数量m1和m2,其中,M=m1+m2以及不同状态之间的转移概率pi→i+1和pj→j+1。接收分组的期望最小数量E[Nc]可以导出为
由于q-j≤q,对于q≥2且j≥1,则
这显示了第一个界限。
对于第二个上界,接收分组的期望最小数量E[Nc]可以重新表示为
这显示了第二个界限。
在两个码使用不同的域大小(即,)的情况下,这两个码可以被描述为A1(G1,k1)和A2(G1,k1)。在这种情况下,存储客户端可以使用如下构造的联合生成矩阵联合地解码来自码C(A1,A2)的M=m1+m2个接收符号:
其中k=k1。
在客户端侧(例如客户端102内)求解相关的等式可以通过映射C(A1)和C(A2)的方程组到共同的子域来实现。如下所示,可以将任何在扩展域上的线性方程组Ax=y映射到其基本域并且以这种方式可以对C(A1,A2)进行解码。
假设Xext是q>1的扩展域的n=q比特大元素,并且令为级联形成中的元素Xext的基本域上的二元向量。此外,令为加法表,而为扩展域的乘法表,而和为基本域的对应表。此外,令Sext表示的2q个元素的集合,并且Yext是表的条目。还有,令和是它们在基本域上的二元向量。
表1A
表1B
对于有必要找到一个映射,允许对中的每个运算和元素执行到中的运算的映射。为了找到该映射,可以引入映射系数γ作为目标有限域的元素。在中可能的运算是γext*Xext=Yext,其中γext可以是Sext中的任何元素,也可以在中显示为行元素。未知的是Xext,它是Sext中的任意元素。因此,Yext是上述乘法的结果,其产生的条目。未知的Xext可以表示为矢量正如Yext可以表示为因此,从到的映射可能涉及包括对于所有i∈{0,…,|A|-1}或对于任何X∈Aext对于中的每一行,找到合适的Ybase以满足γi,1,1*x1+γi,1,2*x2=yi,1,并且γi,2,1*x1+γi,2,2*x2=yi,2。这可以通过ΓX=Y使用系数矩阵Γ来表示。
表2
在两个码使用不同的源块尺寸(即,k1≠k2)的情况下,这两个码可以被描述为A1(G1,k1)和A2(G1,k2)。这里,可以假定有两组不同的源符号X1≠X2。A1码独立应用于X1和X2,生成两个不同的修复块,每个块都在k1个源符号上。A2码在k2个源符号上的联合源块中编码X=X1+X2。
其中m1、m2和m3分别表示列G1(X1)、G1(X2)和G1(X1,X2)中的所接收符号的数量。客户端请求的符号的数量可以由m1≤k1和m2≤k2来限定。下限可以由k1+k2给出,因为在任何情况下都需要接收至少这个数目的分组。
矩阵G1(X1,X2)可以看作是上部分G1(X1,X2)u和下部分G1(X1,X2)l的级联。上部分和下部分能够用于形成级联G(X1)=[G1(X1)G1(X1,X2)u]和G(X2)=[G1(X2)G1(X1,X2)l]。如果G(X1)和G(X2)均为满秩,则可以使用上文结合使用两种不同编码算法(即,G1≠G2)的情况所描述的技术来对矩阵进行解码。
因此,如上所述,联合解码所需的编码分组的期望数量E[Nc]可以取决于接收的分组m1,m2和m3的数量以及相关的编码算法。在其中G1(X1)和G1(X2)是RS码的符号并且其中G1(X1,X2)是RLNC码的符号的实施例中,其中的所需分组的数目的上限是
应该理解的是,尽管本文试图保护的结构、概念和技术的实施例可以在RS和RLNC码的上下文中描述,但是这样的结构、概念和技术不限于码的这种特定组合,而是可以应用于任何线性码。例如,本文描述的技术可以应用于各种线性码,例如块码、卷积码和无速率码。
图4是示出了可以在多码存储系统(例如,图1的系统和/或图2的系统200)内实现的说明性处理的流程图。在某些实施例中,处理可以在存储客户端(例如,图1和图2中的客户端102)内实现。这里表示为“处理块”的矩形元素(由元素402代表)表示计算机软件指令或指令组。
可选地,处理块可以表示由诸如数字信号处理器(DSP)电路或专用集成电路(ASIC)之类的功能等效电路执行的步骤。流程图没有描绘任何特定编程语言的语法,而是示出本领域普通技术人员中的一个需要制造电路或生成计算机软件以执行特定装置所需的处理的功能信息。应该注意的是,为了清楚起见,可以省略许多常规程序元素,例如循环和变量的初始化以及临时变量的使用。所描述的方框的具体顺序仅仅是说明性的,并且可以在不偏离本文试图保护的概念、结构和技术的精神的情况下进行变化。因此,除非另有说明,否则下面描述的方框是无序的,意味着在可能的情况下,可以以任何方便的或期望的顺序执行由方框表示的功能。在一些实施例中,处理块分别代表可在软件和/或硬件中实现的有限状态机内的状态和转换。
参考图4,方法400开始于方框402和404,其中接收与文件相关联的第一组符号(“第一符号”)以及也与该文件相关联的第二组符号(“第二符号”)。第一或第二符号是使用线性码编码的编码符号。
在一些实施例中,第一符号和第二符号可以从不同的分布式存储系统(例如,不同的云存储系统)接收。在其他实施例中,第一符号和第二符号可以从相同的分布式存储系统(例如,经历从旧版码迁移到下一代码的系统)接收。
在一些实施例中,使用第一线性码对第一符号进行编码,并且使用不同的第二线性码对第二符号进行编码,其中第一线性码和第二线性码使用不同的生成矩阵、不同的有限域或不同的块大小。在某些实施例中,第一符号或第二符号是使用前向纠错(FEC)码编码的编码符号。在一些实施例中,第一符号或第二符号是使用随机线性网络码(RLNC)编码的编码符号。在特定实施例中,第一符号或第二符号是使用里德所罗门(RS)码编码的编码符号。在某些实施例中,第一符号或第二符号是使用低密度奇偶校验(LDPC)码编码的编码符号。在一些实施例中,第一符号或第二符号是使用Luby变换(LT)码编码的编码符号。
在框406处,第一和第二编码符号被联合解码以恢复文件。在一些实施例中,联合解码第一和第二编码符号以恢复文件包括基于第一码使用的生成矩阵和第二码使用的生成矩阵构来建联合生成矩阵,并且使用联合生成矩阵、第一编码符号和第二编码符号来恢复文件。
在特定实施例中,在第一和第二线性码使用不同的生成矩阵的情况下,联合解码第一和第二编码符号以恢复文件包括:基于由第一码使用的生成矩阵和由第二码所使用的生成矩阵来构造联合生成矩阵;并且使用联合生成矩阵、第一编码符号和第二编码符号来恢复文件。
在一些实施例中,其中第一和第二线性码使用不同的有限域,联合解码包括将第一和第二编码符号映射到公共子域;导出针对第一和第二码符号的映射表,映射表用于基于第一和第二有限域的域大小将第一和第二有限域的运算映射到映射的第一和第二编码符号上的运算;并使用映射的第一和第二编码符号以及映射表来恢复文件。在一些实施例中,第一和第二线性码中的每一个使用二进制扩展域,其中映射第一和第二编码符号包括将第一和第二编码域映射到公共二进制扩展域(例如,)。
在其中第一线性码和第二线性码使用不同块大小的特定实施例中,联合解码可以包括:取决于包含在较大源块大小的编码符号中的编码符号的数量,从较小源块大小的编码符号的生成矩阵中提取一个或多个子矩阵;从较大源块大小的编码符号的生成矩阵中提取一个或多个子矩阵;将子矩阵级联为联合矩阵;并使用联合矩阵来恢复文件。在某些实施例中,确定提取的子矩阵的数量,使得两个码在被覆盖的源符号中具有显著的重叠。
图5示出了根据本公开的实施例的可以执行这里描述的处理的至少一部分的说明性计算机500。在一些实施例中,计算机500可以形成多码存储系统(例如,图1的系统100和/或图2的系统200)的一部分。
计算机500可以包括处理器502、易失性存储器504、非易失性存储器506(例如硬盘)、输出设备508和图形用户界面(GUI)510(例如,鼠标、键盘、显示器),其中的每一个通过总线518耦合在一起。非易失性存储器506可以被配置为存储计算机指令512、操作系统514和数据516。在一个示例中,计算机指令512是由处理器502从易失性存储器504中执行的。在一些实施例中,计算机500对应于虚拟机(VM)。在其他实施例中,计算机500对应于物理计算机。
在一些实施例中,可以提供非暂时性计算机可读介质520,其上可以有形地体现计算机程序产品。非暂时性计算机可读介质520可以存储能执行以实施本文描述的处理(例如,上面结合图1-4描述的处理)的程序指令。
再参照图5,处理可以用硬件、软件或两者的组合来实现。在各种实施例中,处理由在可编程计算机/机器上执行的计算机程序提供,每个可编程计算机/机器包括处理器、能由处理器读取的存储介质或其它制品(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及一个或多个输出设备。程序代码可以应用于使用输入设备输入的数据以执行处理并生成输出信息。
该系统可以至少部分地经由计算机程序产品(例如,在机器可读存储设备中)执行处理,以供数据处理装置(例如,可编程处理器、一台计算机或多台计算机等)执行或控制其操作。每个这样的程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。但是,程序可以用汇编语言或机器语言来实现。该语言可以是编译或解释的语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适用于计算环境的其他单元。计算机程序可以部署为在一个站点上或者分布在多个站点上在一个计算机上或多个计算机上执行并且通过通信网络互连。计算机程序可以存储在能由通用或专用可编程计算机读取以用于在存储介质或设备由计算机读取时配置和操作计算机的存储介质或设备(例如,CD-ROM、硬盘或磁盘)上。处理还可以实现为配置有计算机程序的机器可读存储介质,其中,在执行时,计算机程序中的指令使计算机运行。程序逻辑可以在物理或虚拟处理器上运行。程序逻辑可以在一个或多个物理或虚拟处理器上运行。
处理可以由执行一个或多个计算机程序的一个或多个可编程处理器执行以执行系统的功能。系统的全部或部分可以作为专用逻辑电路(例如,FPGA(现场可编程门阵列)和/或ASIC(专用集成电路))来实现。
另外,作为这里试图受到保护的概念、结构和技术的一部分而包括的软件可以体现在包括计算机可读存储介质的计算机程序产品中。例如,这种计算机可读存储介质可以包括其上存储有计算机可读程序代码段的计算机可读存储设备,诸如硬盘驱动器设备、CD-ROM、DVD-ROM或计算机磁盘。相反,计算机可读传输介质可以包括光学的、有线的或无线的通信链路,其具有作为数字或模拟信号在其上承载的程序代码段。非暂时性机器可读介质可以包括但不限于硬盘驱动器、光盘、闪存、非易失性存储器、易失性存储器、磁盘等,但本身不包括暂时性信号。
本文所引用的所有参考文献均通过引用整体并入本文。
已经描述了某些实施例,其用于说明本文中寻求保护的各种概念、结构和技术,对于本领域的普通技术人员来说显而易见的是,可以使用包含这些概念、结构和技术的其他实施例。上文描述的不同实施例的元件可以被组合以形成未在上面具体阐述的其他实施例,此外,在单个实施例的上下文中描述的元件可以单独地或以任何合适的子组合提供。因此,认为此处寻求的保护范围不应限于所描述的实施例,而是应该仅由所附的权利要求的精神和范围来限制。
Claims (15)
1.一种用于多码存储系统的方法(400),所述方法包括:
接收与文件(114)相关联的第一组符号,其中,所述第一组符号包括第一组源符号或使用所述第一组源符号编码的第一组编码符号;
接收与所述文件相关联的第二组符号,其中,所述第二组符号包括第二组源符号或使用所述第二组源符号编码的第二组编码符号,其中,所述第一组源符号不同于所述第二组源符号,并且其中,所述第一组符号或所述第二组符号是一组编码符号(C(A1),C(A2));以及
对所述第一组符号和所述第二组符号联合解码(406)以恢复所述文件。
2.如权利要求1所述的方法,其中:
所述第一组源符号和所述第二组源符号在以下方面不同:源符号的有限域、或源符号的数量k、或其组合。
3.如权利要求2所述的方法,其中,所述第一组源符号和所述第二组源符号中的源符号的大小由有限域的元素的大小确定。
5.如权利要求1所述的方法,其中:
接收所述第一组符号包括接收使用第一码编码的第一编码符号;
接收所述第二组符号包括接收使用第二码编码的第二编码符号,其中,所述第一码和所述第二码在以下方面不同:生成矩阵、有限域、或块大小、或这些的组合;以及
对所述第一组符号和所述第二组符号联合解码包括对所述第一编码符号和所述第二编码符号联合解码。
6.如权利要求1所述的方法,其中:
接收所述第一组符号包括从第一分布式存储系统接收所述第一组符号;以及
接收所述第二组符号包括从第二分布式存储系统接收所述第二组符号。
7.如权利要求1所述的方法,其中,接收所述第一组符号和接收所述第二组符号包括从同一分布式存储系统接收所述第一组符号和所述第二组符号。
8.如权利要求5所述的方法,其中,对所述第一编码符号和所述第二编码符号联合解码以恢复所述文件包括:
基于由第一码使用的所述生成矩阵和由第二码使用的所述生成矩阵来构建联合生成矩阵;以及
使用所述联合生成矩阵、所述第一编码符号和所述第二编码符号来恢复所述文件。
9.如权利要求8所述的方法,其中,所述第一码使用第一生成矩阵并且所述第二码使用不同的第二生成矩阵,其中,对所述第一编码符号和所述第二编码符号联合解码以恢复所述文件包括:
从所述第一生成矩阵和所述第二生成矩阵中的每一个提取子矩阵;
组合提取的子矩阵、所述第一编码符号中的一个或多个和所述第二编码符号中的一个或多个;以及
使用所述提取的子矩阵、所述第一编码符号中的所述一个或多个和所述第二编码符号中的所述一个或多个的组合来恢复所述文件。
10.如权利要求8所述的方法,其中,所述第一编码使用第一有限域,并且所述第二码使用不同的第二有限域,其中,对所述第一编码符号和所述第二编码符号联合解码以恢复所述文件包括:
将所述第一编码符号和所述第二编码符号映射到公共子域;
导出针对第一码符号和第二码符号的映射表,以用于基于所述第一有限域和所述第二有限域的域大小来将所述第一有限域和所述第二有限域的运算映射到映射的第一编码符号和映射的第二编码符号上的运算;以及
使用所述映射的第一编码符号和所述映射的第二编码符号以及所述映射表来恢复所述文件。
11.如权利要求10所述的方法,其中,所述第一码和所述第二码中的每一个使用二进制扩展域,其中,映射所述第一编码符号和所述第二编码符号包括将第一编码域和第二编码域映射到公共二进制扩展域。
12.如权利要求8所述的方法,其中,所述第一码和所述第二码使用不同的块大小,其中,对所述第一编码符号和所述第二编码符号联合解码以恢复所述文件包括:
取决于包含在较大源块大小的编码符号中的编码符号的数量,从较小源块大小的编码符号的生成矩阵中提取一个或多个子矩阵,并且从较大的源块大小的编码符号的生成矩阵中提取一个或多个子矩阵;
将所述子矩阵级联为联合矩阵;以及
使用所述联合矩阵来恢复所述文件。
13.如权利要求1所述的方法,其中,所述第一组编码符号或所述第二组编码符号使用以下任一种来编码:线性编码;前向纠错FEC码;随机线性网络码RLNC;里德所罗门RS码;低密度奇偶校验LDPC码;或Luby变换LT码。
14.如权利要求1所述的方法,其中,所述方法包括接收多于两组符号。
15.一种用于联合解码多码数据的系统,包括:
处理器;以及
存储计算机程序代码的存储器,当所述计算机程序代码在所述处理器上执行时使所述处理器执行过程,所述过程可操作用于执行根据权利要求1-14中任一项所述的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662288791P | 2016-01-29 | 2016-01-29 | |
US62/288,791 | 2016-01-29 | ||
PCT/US2017/015302 WO2017132487A1 (en) | 2016-01-29 | 2017-01-27 | Apparatus and method for multi-code distributed storage |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108432170A CN108432170A (zh) | 2018-08-21 |
CN108432170B true CN108432170B (zh) | 2021-08-17 |
Family
ID=57985101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780005371.0A Active CN108432170B (zh) | 2016-01-29 | 2017-01-27 | 用于多码分布式存储的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11463113B2 (zh) |
EP (1) | EP3408956B1 (zh) |
CN (1) | CN108432170B (zh) |
WO (1) | WO2017132487A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018093325A (ja) * | 2016-12-01 | 2018-06-14 | ソニーセミコンダクタソリューションズ株式会社 | 情報処理装置、情報処理方法、及びプログラム |
US11615061B1 (en) * | 2018-08-03 | 2023-03-28 | Amazon Technologies, Inc. | Evaluating workload for database migration recommendations |
US11943825B2 (en) * | 2020-07-09 | 2024-03-26 | Qualcomm Incorporated | Feedback-based broadcasting of network coded packets with sidelink |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1976166A1 (en) * | 2006-01-25 | 2008-10-01 | Huawei Technologies Co., Ltd. | An error control method and an interdependent relay system |
CN103650462A (zh) * | 2012-04-27 | 2014-03-19 | 北京大学深圳研究生院 | 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 |
CN104364765A (zh) * | 2012-05-03 | 2015-02-18 | 汤姆逊许可公司 | 分布式数据存储系统中的数据存储和维护的方法以及对应设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8046426B2 (en) * | 2004-12-30 | 2011-10-25 | Massachusetts Institute Of Technology | Random linear coding approach to distributed data storage |
US7779326B2 (en) * | 2005-03-01 | 2010-08-17 | The Texas A&M University System | Multi-source data encoding, transmission and decoding using Slepian-Wolf codes based on channel code partitioning |
US7512863B2 (en) * | 2005-10-12 | 2009-03-31 | Qualcomm Corporation | Turbo code interleaver for low frame error rate |
FR2895176B1 (fr) * | 2005-12-21 | 2008-02-22 | St Microelectronics Sa | Transmission securisee avec code correcteur d'erreur |
US8472505B2 (en) * | 2009-06-17 | 2013-06-25 | Electronics And Telecommunications Research Institute | Constant amplitude encoding apparatus and method for code division multiplexing communication system |
JP4982580B2 (ja) * | 2010-03-23 | 2012-07-25 | 株式会社東芝 | メモリシステム及びメモリシステムのデータ書き込み・読み出し方法 |
CA2797043C (en) * | 2010-04-21 | 2016-01-19 | Lg Electronics Inc. | Method of reducing peak-to-average power ratio, cubic metric and block error rate in ofdm systems using network coding |
WO2012031628A1 (en) * | 2010-09-09 | 2012-03-15 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Entropy encoding and decoding scheme |
US9240808B2 (en) * | 2010-09-10 | 2016-01-19 | Trellis Phase Communications, Lp | Methods, apparatus, and systems for coding with constrained interleaving |
TW201223170A (en) * | 2010-11-18 | 2012-06-01 | Ind Tech Res Inst | Layer-aware Forward Error Correction encoding and decoding method, encoding apparatus, decoding apparatus and system thereof |
TWI445323B (zh) * | 2010-12-21 | 2014-07-11 | Ind Tech Res Inst | 資料傳送的混合式編解碼裝置與方法 |
PL2768145T3 (pl) * | 2011-01-14 | 2016-07-29 | Ge Video Compression Llc | Schemat kodowania i dekodowania entropijnego |
US10298939B2 (en) * | 2011-06-22 | 2019-05-21 | Qualcomm Incorporated | Quantization in video coding |
US8656249B2 (en) * | 2011-09-07 | 2014-02-18 | Lsi Corporation | Multi-level LDPC layer decoder |
EP3046276B1 (en) * | 2015-01-14 | 2018-03-14 | Knowledge Development for POF, S.L. | Two-level coset coding scheme for gigabit Ethernet over plastic optical fibre |
CN104915450B (zh) | 2015-07-01 | 2017-11-28 | 武汉大学 | 一种基于HBase的大数据存储与检索方法及系统 |
-
2017
- 2017-01-27 CN CN201780005371.0A patent/CN108432170B/zh active Active
- 2017-01-27 US US16/066,866 patent/US11463113B2/en active Active
- 2017-01-27 EP EP17703911.2A patent/EP3408956B1/en active Active
- 2017-01-27 WO PCT/US2017/015302 patent/WO2017132487A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1976166A1 (en) * | 2006-01-25 | 2008-10-01 | Huawei Technologies Co., Ltd. | An error control method and an interdependent relay system |
CN103650462A (zh) * | 2012-04-27 | 2014-03-19 | 北京大学深圳研究生院 | 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 |
CN104364765A (zh) * | 2012-05-03 | 2015-02-18 | 汤姆逊许可公司 | 分布式数据存储系统中的数据存储和维护的方法以及对应设备 |
Also Published As
Publication number | Publication date |
---|---|
US20200021314A1 (en) | 2020-01-16 |
EP3408956A1 (en) | 2018-12-05 |
CN108432170A (zh) | 2018-08-21 |
EP3408956B1 (en) | 2020-12-23 |
US11463113B2 (en) | 2022-10-04 |
WO2017132487A1 (en) | 2017-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10146618B2 (en) | Distributed data storage with reduced storage overhead using reduced-dependency erasure codes | |
JP4062435B2 (ja) | 誤り訂正符号復号装置 | |
KR102601215B1 (ko) | 폴라 코딩 장치 | |
KR101270815B1 (ko) | 다양한 클래스의 코드들을 인코딩 및 디코딩하는 애플리케이션을 갖는 인-플레이스 변환 | |
US20170187398A1 (en) | Accelerated galois field coding for storage systems | |
CN1983823B (zh) | 编码器、解码器、以及编码和解码的方法 | |
JP5705106B2 (ja) | ユークリッド空間リード−マラー符号の軟判定復号を実行する方法 | |
KR101892319B1 (ko) | 저-밀도 패리티 체크 코드를 사용하는 인코딩 및 디코딩 기술 | |
WO2014122772A1 (ja) | 誤り訂正符号の検査行列のデータ構造、並びに誤り訂正符号の符号化率可変装置および可変方法 | |
US10439649B2 (en) | Data dependency mitigation in decoder architecture for generalized product codes for flash storage | |
CN104981978A (zh) | 使用准循环构造和穿孔以实现高速率、高并行性和低差错本底的ldpc设计 | |
CN108432170B (zh) | 用于多码分布式存储的装置和方法 | |
US9104589B1 (en) | Decoding vectors encoded with a linear block forward error correction code having a parity check matrix with multiple distinct pattern regions | |
Shahabinejad et al. | A class of binary locally repairable codes | |
TW202011189A (zh) | 分散式存儲系統、方法和裝置 | |
TW202001920A (zh) | 在資料儲存系統中用於改善資料回復之方法及裝置 | |
Xie et al. | Quantum synchronizable codes from quadratic residue codes and their supercodes | |
US20160049962A1 (en) | Method and apparatus of ldpc encoder in 10gbase-t system | |
JP2012050008A (ja) | 誤り検出訂正方法および半導体メモリ装置 | |
US20170288697A1 (en) | Ldpc shuffle decoder with initialization circuit comprising ordered set memory | |
Chen et al. | A new Zigzag MDS code with optimal encoding and efficient decoding | |
KR101436973B1 (ko) | 슈퍼차지드 코드들 | |
Zolotarev et al. | The application of modulo q check codes to increase the efficiency of non-binary multithreshold decoders over q-ary symmetric channel | |
Okeke et al. | A comparative study between hamming code and Reed-Solomon code in byte error detection and correction | |
KR101304570B1 (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 |