An “erasure code” is an encoding of multiple different sets of data. Redundant copies of data are maintained in such erasure codes, thereby utilizing only a fraction of the storage capacity of unencoded copies. Erasure codes are efficiently generated, with a minimum of processing resources utilizing
An “erasure code” is an encoding of multiple different sets of data. Redundant copies of data are maintained in such erasure codes, thereby utilizing only a fraction of the storage capacity of unencoded copies. Erasure codes are efficiently generated, with a minimum of processing resources utilizing XOR functionality. Additionally, erasure codes are generated from local data, thereby avoiding the consumption of network resources. At least one unencoded copy of a set of data is maintained, while the remaining, redundant copies are encoded into erasure codes. Requests for data are provided from the unencoded copy. Should it fail, a new unencoded copy can be generated by another computing device having access to both an erasure code as well as unencoded copies of the other data that was also pressed into that erasure code. Multiple failures can be survived through recursive application of such a decoding of encoded data.
대표청구항▼
1. A computing device comprising: one or more processing units; andone or more computer-readable media comprising computer-executable instructions, which, when executed by the one or more processing units, cause the computing device to:select two or more extents, each of the selected two or more ext
1. A computing device comprising: one or more processing units; andone or more computer-readable media comprising computer-executable instructions, which, when executed by the one or more processing units, cause the computing device to:select two or more extents, each of the selected two or more extents having a locally stored instance;determine, for each of the selected extents, that another instance of that same extent is stored in an unencoded form on a distinct failure domain;generate an erasure code from the locally stored instances of the selected two or more extents;delete the locally stored instances of the selected two or more extents after the erasure code is generated; andretaining the erasure code in place of the deleted locally stored instances of the selected two or more extents;wherein any one of the selected two or more extents can be locally regenerated from the generated erasure code and the others of the selected two or more extents as obtained from distinct failure domains. 2. The computing device of claim 1, wherein the computer executable instructions causing the computing device to generate the erasure code from the locally stored instances of the selected two or more extents comprise computer-executable instructions, which, when executed by the one or more processing units, cause the computing device to XOR the locally stored instances of the selected two or more extents. 3. The computing device of claim 1, wherein the computer executable instructions causing the computing device to select the locally stored instances of the two or more extents comprise computer-executable instructions, which, when executed by the one or more processing units, cause the computing device to select the two or more extents such that the locally stored instances of the selected extents are of equivalent size. 4. The computing device of claim 1, wherein the computer executable instructions causing the computing device to select the locally stored instances of the two or more extents comprise computer-executable instructions, which, when executed by the one or more processing units, cause the computing device to select the two or more extents such that a content of one of the selected extents is determined to have a probability of being requested equivalent to that of a content of each of the others of the selected extents. 5. The computing device of claim 1, wherein the two distinct failure domains comprise two distinct storage media of a redundant storage system. 6. The computing device of claim 1, wherein the computer readable media comprise further computer-executable instructions for generating an instance of a requested extent from the erasure code, after having deleted the requested extent, the requested extent being one of the selected extents, the further computer-executable instructions, when executed by the one or more processing units, causing the computing device to: identify, after the deleting after the erasure code generation, all of the selected extents other than the requested extent, whose locally stored instances were also pressed into the erasure code;request the identified other extents from locations where instances of the identified other extents are stored in an unencoded form;receive, in response to the requesting, instances of the identified other extents in the unencoded form; andgenerate the requested extent from the erasure code and the received instances of the other extents in the unencoded form. 7. The computer-readable media of claim 6, wherein the computer-readable media comprise further computer-executable instructions, which, when executed by the one or more processing units, cause the computing device to: request, from one or more name servers, the locations where instances of the identified other extents are stored in the unencoded form. 8. The computer-readable media of claim 6, wherein the computer-readable media comprise further computer-executable instructions, which, when executed by the one or more processing units, cause the computing device to: receive a request for the extent;determine whether the deleting after the erasure code generation has already been performed; andonly perform the identifying, the requesting, the receiving, and the generating the extent if the deleting after the erasure code generation has already been performed. 9. A method of redundantly storing computer-readable data onto computer-readable storage media, the method comprising the steps of: receiving data for storage;generating a first extent, the first extent comprising at least part of the data;storing each of two or more instances of the generated first extent on two or more distinct failure domains;selecting, at a first one of the two or more distinct failure domains, an instance of the first extent that is locally stored at the first one of the two or more distinct failure domains and an instance of at least one other extent that is also locally stored at the first one of the two or more distinct failure domains;determining that the selected at least one other extent has another instance of it stored in a third failure domain distinct from both of the two or more distinct failure domains;generating, at the first one of the two or more distinct failure domains, the erasure code from the instance of the first extent and the instance of the at least one other extent;deleting, from the first one of the two or more distinct failure domains, the instance of the first extent and the instance of the at least one other extent after the erasure code is generated; andretaining, on the first one of the two or more distinct failure domains, the erasure code in place of the deleted instance of the first extent and the deleted instance of the at least one other extent;wherein any one of the first extent and the at least one other extent can be regenerated on the first one of the two or more distinct failure domains from the generated erasure code and the others of the first extent and the at least one other extent as obtained from the distinct failure domains or the third failure domain. 10. The method of claim 9, wherein the generating the erasure code from the instance of the first extent and the instance of the at least one other extent comprises generating the erasure code, at the first one of the two or more distinct failure domains, by XORing the instance of the first extent and the instance of the at least one other extent. 11. The method of claim 9, further comprising the steps of: receiving a request for the first extent;identifying, after the deleting after the erasure code generation, all of the at least one other extent that were pressed into the erasure code;requesting the identified extents from locations where instances of the identified extents are stored in an unencoded form;receiving, in response to the requesting, instances of the identified extents in the unencoded form; andgenerating an instance of the first extent from the erasure code and the received instances of the identified extents in the unencoded form. 12. A redundant data storage system comprising: a first failure domain comprising a first instance of a first extent and a first instance of a second extent;a second failure domain, different from the first failure domain, the second failure domain comprising a second instance of the first extent;a third failure domain, different from both the first failure domain and the second failure domain, the third failure domain comprising a second instance of the second extent; anda first set of one or more processing units executing computer-executable instructions, the execution of the computer-executable instructions causing the first set of the one or more processing units to perform steps comprising:generating a first erasure code at the first failure domain from extents comprising the first instance of the first extent and the first instance of the second extent;deleting the first instance of the first extent and the first instance of the second extent from the first failure domain after the first erasure code is generated; andretaining, on the first failure domain, the erasure code in place of the deleted first instance of the first extent and the deleted first instance of the second extent;wherein any one of the selected two or more extents can be regenerated on the first failure domain from the generated erasure code and the others of the selected two or more extents as obtained from the second and third failure domains. 13. The redundant data storage system of claim 12, further comprising: a fourth failure domain, different from each of the first, second and third failure domains, the fourth failure domain comprising: a third instance of the first extent and a third instance of the second extent; anda second set of one or more processing units executing computer-executable instructions, the execution of the computer-executable instructions causing the second set of the one or more processing units to perform steps comprising:generating a second erasure code at the fourth failure domain from the third instance of the first extent and the third instance of the second extent; anddeleting the third instance of the first extent and the third instance of the second extent from the fourth failure domain after the erasure code is generated. 14. The redundant data storage system of claim 12, wherein the first and second extents are of equivalent size. 15. The redundant data storage system of claim 12, wherein a content of the first extent is determined to have a probability of being requested equivalent to that of a content of the second extent. 16. The redundant data storage system of claim 12, wherein the first, second and third failure domains each comprise distinct portions of a single data center that minimize a sharing of any common infrastructure. 17. The redundant data storage system of claim 12, wherein the first, second and third failure domains each comprise distinct storage media. 18. The redundant data storage system of claim 12, wherein the first set of one or more processing units executes further computer-executable instructions, the execution of the further computer-executable instructions causing the first set of the one or more processing units to perform steps comprising: receiving, after the deleting after the erasure code generation, a request for the first extent;requesting a third instance of the second extent from the third failure domain; andgenerating a third instance of the first extent from the first erasure code and the third instance of the second extent. 19. The redundant data storage system of claim 18, further comprising: a fourth failure domain, different from each of the first, second and third failure domains, the fourth failure domain comprising: a second erasure code generated from the second extent and a third extent, differing from the first extent and the second extent; anda second set of one or more processing units executing computer-executable instructions, the execution of the computer-executable instructions causing the second set of the one or more processing units to perform steps comprising:requesting the third extent from a location where an instance of the third extent is stored in an unencoded form; andgenerating a third copy of the second extent from the second erasure code and received instances of the other extents in the unencoded form. 20. The redundant data storage system of claim 12, further comprising one or more name servers maintaining a location of the first erasure code and each of the instances of the first extent and the second extent.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (7)
Li, Jin; He, Li-Wei; Liang, Jian, Distributed data storage using erasure resilient coding.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.