CN108432170B - 用于多码分布式存储的装置和方法 - Google Patents

用于多码分布式存储的装置和方法 Download PDF

Info

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
Application number
CN201780005371.0A
Other languages
English (en)
Other versions
CN108432170A (zh
Inventor
M·梅达尔
C·H·U·黑尔格
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.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Massachusetts Institute of Technology
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Massachusetts Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV, Massachusetts Institute of Technology filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Publication of CN108432170A publication Critical patent/CN108432170A/zh
Application granted granted Critical
Publication of CN108432170B publication Critical patent/CN108432170B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0076Distributed coding, e.g. network coding, involving channel coding
    • H04L1/0077Cooperative coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3769Decoding 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
    • 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/1008Adding 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/1012Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/158Finite field arithmetic processing
    • 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/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/255Error 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
    • 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/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent 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/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/2927Decoding strategies
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/47Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37
    • 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/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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码的整体方法。关于有限域大小,存在用于将
Figure BDA0001713583420000011
有限域的RS码变换成其基本域
Figure BDA0001713583420000012
(即,二元基本域)的已知技术,其目的是避免复数有限域乘法运算或如何结合不同有限域的元素。然而,现有技术不允许组合码所依赖的方程式系统。
这里描述的是用于组合多个不同码的编码数据的系统和技术。这里描述的系统和技术允许组合使用不同编码算法、有限域和/或源块大小的码。这些技术可以应用于任何线性码,包括但不限于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,
Figure BDA0001713583420000051
kx)来描述,其中Gx对应于基于所选编码算法的生成矩阵,
Figure BDA0001713583420000052
对应于有限域,并且kx对应于源块大小(即,每个源块的源符号数量,其中源符号的大小由
Figure BDA0001713583420000053
的元素的大小确定)。在某些实施例中,域
Figure BDA0001713583420000054
可以被限制为二进制基本域
Figure BDA0001713583420000055
及其域扩展
Figure BDA0001713583420000056
应该意识到的是,许多现有的码(例如FEC码)利用二进制域。
在某些实施例中,第一码110a里德所罗门(RS)码并且第二码110b是随机线性网络码(RLNC)。在此可以意识到,这种码组合具有实际应用。例如,许多传统存储系统使用RS码,而下一代存储系统可能使用RLNC。然而,应该理解,可以使用其他码,例如LT码和LDPC码。
回到图1的实施例,第一存储系统104a使用具有生成矩阵G1、有限域
Figure BDA0001713583420000057
和块大小k1的第一码110a(这里表示为A1)。第一存储系统104b使用具有生成矩阵G2、有限域
Figure BDA0001713583420000058
和块大小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,
Figure BDA0001713583420000059
k1)引入文件114并将其存储在第二存储系统104b内。
通常,对于给定码Ax,编码符号C(Ax)可以如下生成:
Figure BDA00017135834200000510
这也可以通过映射来描述:
Figure BDA00017135834200000511
在各种实施例中,码110可以是系统码,其中C(Ax)的第一kx个符号与源符号X(Ax)相同。尽管系统码可以降低复杂性,但本文试图保护的系统和技术并不依赖于使用系统码。
回到图1的实施例,如图所示,第一码110a、第二码110b可以是不同的码。在特定实施例中,这意味着参数Gx
Figure BDA0001713583420000061
或kx中的至少一个在第一和第二码之间不同:即,G1≠G2
Figure BDA0001713583420000062
和/或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、有限域
Figure BDA0001713583420000063
和/或源块大小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码行为。例如,这可以通过转置的范德蒙德矩阵来构造:
Figure BDA0001713583420000071
其中α是
Figure BDA0001713583420000072
的元素。
矩阵G可以被解释为一组系数向量β,其中每个系数向量表示转置矩阵G的一列。用于解码RS码的一种方式是通过求解编码函数C(Ax)=X(kx)Gx,其中Gx包含接收符号C(Ax)的系数向量。
如本领域所公知的,对于RLNC码,可以通过以下生成C(Ax)的每个编码符号
Figure BDA0001713583420000073
其中编码系数向量β是从使用的有限域
Figure BDA0001713583420000074
的元素中随机选择的。RLNC码的解码概率取决于码符号系数不同的概率,其由下式给出
Figure BDA0001713583420000081
本领域还已知,当使用随机线性编码自变量时,可以收集k个线性独立组合之前的接收信息符号的期望数目E[x]由下式给出
Figure BDA0001713583420000082
这可以通过下式由上限界定
E[x]=kq/(q-1)
RLNC码可以通过求解函数C(Ax)=X(kx)Gx来解码(和编码),其中Gx对应于编码系数β的级联。
如以上结合图1所讨论的,在许多实施例中,多码存储系统可利用两个不同码A1(G1,
Figure BDA0001713583420000083
k1)和A2(G2,
Figure BDA0001713583420000084
k2),其中码在它们各自的参数中的一个或多个中不同(即,G1≠G2
Figure BDA0001713583420000085
和/或k1≠k2)。接下来描述三种情况中的每一种情况下用于联合解码编码符号C(A1,A2)的技术。应该理解,下面描述的三种技术中的每一种技术都可以单独使用或者与其他技术中的一种或多种结合使用(即,在多个编码参数不同的情况下)。
在两个码使用不同的编码算法G1≠G2的情况下,这两个码可以被描述为A1(G1,
Figure BDA0001713583420000086
k1)和A2(G2,
Figure BDA0001713583420000087
k1)。这里,存储客户端(例如,图1中的客户端102)可以使用如下构造的联合生成矩阵
Figure BDA0001713583420000088
联合地解码来自组合码C(A1,A2)的M=m1+m2个接收符号:
Figure BDA0001713583420000089
其中k=k1
如果
Figure BDA00017135834200000810
中至少有k个线性无关的列(即系数),则可以求解相关的等式
Figure BDA00017135834200000811
参考图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”的状态)的转移概率取决于给定的有限域
Figure BDA0001713583420000091
马尔科夫链300可以用于导出在成功解码之前需要接收的编码分组的数量的边界,其中分组是可能已经由码处理的数据的有序子集。与现有的RLNC解码技术相比,由于组合码的成功解码仍然至少需要接收k个分组,所以下界不会随着组合码C(A1,A2)而改变。
在成功解码之前需要接收的编码分组数量的上限取决于所选择的域大小
Figure BDA0001713583420000092
如果相同的k个分组使用相同的域大小q和相同的有限域
Figure BDA0001713583420000093
用RS码302和RLNC码304编码,则必须在完全解码原始k个分组之前从RS码m1和RLNC码m2接收的编码分组的平均数按下式定上界:
Figure BDA0001713583420000094
接下来进行证明。
从马尔科夫链300可以看出,组合码的上限取决于接收到的RS和RLNC分组的数量m1和m2,其中,M=m1+m2以及不同状态之间的转移概率pi→i+1和pj→j+1。接收分组的期望最小数量E[Nc]可以导出为
Figure BDA0001713583420000095
由于q-j≤q,对于q≥2且j≥1,则
Figure BDA0001713583420000096
这显示了第一个界限。
对于第二个上界,接收分组的期望最小数量E[Nc]可以重新表示为
Figure BDA0001713583420000097
这显示了第二个界限。
在两个码使用不同的域大小(即,
Figure BDA0001713583420000098
)的情况下,这两个码可以被描述为A1(G1,
Figure BDA0001713583420000101
k1)和A2(G1,
Figure BDA0001713583420000102
k1)。在这种情况下,存储客户端可以使用如下构造的联合生成矩阵
Figure BDA0001713583420000103
联合地解码来自码C(A1,A2)的M=m1+m2个接收符号:
Figure BDA0001713583420000104
其中k=k1
在客户端侧(例如客户端102内)求解相关的等式
Figure BDA0001713583420000105
可以通过映射C(A1)和C(A2)的方程组到共同的子域来实现。如下所示,可以将任何在扩展域
Figure BDA0001713583420000106
上的线性方程组Ax=y映射到其基本域
Figure BDA0001713583420000107
并且以这种方式可以对C(A1,A2)进行解码。
假设Xext是q>1的扩展域
Figure BDA0001713583420000108
的n=q比特大元素,并且令
Figure BDA0001713583420000109
为级联形成
Figure BDA00017135834200001010
中的元素Xext的基本域
Figure BDA00017135834200001011
上的二元向量。此外,令
Figure BDA00017135834200001012
为加法表,而
Figure BDA00017135834200001013
为扩展域
Figure BDA00017135834200001014
的乘法表,而
Figure BDA00017135834200001015
Figure BDA00017135834200001016
为基本域
Figure BDA00017135834200001017
的对应表。此外,令Sext表示
Figure BDA00017135834200001018
的2q个元素的集合,并且Yext是表
Figure BDA00017135834200001019
的条目。还有,令
Figure BDA00017135834200001020
Figure BDA00017135834200001021
是它们在基本域
Figure BDA00017135834200001022
上的二元向量。
表1A示出了对于
Figure BDA00017135834200001023
并且其基本域
Figure BDA00017135834200001024
的其中包含的
Figure BDA00017135834200001025
的表,而表1B示出了对于相同域,
Figure BDA00017135834200001026
Figure BDA00017135834200001027
表1A
Figure BDA00017135834200001028
表1B
Figure BDA00017135834200001029
如果可以找到针对元素的通用映射,则可以将方程组映射到它们的基本域,以及扩展域与基本域的表的相乘和相加表:即
Figure BDA0001713583420000111
Figure BDA0001713583420000112
对于
Figure BDA0001713583420000113
在本文中可以意识到,在X∈Sext的所有元素上的
Figure BDA0001713583420000114
中的任何运算类似于
Figure BDA0001713583420000115
元素的按位异或(XOR)。取表1A中(其中q=2)的说明性域表中,该域的元素集合是
Figure BDA0001713583420000116
它可以通过
Figure BDA0001713583420000117
被映射到基本域的元素,并且可以看出,对于所有元素X∈S,
Figure BDA0001713583420000118
中的按位XOR导致与
Figure BDA0001713583420000119
中的运算相同的结果。
对于
Figure BDA00017135834200001110
有必要找到一个映射,允许对
Figure BDA00017135834200001111
中的每个运算和元素执行到
Figure BDA00017135834200001112
中的运算的映射。为了找到该映射,可以引入映射系数γ作为目标有限域
Figure BDA00017135834200001113
的元素。在
Figure BDA00017135834200001114
中可能的运算是γext*Xext=Yext,其中γext可以是Sext中的任何元素,也可以在
Figure BDA00017135834200001115
中显示为行元素。未知的是Xext,它是Sext中的任意元素。因此,Yext是上述乘法的结果,其产生
Figure BDA00017135834200001116
的条目。未知的Xext可以表示为矢量
Figure BDA00017135834200001117
正如Yext可以表示为
Figure BDA00017135834200001118
因此,从
Figure BDA00017135834200001119
Figure BDA00017135834200001120
的映射可能涉及包括对于所有i∈{0,…,|A|-1}或对于任何X∈Aext对于
Figure BDA00017135834200001121
中的每一行,找到合适的Ybase以满足γi,1,1*x1i,1,2*x2=yi,1,并且γi,2,1*x1i,2,2*x2=yi,2。这可以通过ΓX=Y使用系数矩阵Γ来表示。
对于
Figure BDA00017135834200001122
系数矩阵为Γ={[0,0],[0,0],[1,0],[0,1],[1,1],[1,0],[0,1],[1,1]}。得到的Γ可用于生成映射表
Figure BDA00017135834200001123
其示例如表2所示。
表2
Figure BDA00017135834200001124
在两个码使用不同的源块尺寸(即,k1≠k2)的情况下,这两个码可以被描述为A1(G1,
Figure BDA00017135834200001125
k1)和A2(G1,
Figure BDA00017135834200001126
k2)。这里,可以假定有两组不同的源符号X1≠X2。A1码独立应用于X1和X2,生成两个不同的修复块,每个块都在k1个源符号上。A2码在k2个源符号上的联合源块中编码X=X1+X2
存储客户端可以使用如下构造的联合生成矩阵
Figure BDA00017135834200001127
来联合地解码来自码C(A1,A2)的M=m1+m2个收到的符号:
Figure BDA0001713583420000121
其中m1、m2和m3分别表示列G1(X1)、G1(X2)和G1(X1,X2)中的所接收符号的数量。客户端请求的符号的数量可以由m1≤k1和m2≤k2来限定。下限可以由k1+k2给出,因为在任何情况下都需要接收至少这个数目的分组。
如果级联矩阵
Figure BDA0001713583420000122
构成满秩矩阵,则可以在客户端内求解相关的等式
Figure BDA0001713583420000123
矩阵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)的情况所描述的技术来对矩阵
Figure BDA0001713583420000124
进行解码。
因此,如上所述,联合解码所需的编码分组的期望数量E[Nc]可以取决于接收的分组m1,m2和m3的数量以及相关的编码算法。在其中G1(X1)和G1(X2)是RS码的符号并且其中G1(X1,X2)是RLNC码的符号的实施例中,其中
Figure BDA0001713583420000125
的所需分组的数目的上限是
Figure BDA0001713583420000126
应该理解的是,尽管本文试图保护的结构、概念和技术的实施例可以在RS和RLNC码的上下文中描述,但是这样的结构、概念和技术不限于码的这种特定组合,而是可以应用于任何线性码。例如,本文描述的技术可以应用于各种线性码,例如块码、卷积码和无速率码。
图4是示出了可以在多码存储系统(例如,图1的系统和/或图2的系统200)内实现的说明性处理的流程图。在某些实施例中,处理可以在存储客户端(例如,图1和图2中的客户端102)内实现。这里表示为“处理块”的矩形元素(由元素402代表)表示计算机软件指令或指令组。
可选地,处理块可以表示由诸如数字信号处理器(DSP)电路或专用集成电路(ASIC)之类的功能等效电路执行的步骤。流程图没有描绘任何特定编程语言的语法,而是示出本领域普通技术人员中的一个需要制造电路或生成计算机软件以执行特定装置所需的处理的功能信息。应该注意的是,为了清楚起见,可以省略许多常规程序元素,例如循环和变量的初始化以及临时变量的使用。所描述的方框的具体顺序仅仅是说明性的,并且可以在不偏离本文试图保护的概念、结构和技术的精神的情况下进行变化。因此,除非另有说明,否则下面描述的方框是无序的,意味着在可能的情况下,可以以任何方便的或期望的顺序执行由方框表示的功能。在一些实施例中,处理块分别代表可在软件和/或硬件中实现的有限状态机内的状态和转换。
参考图4,方法400开始于方框402和404,其中接收与文件相关联的第一组符号(“第一符号”)以及也与该文件相关联的第二组符号(“第二符号”)。第一或第二符号是使用线性码编码的编码符号。
在一些实施例中,第一符号和第二符号可以从不同的分布式存储系统(例如,不同的云存储系统)接收。在其他实施例中,第一符号和第二符号可以从相同的分布式存储系统(例如,经历从旧版码迁移到下一代码的系统)接收。
在一些实施例中,使用第一线性码对第一符号进行编码,并且使用不同的第二线性码对第二符号进行编码,其中第一线性码和第二线性码使用不同的生成矩阵、不同的有限域或不同的块大小。在某些实施例中,第一符号或第二符号是使用前向纠错(FEC)码编码的编码符号。在一些实施例中,第一符号或第二符号是使用随机线性网络码(RLNC)编码的编码符号。在特定实施例中,第一符号或第二符号是使用里德所罗门(RS)码编码的编码符号。在某些实施例中,第一符号或第二符号是使用低密度奇偶校验(LDPC)码编码的编码符号。在一些实施例中,第一符号或第二符号是使用Luby变换(LT)码编码的编码符号。
在框406处,第一和第二编码符号被联合解码以恢复文件。在一些实施例中,联合解码第一和第二编码符号以恢复文件包括基于第一码使用的生成矩阵和第二码使用的生成矩阵构来建联合生成矩阵,并且使用联合生成矩阵、第一编码符号和第二编码符号来恢复文件。
在特定实施例中,在第一和第二线性码使用不同的生成矩阵的情况下,联合解码第一和第二编码符号以恢复文件包括:基于由第一码使用的生成矩阵和由第二码所使用的生成矩阵来构造联合生成矩阵;并且使用联合生成矩阵、第一编码符号和第二编码符号来恢复文件。
在一些实施例中,其中第一和第二线性码使用不同的有限域,联合解码包括将第一和第二编码符号映射到公共子域;导出针对第一和第二码符号的映射表,映射表用于基于第一和第二有限域的域大小将第一和第二有限域的运算映射到映射的第一和第二编码符号上的运算;并使用映射的第一和第二编码符号以及映射表来恢复文件。在一些实施例中,第一和第二线性码中的每一个使用二进制扩展域,其中映射第一和第二编码符号包括将第一和第二编码域映射到公共二进制扩展域(例如,
Figure BDA0001713583420000141
)。
在其中第一线性码和第二线性码使用不同块大小的特定实施例中,联合解码可以包括:取决于包含在较大源块大小的编码符号中的编码符号的数量,从较小源块大小的编码符号的生成矩阵中提取一个或多个子矩阵;从较大源块大小的编码符号的生成矩阵中提取一个或多个子矩阵;将子矩阵级联为联合矩阵;并使用联合矩阵来恢复文件。在某些实施例中,确定提取的子矩阵的数量,使得两个码在被覆盖的源符号中具有显著的重叠。
图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所述的方法,其中,所述第一组源符号和所述第二组源符号中的源符号的大小由有限域的元素的大小确定。
4.如权利要求1所述的方法,其中:
所述第一组符号是从对所述第一组源符号进行操作的第一有限域
Figure FDA0003059951500000011
提供的,并且所述第二组符号是从对所述第二组源符号进行操作的第二、不同的有限域
Figure FDA0003059951500000012
提供的。
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中任一项所述的步骤。
CN201780005371.0A 2016-01-29 2017-01-27 用于多码分布式存储的装置和方法 Active CN108432170B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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的大数据存储与检索方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
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