IP Library Granted Patent US 8,924,770
Granted Patent B2
US 8,924,770 · App. 13/527,929 · Granted Dec 30, 2014

Rebuilding a data slice of a maintenance free storage container

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,924,770
App. No.
13/527,929
Granted
Dec 30, 2014
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module detecting a storage error of an encoded data slice associated with a storage server within a maintenance free storage container. The method continues with the DS processing module determining failure mode information for the storage server and other storage servers and determining a rebuilding protocol for the encoded data. When the determined rebuilding protocol is a zero information gain (ZIG) protocol, the method continues with the DS processing module identifying a decode threshold number of storage servers from the other storage servers of the maintenance free storage container and from storage servers of another maintenance free storage container, retrieving zero information gain (ZIG) partial encoded data slices from the decode threshold number of storage servers, and decoding the ZIG partial encoded data slices utilizing a ZIG dispersed storage error coding function to reproduce the encoded data slice.

Claims (68)

1. A method for rebuilding an encoded data slice for a maintenance free storage container, the method comprises:

detecting a storage error of the encoded data slice associated with a storage server of a plurality of storage servers within the maintenance free storage container, wherein the maintenance free storage container allows for multiple storage servers of the plurality of storage servers to be in a failure mode without replacement, wherein data is encoded using a dispersed storage error coding function to produce a set of encoded data slices, which includes the encoded data slice, and wherein at least some encoded data slices of the set of encoded data slices are stored in other storage servers of the plurality of storage servers;

determining failure mode information for the storage server and the other storage servers;

determining a rebuilding protocol for the encoded data slice based on the failure mode information and whether at least a decode threshold of the other storage servers are available;

when the determined rebuilding protocol is a zero information gain (ZIG) protocol:

identifying a decode threshold number of storage servers from the other storage servers of the maintenance free storage container and from storage servers of another maintenance free storage container;

retrieving zero information gain (ZIG) partial encoded data slices from the decode threshold number of storage servers; and

decoding the ZIG partial encoded data slices utilizing a ZIG dispersed storage error coding function to reproduce the encoded data slice.

2. The method of claim 1 , wherein the determining the rebuilding protocol comprises:

determining whether quantity of the other storage servers is at least equal to a decode threshold number; and

when the quantity of the other storage servers is less than the decode threshold number, identifying the ZIG protocol.

3. The method of claim 1 further comprises:

when the determined rebuilding protocol is a data-based rebuild protocol:

retrieving a decode threshold number of encoded data slices of the set of encoded data slices from the other storage servers;

decoding the decode threshold number of encoded data slices utilizing the dispersed storage error coding function to reproduce the data; and

encoding the data utilizing the dispersed storage error coding function to reproduce the encoded data slice.

4. The method of claim 1 , wherein the detecting the storage error of the encoded data slice comprises at least one of:

indicating the storage error when a list response from the storage server compares unfavorably to at least another list response from the other storage servers;

indicating the storage error when a calculated slice integrity value compares unfavorably to a retrieved slice integrity value corresponding to the encoded data slice;

indicating the storage error when determining that the storage server is in the failure mode;

receiving a storage error message; and

receiving a rebuilding request, wherein the rebuilding request includes a slice name associated with the encoded data slice.

5. The method of claim 1 , wherein the determining the failure mode information comprises at least one of:

determining that one or more storage locations within a first storage server of the storage server and of the other storage servers has failed;

determining that a second storage server of the storage server and of the other storage servers has failed; and

determining that a third storage server of the storage server and of the other storage servers is operating at less than a desired storage level but greater than a storage failure level.

6. The method of claim 1 , wherein the retrieving the decode threshold number of zero information gain (ZIG) partial encoded data slices corresponding to the encoded data slice comprises:

generating a decode threshold number of ZIG partial encoded data slice requests based on identity of the encoded data slice and pillar numbers associated with the decode threshold number of storage servers;

outputting the decode threshold number of ZIG partial encoded data slice requests to the decode threshold number of storage servers; and

receiving the decode threshold number of ZIG partial encoded data slices from the decode threshold number of storage servers.

7. The method of claim 1 , wherein the decoding the decode threshold number of ZIG partial encoded data slices further comprises:

exclusive ORing the decode threshold number of ZIG partial encoded data slices to reproduce the encoded data slice.

8. A dispersed storage (DS) module comprises:

a first module, when operable within a computing device, causes the computing device to:

detect a storage error of an encoded data slice associated with a storage server of a plurality of storage servers within a maintenance free storage container, wherein the maintenance free storage container allows for multiple storage servers of the plurality of storage servers to be in a failure mode without replacement, wherein data is encoded using a dispersed storage error coding function to produce a set of encoded data slices, which includes the encoded data slice, and wherein at least some encoded data slices of the set of encoded data slices are stored in other storage servers of the plurality of storage servers;

a second module, when operable within the computing device, causes the computing device to:

determine failure mode information for the storage server and the other storage servers;

a third module, when operable within the computing device, causes the computing device to:

determine a rebuilding protocol for the encoded data slice based on the failure mode information and whether at least a decode threshold of the other storage servers are available; and

a fourth module, when operable within the computing device, causes the computing device to:

when the determined rebuilding protocol is a zero information gain (ZIG) protocol:

identify a decode threshold number of storage servers from the other storage servers of the maintenance free storage container and from storage servers of another maintenance free storage container;

retrieve zero information gain (ZIG) partial encoded data slices from the decode threshold number of storage servers; and

decode the ZIG partial encoded data slices utilizing a ZIG dispersed storage error coding function to reproduce the encoded data slice.

9. The DS module of claim 8 , wherein the third module functions to determine the rebuilding protocol by:

determining whether quantity of the other storage servers is at least equal to a decode threshold number; and

when the quantity of the other storage servers is less than the decode threshold number, identifying the ZIG protocol.

10. The DS module of claim 8 , wherein the fourth module is further operable to:

when the determined rebuilding protocol is a data-based rebuild protocol:

retrieve a decode threshold number of encoded data slices of the set of encoded data slices from the other storage servers;

decode the decode threshold number of encoded data slices utilizing the dispersed storage error coding function to reproduce the data; and

encode the data utilizing the dispersed storage error coding function to reproduce the encoded data slice.

11. The DS module of claim 8 , wherein the first module functions to detect the storage error of the encoded data slice by at least one of:

indicating the storage error when a list response from the storage server compares unfavorably to at least another list response from the other storage servers;

indicating the storage error when a calculated slice integrity value compares unfavorably to a retrieved slice integrity value corresponding to the encoded data slice;

indicating the storage error when determining that the storage server is in the failure mode;

receiving a storage error message; and

receiving a rebuilding request, wherein the rebuilding request includes a slice name associated with the encoded data slice.

12. The DS module of claim 8 , wherein the second module functions to determine the failure mode information by at least one of:

determining that one or more storage locations within a first storage server of the storage server and of the other storage servers has failed;

determining that a second storage server of the storage server and of the other storage servers has failed; and

determining that a third storage server of the storage server and of the other storage servers is operating at less than a desired storage level but greater than a storage failure level.

13. The DS module of claim 8 , wherein the fourth module functions to retrieve the decode threshold number of zero information gain (ZIG) partial encoded data slices corresponding to the encoded data slice by:

generating a decode threshold number of ZIG partial encoded data slice requests based on identity of the encoded data slice and pillar numbers associated with the decode threshold number of storage servers;

outputting the decode threshold number of ZIG partial encoded data slice requests to the decode threshold number of storage servers; and

receiving the decode threshold number of ZIG partial encoded data slices from the decode threshold number of storage servers.

14. The DS module of claim 8 , wherein the fourth module further functions to decode the decode threshold number of ZIG partial encoded data slices by:

exclusive ORing the decode threshold number of ZIG partial encoded data slices to reproduce the encoded 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 Aug 13, 2012
From: GLADWIN, S. CHRISTOPHER; RESCH, JASON K.; GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 028777/0672 →