IP Library Granted Patent US 8,560,882
Granted Patent B2
US 8,560,882 · App. 12/716,106 · Granted Oct 15, 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,560,882
App. No.
12/716,106
Granted
Oct 15, 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 and wherein each of the plurality of data slices is assigned for storage by a corresponding one of a plurality of data slice servers. The method continues by retrieving at least m number of data slices from at least m number of the plurality of data slice servers, 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 the corresponding one of the plurality of data slice servers or to a new slice server.

Claims (50)

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 plurality of data slices that constitute a data segment, wherein each of the plurality of data slices is assigned for storage by a corresponding one of a plurality of data slice servers, and wherein data words of the data segment were arranged into a data matrix that is multiplied by an encoding matrix in accordance an information dispersal algorithm to produce a coded matrix of coded values that is arranged into the plurality of data slices;

retrieving at least m number of data slices from at least one of the plurality of data slice servers, wherein n represents the number of data slices in the plurality 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 multiplying the reconstructed coded matrix by a decoding matrix in accordance with the information dispersal algorithm to reconstruct the data segment;

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

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

writing the rebuilt data slice to the corresponding one of the plurality of data slice servers or to a new slice server.

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

transmitting a rebuild message to the at least one 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 the at least m number of data slices from the at least one of the plurality of data slice servers.

3. The method of claim 1 , wherein the writing the rebuilt data slice further comprises at least one of:

transmitting a write command to the corresponding one of the plurality of data slice servers or to the new slice server, wherein the write command instructs the corresponding one of the plurality of data slice servers or to the new slice server to overwrite the identified data slices with the rebuilt data slice; and

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

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:

prior to rebuilding the identified data slice, recording the identified data slice to produce a recorded data slice; and

reconstructing the recorded data slice to produce the rebuilt data slice.

6. 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, writing the rebuilt data slice to the corresponding one of the plurality of slice servers assigned to store the identified data slice; and

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

writing the rebuild data slice to the new slice server; and

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

7. 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 plurality of data slices that constitute a data segment and wherein each of the plurality of data slices is assigned for storage by a corresponding one of a plurality of data slice servers, and wherein data words of the data segment were arranged into a data matrix that is multiplied by an encoding matrix in accordance an information dispersal algorithm to produce a coded matrix of coded values that is arranged into the plurality of data slices;

retrieve at least m number of data slices from at least one of the plurality of data slice servers, wherein n represents the number of data slices in the plurality 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 multiplying the reconstructed coded matrix by a decoding matrix 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 multiplying the data matrix by the encoding matrix in accordance with the information dispersal algorithm to produce the coded matrix that is arranged into a new plurality of data slices;

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

write the rebuilt data slice to the corresponding one of the plurality of data slice servers or to a new slice server.

8. The computer of claim 7 , 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 the at least one 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 at least one of the plurality of data slice servers.

9. The computer of claim 7 , wherein the central processing unit further functions to the write the rebuilt data slice by at least one of:

transmitting, via the network interface, a write command to the corresponding one of the plurality of data slice servers or to the new slice server, wherein the write command instructs the corresponding one of the plurality of data slice servers or to the new slice server to overwrite the identified data slices with the rebuilt data slice; and

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

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

update a transaction identification value of the rebuilt data slice.

11. The computer of claim 7 , 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, write the rebuilt data slice to the corresponding one of the plurality of slice servers assigned to store the identified data slice; and

when the cause for the identified data slice requiring rebuilding is a missing data slice: write the rebuild data slice to the new slice server; and

update the plurality of slice servers to include the new slice server and to remove the 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 →