Failure tolerant data storage
First Claim
1. A method of allocating storage for storing data across a plurality of N storage devices S1 . . . SN, wherein at least one of the storage devices has a storage capacity that is not equal to a storage capacity of others of the storage devices, the method comprising:
- a) determining a maximum capacity CMAX of a storage device SMAX having a largest capacity of the plurality of storage devices S1 . . . SN;
b) determining a total storage capacity C of all of the plurality of storage devices
where K is a counting integer;
c) defining a maximum total number of fountain codewords
that could be stored in the plurality of storage devices S1 . . . SN;
d) defining FMAX as a maximum number of fountain codewords that would be lost if the data in SMAX is lost;
e) estimating a target ratio of capacity to fountain codewords V as V≈
C/F≈
(C−
CMAX)/(F−
FMAX)≈
(C−
CMAX)/R, where R is a number of fountain codewords required to recover CMAX if the data in SMAX is lost;
f) using the estimate of the value of V to estimate the values of F1 . . . FN as FK=Int(CK/V);
g) adjusting the estimated values of F1 . . . FN by addition of a rounding factor FK=Int(CK/V+L) to assure that
and h) allocating fountain codewords, and storing data to the storage devices S1 . . . SN in proportion to the estimated values of F1 . . . FN.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for storing data across a plurality of N storage devices S1 . . . SN, wherein at least one of the storage devices has a storage capacity that not equal to a storage capacity of others of the storage devices involves identifying a storage device SMAX having a largest capacity of the plurality of storage devices S1 . . . SN; encoding the data with a erasure encoder to produce F erasure codewords, where F=
with K being a counting integer; and distributing the erasure codewords among the N storage devices S1 . . . SN in approximate proportion to the storage capacity CK of each of the N storage devices S1 . . . SN subject to the constraint that enough erasure codewords are stored in each of the N storage devices to assure that if any one of the storage devices become unavailable, all of the data stored in the systems can be restored using the fountain codewords stored in the remaining storage devices S1 . . . SN. In accordance with certain embodiments consistent with the present invention, the erasure codewords are fountain codewords. This abstract is not to be considered limiting, since other embodiments may deviate from the features described in this abstract.
-
Citations
40 Claims
-
1. A method of allocating storage for storing data across a plurality of N storage devices S1 . . . SN, wherein at least one of the storage devices has a storage capacity that is not equal to a storage capacity of others of the storage devices, the method comprising:
-
a) determining a maximum capacity CMAX of a storage device SMAX having a largest capacity of the plurality of storage devices S1 . . . SN;
b) determining a total storage capacity C of all of the plurality of storage devices
where K is a counting integer;
c) defining a maximum total number of fountain codewords
that could be stored in the plurality of storage devices S1 . . . SN;
d) defining FMAX as a maximum number of fountain codewords that would be lost if the data in SMAX is lost;
e) estimating a target ratio of capacity to fountain codewords V as V≈
C/F≈
(C−
CMAX)/(F−
FMAX)≈
(C−
CMAX)/R, where R is a number of fountain codewords required to recover CMAX if the data in SMAX is lost;
f) using the estimate of the value of V to estimate the values of F1 . . . FN as FK=Int(CK/V);
g) adjusting the estimated values of F1 . . . FN by addition of a rounding factor FK=Int(CK/V+L) to assure that
andh) allocating fountain codewords, and storing data to the storage devices S1 . . . SN in proportion to the estimated values of F1 . . . FN. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method for storing data across a plurality of N storage devices S1 . . . SN, with respective capacities C1 . . . CN, wherein at least one of the storage devices has a storage capacity that not equal to a storage capacity of others of the storage devices, the method comprising:
-
encoding the data with an erasure encoder to produce erasure codewords; and
distributing the erasure codewords among the N storage devices S1 . . . SN in approximate proportion to the storage capacity CK of each of the N storage devices S1 . . . SN subject to the constraint that enough erasure codewords are stored in each of the N storage devices, to assure that if any one of the storage devices, SP, becomes unavailable, all of the data in the system can be restored using the erasure codewords stored in the remaining storage devices S1 . . . SN excluding SP. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. An arrangement for storing data, comprising in combination:
-
a plurality of N storage devices S1 . . . SN, wherein at least one of the storage devices has a storage capacity that not equal to a storage capacity of others of the storage devices;
wherein a storage device SMAX has a largest capacity of the plurality of storage devices S1 . . . SN;
a fountain encoder that encodes the data into F fountain codewords, wherein
with K being a counting integer; and
wherein the fountain encoder distributes the fountain codewords among the N storage devices S1 . . . SN in approximate proportion to the storage capacity CK of each of the N storage devices S1 . . . SN subject to the constraint that enough fountain codewords are stored in each of the N storage devices, to assure that all of the data in all of the N storage devices can be recovered if any one of the N storage devices SP is lost using the fountain codewords stored in the remaining storage devices S1 . . . SN excluding SP. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A method for storing data across a plurality of N storage devices S1 . . . SN, wherein at least certain of the storage devices have a storage capacity CMIN=CJ≦
- CK . . . ≦
CMAX, and CMIN<
CMAX with the method comprising;
establishing a first capacity band equal in capacity to CMIN in each of the storage devices;
encoding a collection of source data with an erasure encoder to produce FJ erasure codewords;
allocating the FJ erasure codewords uniformly among the N storage devices S1 . . . SN;
establishing a second capacity band equal in capacity to CK−
CJ in each of the storage devices having capacity≧
CJ;
encoding a collection of source data with an erasure encoder to produce FK erasure codewords;
allocating the FK erasure codewords uniformly among the storage devices S1 . . . SN having capacity≧
CJ. - View Dependent Claims (35, 36, 37, 38, 39, 40)
- CK . . . ≦
Specification