Patent ID: 7596673

Claim:
A method of allocating storage for storing data across a plurality of N storage devices S 1 . . . S N , 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 C MAX of a storage device S MAX having a largest capacity of the plurality of storage devices S 1 . . . S N ; b) determining a total storage capacity C of all of the plurality of storage devices S 1 ⁢ … ⁢ ⁢ S N ⁢ ⁢ as ⁢ ⁢ C = ∑ K = 1 N ⁢ C K , where K is a counting integer; c) defining a maximum total number of fountain codewords F = ∑ K = 1 N ⁢ F K that could be stored in the plurality of storage devices S 1 . . . S N ; d) defining F MAX as a maximum number of fountain codewords that would be lost if the data in S MAX is lost; e) estimating a target ratio of capacity to fountain codewords V as V≈C/F≈(C−C MAX )/(F−F MAX )≈(C−C MAX )/R, where R is a number of fountain codewords required to recover C MAX if the data in S MAX is lost; f) using the estimate of the value of V to estimate the values of F 1 . . . F N as F K =Int(C K /V); g) adjusting the estimated values of F 1 . . . F N by addition of a rounding factor F K =Int(C K /V+L) to assure that ( ∑ K = 1 N ⁢ F K ) - F MAX ≥ R ; and h) allocating fountain codewords, and storing data to the storage devices S 1 . . . S N in proportion to the estimated values of F 1 . . . F N .