TECHNICAL FIELD

The present disclosure relates generally to erasure coding, and more specifically to techniques for improving efficiency of erasure coding in distributed storage systems.

BACKGROUND

Erasure code is a forward error correction code used to control errors for erasures in storage systems. Erasure coding involves transforming an original message split into k chunks into a transformed message having n chunks (where n>k) such that the original message can be recovered from a subset of the transformed message. A systematic erasure code is an erasure code in which the input original message is embedded into the encoded transformed message. The transformed messages include redundant portions of parity data stored across different storage locations that may be used for recovering lost data. A maximum distance separable (MDS) erasure code has the property that any k out of the n symbols is sufficient to recover the original message.

Erasure coding techniques have evolved as storage systems have evolved. In particular, the advent of distributed storage systems has resulted in the development of new erasure coding techniques. When data is recovered using an erasure code in a distributed storage system, data is transferred among at least some of the nodes. As distributed storage systems become more important, further improvements in erasure coding are desired.

It would therefore be advantageous to provide a solution that would provide improved erasure coding techniques.

SUMMARY

A summary of several example embodiments of the disclosure follows. This summary is provided for the convenience of the reader to provide a basic understanding of such embodiments and does not wholly define the breadth of the disclosure. This summary is not an extensive overview of all contemplated embodiments, and is intended to neither identify key or critical elements of all embodiments nor to delineate the scope of any or all aspects. Its sole purpose is to present some concepts of one or more embodiments in a simplified form as a prelude to the more detailed description that is presented later. For convenience, the term “some embodiments” or “certain embodiments” may be used herein to refer to a single embodiment or multiple embodiments of the disclosure.

Certain embodiments disclosed herein include a method for erasure coding. The method comprises: distributing a plurality of data chunks according to a mirroring scheme, wherein the plurality of data chunks is distributed as a plurality of rows among a plurality of non-volatile memory (NVM) nodes, wherein the mirroring scheme defines a plurality of groups, each group including a subset of the plurality of data chunks, wherein each data chunk in a group has a role corresponding to a relative position of the data chunk within the group, wherein data chunks included in the plurality of groups having the same relative positions within their respective groups have the same role, wherein each row of the plurality of rows includes at least one summation data chunk that is a function of at least one data chunk included in the row and of at least one extra data chunk included in at least one other row.

Certain embodiments disclosed herein also include a non-transitory computer readable medium having stored thereon causing a processing circuitry to execute a process, the process comprising: distributing a plurality of data chunks according to a mirroring scheme, wherein the plurality of data chunks is distributed as a plurality of rows among a plurality of non-volatile memory (NVM) nodes, wherein the mirroring scheme defines a plurality of groups, each group including a subset of the plurality of data chunks, wherein each data chunk in a group has a role corresponding to a relative position of the data chunk within the group, wherein data chunks included in the plurality of groups having the same relative positions within their respective groups have the same role, wherein each row of the plurality of rows includes at least one summation data chunk that is a function of at least one data chunk included in the row and of at least one extra data chunk included in at least one other row.

Certain embodiments disclosed herein also include a system for erasure coding. The system comprises: a processing circuitry; and a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to: distribute a plurality of data chunks according to a mirroring scheme, wherein the plurality of data chunks is distributed as a plurality of rows among a plurality of non-volatile memory (NVM) nodes, wherein the mirroring scheme defines a plurality of groups, each group including a subset of the plurality of data chunks, wherein each data chunk in a group has a role corresponding to a relative position of the data chunk within the group, wherein data chunks included in the plurality of groups having the same relative positions within their respective groups have the same role, wherein each row of the plurality of rows includes at least one summation data chunk that is a function of at least one data chunk included in the row and of at least one extra data chunk included in at least one other row.

