IP Library Granted Patent US 8,464,096
Granted Patent B2
US 8,464,096 · App. 13/558,008 · Granted Jun 11, 2013

Method and apparatus for rebuilding data in a dispersed data storage network

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,464,096
App. No.
13/558,008
Granted
Jun 11, 2013
Kind
B2
Abstract

A method begins by identifying a data slice requiring rebuilding to produce an identified data slice, wherein the identified data slice is one of a plurality of data slices that constitute a data segment. The method continues by retrieving at least m number of data slices, wherein m data slices of the plurality of data slices enable reconstruction of the data segment, and wherein the at least m number of data slices does not include the identified data slice. The method continues by reconstructing the identified data slice from the at least m number of data slices to produce a rebuilt data slice. The method continues by writing the rebuilt data slice to one of a plurality of data slice servers.

Claims (68)

1. A method for execution by one or more computers associated with a dispersed data storage network, the method comprises:

identifying a data slice requiring rebuilding to produce an identified data slice, wherein the identified data slice is one of a set of data slices that constitute a data segment, wherein data words of the data segment are arranged into a data matrix that is encoding using an encoding matrix function in accordance an information dispersal algorithm to produce a coded matrix of coded values that is arranged into the set of data slices;

retrieving at least m number of data slices for the set of data slices, wherein n represents the number of data slices in the set of data slices and m is less than or equal to n-2;

decoding the retrieved at least m number of data slices by arranging coded values of the retrieved at least m number of data slices into a reconstructed coded matrix and decoding the reconstructed coded matrix using a decoding matrix function in accordance with the information dispersal algorithm to reconstruct the data segment;

encoding the reconstructed data segment by arranging data words of the reconstructed data segment into the data matrix and encoding the data matrix using the encoding matrix function in accordance with the information dispersal algorithm to produce the coded matrix that is arranged into a new set of data slices;

selecting a data slice of the new set of data slices as a rebuilt data slices to replace the identified data slice; and

outputting the rebuilt data slice for storage in one of a plurality of data slice servers.

2. The method of claim 1 , wherein the retrieving further comprises:

transmitting a rebuild message to the plurality of data slice servers, wherein the rebuild message identifies at least one of:

a corresponding data slice of the set of data slices; and

the data segment;

receiving the at least m number of data slices from at least some of the plurality of data slice servers.

3. The method of claim 1 , wherein the outputting the rebuilt data slice further comprises:

transmitting a write command to the one of the plurality of data slice servers, wherein the write command instructs the one of the plurality of data slice servers to overwrite the identified data slices with the rebuilt data slice.

4. The method of claim 1 further comprises:

updating a transaction identification value of the rebuilt data slice.

5. The method of claim 1 further comprises:

determining a cause for the identified data slice requiring rebuilding;

when the cause for the identified data slice requiring rebuilding is one of corruption or out-of-date, outputting the rebuilt data slice to the one of the plurality of data slice servers, wherein the one of the plurality of data slice servers stored the identified data slice; and

when the cause for the identified data slice requiring rebuilding is a missing data slice:

outputting the rebuild data slice to the one of the plurality of data slice servers, wherein the one of the plurality of data slice servers is a new data slice server of the plurality of data slice servers than the one of the plurality of data slice servers stored the identified data slice; and

updating a list of data slice servers to include the new data slice server and to remove the data slice server corresponding to the identified data slice.

6. A computer for use within a dispersed data storage network, the computer comprises:

a network interface for interfacing with a network, wherein a plurality of data slice servers is operably coupled to the network; and

a central processing unit, wherein the central processing unit is operably coupled to:

identify a data slice requiring rebuilding to produce an identified data slice, wherein the identified data slice is one of a set of data slices that constitute a data segment and wherein data words of the data segment are arranged into a data matrix that is encoded by an encoding matrix function in accordance an information dispersal algorithm to produce a coded matrix of coded values that is arranged into the set of data slices;

retrieve at least m number of data slices from the set of data slices, wherein n represents the number of data slices in the set of data slices and m is less than or equal to n-2;

decode the retrieved at least m number of data slices by arranging coded values of the retrieved at least m number of data slices into a reconstructed coded matrix and decoding the reconstructed coded matrix by a decoding matrix function in accordance with the information dispersal algorithm to reconstruct the data segment;

encode the reconstructed data segment by arranging the data words of the reconstructed data segment into the data matrix and encoding the data matrix by the encoding matrix function in accordance with the information dispersal algorithm to produce the coded matrix that is arranged into a new set of data slices;

select one of the new set of data slices as a rebuilt data slices to replace the identified data slice; and

output the rebuilt data slice to one of a plurality of data slice servers.

7. The computer of claim 6 , wherein the central processing unit further functions to retrieve the at least m number of data slices by:

transmitting, via the network interface, a rebuild message to at least some of the plurality of data slice servers, wherein the rebuild message identifies at least one of:

a corresponding data slice of the plurality of data slices; and

the data segment;

receiving, via the network interface, the at least m number of data slices from the some of the plurality of data slice servers.

8. The computer of claim 6 , wherein the central processing unit further functions to the output the rebuilt data slice by at least one of:

transmitting, via the network interface, a write command to one of the plurality of data slice servers, wherein the write command instructs the one of the plurality of data slice servers to overwrite the identified data slices with the rebuilt data slice.

9. The computer of claim 6 , wherein the central processing unit further functions to:

update a transaction identification value of the rebuilt data slice.

10. The computer of claim 6 , wherein the central processing unit further functions to:

determine a cause for the identified data slice requiring rebuilding; and

when the cause for the identified data slice requiring rebuilding is one of corruption or out-of-date, output the rebuilt data slice to the one of the plurality of data slice servers, wherein the one of the plurality of data slice servers stored the identified data slice; and

when the cause for the identified data slice requiring rebuilding is a missing data slice:

output the rebuild data slice to the one of the plurality of data slice servers, wherein the one of the plurality of data slice servers is a new data slice server of the plurality of data slice servers than the one of the plurality of data slice servers stored the identified data slice; and

updating a list of data slice servers to include the new data slice server and to remove the data slice server corresponding to the identified data slice.

11. A computer readable storage memory that stores operational instructions, which, when executed by a computing device, causes the computing device to:

identify a data slice requiring rebuilding to produce an identified data slice, wherein the identified data slice is one of a set of data slices that constitute a data segment, wherein data words of the data segment are arranged into a data matrix that is encoding using an encoding matrix function in accordance an information dispersal algorithm to produce a coded matrix of coded values that is arranged into the set of data slices;

retrieve at least m number of data slices for the set of data slices, wherein n represents the number of data slices in the set of data slices and m is less than or equal to n-2;

decode the retrieved at least m number of data slices by arranging coded values of the retrieved at least m number of data slices into a reconstructed coded matrix and decoding the reconstructed coded matrix using a decoding matrix function in accordance with the information dispersal algorithm to reconstruct the data segment;

encode the reconstructed data segment by arranging data words of the reconstructed data segment into the data matrix and encoding the data matrix using the encoding matrix function in accordance with the information dispersal algorithm to produce the coded matrix that is arranged into a new set of data slices;

select a data slice of the new set of data slices as a rebuilt data slices to replace the identified data slice; and

output the rebuilt data slice for storage in one of a plurality of data slice servers.

12. The computer readable storage memory of claim 11 , wherein the retrieving further comprises:

transmitting a rebuild message to the plurality of data slice servers, wherein the rebuild message identifies at least one of:

a corresponding data slice of the set of data slices; and

the data segment;

receiving the at least m number of data slices from at least some of the plurality of data slice servers.

13. The computer readable storage memory of claim 11 , wherein the outputting the rebuilt data slice further comprises:

transmitting a write command to the one of the plurality of data slice servers, wherein the write command instructs the one of the plurality of data slice servers to overwrite the identified data slices with the rebuilt data slice.

14. The computer readable storage memory of claim 11 further stores operational instructions that cause the computing device to:

update a transaction identification value of the rebuilt data slice.

15. The computer readable storage memory of claim 11 further stores operational instructions that cause the computing device to:

determine a cause for the identified data slice requiring rebuilding;

when the cause for the identified data slice requiring rebuilding is one of corruption or out-of-date, output the rebuilt data slice to the one of the plurality of data slice servers, wherein the one of the plurality of data slice servers stored the identified data slice; and

when the cause for the identified data slice requiring rebuilding is a missing data slice:

output the rebuild data slice to the one of the plurality of data slice servers, wherein the one of the plurality of data slice servers is a new data slice server of the plurality of data slice servers than the one of the plurality of data slice servers stored the identified data slice; and

update a list of data slice servers to include the new data slice server and to remove the data slice server corresponding to the identified data slice.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2016
From: THORNTON, VANCE T.; BELLANCA, JAMIE; HENDRICKSON, DUSTIN M.; MARK, ZACHARY J.; VOLVOVSKI, ILYA
To: CLEVERSAFE, INC.
Reel/Frame 038140/0140 →