IP Library Granted Patent US 8,458,287
Granted Patent B2
US 8,458,287 · App. 12/534,024 · Granted Jun 4, 2013

Erasure coded storage aggregation in data centers

Inventors: Raymond E. Ozzie (Seattle, WA); John D. Mehr (Kenmore, WA); Siddhartha Puri (Sammamish, WA); Samuel J. McKelvie (Seattle, WA); Bradley Calder (Bellevue, WA); Matt Pope (Seattle, WA)
Assignee: Microsoft 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 8,458,287
App. No.
12/534,024
Granted
Jun 4, 2013
Kind
B2
Abstract

Embodiments of erasure coded storage aggregation are disclosed. The erasure coded storage aggregation includes storing a data file as erasure coded fragments in a plurality of nodes of one or more data centers. The erasure coded storage aggregation further includes monitoring an access frequency of the data file. Based on the comparison between the access frequency and a predetermined threshold, the data file is either reconstructed from the erasure coded fragments and stored in a storage node or retained as erasure coded fragments in the plurality of nodes of the one or more data centers.

Claims (50)

1. One or more device memories storing computer-executable instructions that, when executed, cause one or more processors to perform acts comprising:

selecting, by one or more processors configured with executable instructions, a first plurality of nodes of at least one data center to store a data file as a first set of erasure coded fragments;

storing the data file as the first set of erasure coded fragments in the first plurality of nodes of the at least one data center;

monitoring, during a first time period, a first access frequency of the data file that is stored as the first set of erasure coded fragments;

determining that the first access frequency of the data file meets or exceeds a first predetermined frequency threshold during the first time period or after the first time period expires;

reconstructing the data file from at least a portion of the first set of erasure coded fragments after determining that the first access frequency of the data file meets or exceeds the first predetermined frequency threshold;

storing the reconstructed data file in a storage node;

monitoring, during a second time period, a second access frequency of the reconstructed data file that is stored in the storage node;

determining that the second access frequency of the reconstructed data file is below a second predetermined frequency threshold during the second time period or after the second time period expires;

selecting a second plurality of nodes to store the reconstructed data file as a second set of erasure coded fragments, wherein the second plurality of nodes is different than the first plurality of nodes; and

storing the reconstructed data file as the second set of erasure coded fragments in the second plurality of nodes after determining that the second access frequency of the reconstructed data file is below the second predetermined frequency threshold.

2. The one or more device memories of claim 1 , wherein the storing the data file as the first set of erasure coded fragments further includes performing hierarchical erasure coding on the data file to obtain erasure coded fragments of the data file.

3. The one or more device memories of claim 1 , wherein the reconstructing the data file further includes:

retrieving at least some of the first set of erasure coded fragments from the first plurality of nodes; and

reconstructing the data file from the retrieved at least some of the first set of erasure coded fragments.

4. The one or more device memories of claim 3 , wherein the acts further comprise:

receiving the data file from a client device prior to storing the data file as the first set of erasure coded fragments;

receiving an instruction to retrieve the data file from the client device; and

providing the reconstructed data file to the client device.

5. The one or more device memories of claim 3 , wherein the acts further comprise storing metadata in multiple locations of the first plurality of nodes, and wherein the retrieving includes retrieving the at least some of the first set of erasure coded fragments using the stored metadata.

6. The one or more device memories of claim 1 , wherein the acts further comprise selecting the first plurality of nodes from one or more computation nodes or one or more storage nodes.

7. The one or more device memories of claim 1 , wherein the acts further comprise selecting the first plurality of nodes from available nodes on the at least one data center, each of the selected first plurality of nodes being selected based at least in part on an estimated availability, an estimated health status or a proximity to another selected node.

8. The one or more device memories of claim 1 , wherein the plurality of nodes comprises a first plurality of nodes, and wherein the acts further comprise:

monitoring an integrity of each of the first set of erasure coded fragments that are stored in the first plurality of nodes; and

reconstructing the data file when the monitoring determines that a predetermined quantity of the first set of erasure coded fragments with a valid integrity is less than a predetermined minimal threshold.

9. A method comprising:

selecting, by one or more processors configured with executable instructions, a first plurality of nodes of at least one data center to store a data file as a first set of erasure coded fragments;

storing the data file as the first set of erasure coded fragments in the first plurality of nodes of the at least one data center;

monitoring, during a first time period, a first access frequency of the data file that is stored as the first set of erasure coded fragments; determining that the first access frequency of the data file meets or exceeds a first predetermined frequency threshold during the first time period or after the first time period expires;

reconstructing the data file from at least a portion of the first set of erasure coded fragments after determining that the first access frequency of the data file meets or exceeds the first predetermined frequency threshold;

storing the reconstructed data file in a storage node;

monitoring, during a second time period, a second access frequency of the reconstructed data file that is stored in the storage node; determining that the second access frequency of the reconstructed data file is below a second predetermined frequency threshold during the second time period or after the second time period expires;

selecting a second plurality of nodes to store the reconstructed data file as a second set of erasure coded fragments, wherein the second plurality of nodes is different than the first plurality of nodes; and

storing the reconstructed data file as the second set of erasure coded fragments in the second plurality of nodes after determining that the second access frequency of the reconstructed data file is below the second predetermined frequency threshold.

10. The method of claim 9 , wherein the storing the data file as the first set of erasure coded fragments comprises performing hierarchical erasure coding on the data file to obtain erasure coded fragments of the data file.

11. The method of claim 9 , wherein the reconstructing the data file comprises:

retrieving at least some of the first set of erasure coded fragments from the first plurality of nodes; and

reconstructing the data file from the retrieved at least some of the first set of erasure coded fragments.

12. The method of claim 11 , further comprising:

receiving the data file from a client device prior to storing the data file as the first set of erasure coded fragments;

receiving an instruction to retrieve the data file from the client device; and providing the reconstructed data file to the client device.

13. The method of claim 11 , further comprising storing metadata in multiple locations of the first plurality of nodes, and wherein the retrieving includes retrieving the at least some of the first set of erasure coded fragments using the stored metadata.

14. The method of claim 9 , further comprising selecting the first plurality of nodes from one or more computation nodes or one or more storage nodes.

15. The method of claim 9 , further comprising selecting the first plurality of nodes from available nodes on the at least one data center, each of the selected first plurality of nodes being selected based at least in part on an estimated availability, an estimated health status or a proximity to another selected node.

16. The method of claim 9 , further comprising: monitoring an integrity of each of the first set of erasure coded fragments that are stored in the first plurality of nodes; and

reconstructing the data file when monitoring the integrity determines that a predetermined quantity of the first set of erasure coded fragments with a valid integrity is less than a predetermined minimal threshold.

17. The method of claim 9 , wherein the first plurality of nodes and the second plurality of nodes include at least one different node.

18. The one or more device memories of claim 1 , wherein the first predetermined frequency threshold and the second predetermined frequency threshold are a same threshold.

19. The one or more device memories of claim 1 , wherein the first predetermined frequency threshold and the second predetermined frequency threshold are a different threshold.

20. The method of claim 9 , wherein the first predetermined frequency threshold and the second predetermined frequency threshold are a same threshold.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2009
From: OZZIE, RAYMOND E.; MEHR, JOHN D.; PURI, SIDDHARTHA; MCKELVIE, SAMUEL J.; CALDER, BRADLEY; POPE, MATT
To: MICROSOFT CORPORATION
Reel/Frame 023387/0399 →
Continuity (1)
Related Publication 20110029840A1 · Feb 3, 2011