Storing data across groups of storage nodes
First Claim
1. A method performed by one or more computers, the method comprising:
- receiving (n−
f) data chunks for storage across n groups of storage nodes, wherein n and f are greater than or equal to two, and wherein (n−
f) is greater than or equal to one;
generating (f−
1) error-correcting code chunks using an error-correcting code and the (n−
f) data chunks;
storing the (n−
f) data chunks at a first group of storage nodes; and
storing each data chunk of the (n−
f) data chunks at a respective second group of storage nodes of a plurality of second groups of storage nodes and storing each code chunk of the (f−
1) code chunks at a respective third group of storage nodes of a plurality of third groups of storage nodes, wherein each second group of storage nodes and each third group of storage nodes is distinct from each other and from the first group of storage nodes;
wherein;
each of the n groups of storage nodes corresponds to one of n vertices in a complete block design of size n, the complete block design including
2 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for storing data reliably across groups of storage nodes. In one aspect, a method includes receiving (n−f) data chunks for storage across n groups of storage nodes and generating (f−1) error-correcting code chunks using an error-correcting code and the (n−f) data chunks. The (n−f) data chunks are stored at a first group of storage nodes. Each data chunk of the (n−f) data chunks is stored at a respective second group of storage nodes. Each code chunk of the (f−1) code chunks is stored at a respective third group of storage nodes. Each second group of storage nodes and each third group of storage nodes is distinct from each other and from the first group of storage nodes.
-
Citations
21 Claims
-
1. A method performed by one or more computers, the method comprising:
-
receiving (n−
f) data chunks for storage across n groups of storage nodes, wherein n and f are greater than or equal to two, and wherein (n−
f) is greater than or equal to one;generating (f−
1) error-correcting code chunks using an error-correcting code and the (n−
f) data chunks;storing the (n−
f) data chunks at a first group of storage nodes; andstoring each data chunk of the (n−
f) data chunks at a respective second group of storage nodes of a plurality of second groups of storage nodes and storing each code chunk of the (f−
1) code chunks at a respective third group of storage nodes of a plurality of third groups of storage nodes, wherein each second group of storage nodes and each third group of storage nodes is distinct from each other and from the first group of storage nodes;
wherein;each of the n groups of storage nodes corresponds to one of n vertices in a complete block design of size n, the complete block design including - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system of one or more computers configured to perform operations comprising:
-
receiving (n−
f) data chunks for storage across n groups of storage nodes, wherein n and f are greater than or equal to two, and wherein (n−
f) is greater than or equal to one;generating (f−
1) error-correcting code chunks using an error-correcting code and the (n−
f) data chunks;storing the (n−
f) data chunks at a first group of storage nodes; andstoring each data chunk of the (n−
f) data chunks at a respective second group of storage nodes of a plurality of second groups of storage nodes and storing each code chunk of the (f−
1) code chunks at a respective third group of storage nodes of a plurality of third groups of storage nodes, wherein each second group of storage nodes and each third group of storage nodes is distinct from each other and from the first group of storage nodes;
wherein;each of the n groups of storage nodes corresponds to one of n vertices in a complete block design of size n, the complete block design including - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory computer storage medium encoded with a computer program, the program comprising instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:
-
receiving (n−
f) data chunks for storage across n groups of storage nodes, wherein n and f are greater than or equal to two, and wherein (n−
f) is greater than or equal to one;generating (f−
1) error-correcting code chunks using an error-correcting code and the (n−
f) data chunks;storing the (n−
f) data chunks at a first group of storage nodes; andstoring each data chunk of the (n−
f) data chunks at a respective second group of storage nodes of a plurality of second groups of storage nodes and storing each code chunk of the (f−
1) code chunks at a respective third group of storage nodes of a plurality of third groups of storage nodes, wherein each second group of storage nodes and each third group of storage nodes is distinct from each other and from the first group of storage nodes;
wherein;each of the n groups of storage nodes corresponds to one of n vertices in a complete block design of size n, the complete block design including - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
Specification