IP Library Granted Patent US 7,979,771
Granted Patent B2
US 7,979,771 · App. 11/696,654 · Granted Jul 12, 2011

Erasure coding technique for scalable and fault tolerant storage system

Assignee: Permabit Technology Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,979,771
App. No.
11/696,654
Granted
Jul 12, 2011
Kind
B2
Abstract

A method for encoding a block of data to allow it to be stored or transmitted correctly in the face of accidental or deliberate modifications, the method including constructing a number n greater than one of original components, each of which is derived from the block and each of which is smaller than the block, and combining original components to construct a number m greater than one of new components, wherein each of the new components is smaller than the sum of the sizes of the original components combined to produce it, wherein the block can be reconstructed from any set of n different components selected from the original components and new components, and wherein a set of n different components selected from the original components and new components contains more redundant information about the block than the set of n original components.

Claims (29)

1. A method for encoding a block of data to allow it to be stored or transmitted correctly in the face of accidental or deliberate modifications, the method comprising:

constructing a number n greater than one of original components, each of which is derived from the block and each of which is smaller than the block; and

combining original components to construct a number m greater than one of new components, the combining comprising:

scaling original components to determine scaled original components; and

accumulating scaled original components to determine new components;

wherein each of the new components is smaller than the sum of the sizes of the original components combined to produce it;

wherein the block can be reconstructed from any set of n different components selected from the original components and new components;

wherein the size of a one of the new components is larger than the size of a one of the original components that were combined to construct it;

wherein the scaling step includes an operation in which a first original component is used to determine a first operand to a multiplication operation of a non-finite commutative ring with identity; and

wherein the accumulating step includes an operation in which a first scaled original component is used to determine a first operand to an addition operation of the non-finite commutative ring with identity.

2. The method of claim 1 wherein the addition operation has a second operand derived from a second scaled original component.

3. The method of claim 1 wherein the sum of the sizes of each of the original components plus the sum of the sizes of each of the new components is less than one percent greater than (1+m/n) times the size of the block.

4. The method of claim 1 wherein the number of new components that can be constructed from a fixed set of n original components is not predetermined.

5. The method of claim 1 wherein the addition operation is ordinary integer addition.

6. The method of claim 1 wherein the addition operation is bitwise XOR.

7. The method of claim 1 wherein at least n components selected from the original components and new components are needed to reconstruct the block.

8. The method of claim 1 wherein the multiplication operation is ordinary integer multiplication.

9. The method of claim 1 wherein the new and the original components are sequences of data elements of a fixed size, and the size of a component is the number of the fixed size data elements that constitute it.

10. The method of claim 1 wherein each of the original components and new components is preferentially stored on a storage subsystem that is different than that on which any other of the original components and new components is stored.

11. The method of claim 10 wherein the storage subsystem comprises at least one disk drive.

12. The method of claim 1 wherein the first operand to the multiplication operation is an integer that has a binary representation that comprises bits of the first original component, and a second operand to the multiplication operation is a scaling factor.

13. The method of claim 1

wherein the first operands to the multiplication operation is an integer determined from the first original component and a second operand to the multiplication operation is a scaling factor;

wherein the addition operation combines the scaled integer with another integer derived from original components; and

wherein the multiplication operation is the same as integer multiplication whenever one of its two operands is positive and a power of two.

14. The method of claim 12 or 13 wherein the scaling factor is a power of two with an exponent determined by a multiplication modulo a prime number.

15. The method of claim 1 wherein the multiplication operation is a non-cyclic shift operation.

16. The method of claim 15 wherein the non-cyclic shift operation is implemented as a memory addressing operation.

17. The method of claim 15 wherein a shift-amount of the non-cyclic shift operation is determined, at least in part, by a multiplication modulo a prime number.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2017
From: PERMABIT TECHNOLOGY CORPORATION
To: RED HAT, INC.
Reel/Frame 043833/0304 →
MERGER Recorded Jan 28, 2010
From: BURNSIDE ACQUISITION, LLC
To: PERMABIT TECHNOLOGY CORPORATION
Reel/Frame 023861/0432 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2007
From: PERMABIT, INC.
To: BURNSIDE ACQUISITION, LLC
Reel/Frame 020155/0885 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2007
From: MARGOLUS, NORMAN H.; JASKIEWICZ, THOMAS
To: PERMABIT, INC.
Reel/Frame 019576/0450 →
Continuity (2)
Provisional Application 60789016 · Apr 4, 2006
Related Publication 20070245083A1 · Oct 18, 2007