IP Library Granted Patent US 8,880,799
Granted Patent B2
US 8,880,799 · App. 12/080,042 · Granted Nov 4, 2014

Rebuilding data on a dispersed 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,880,799
App. No.
12/080,042
Granted
Nov 4, 2014
Kind
B2
Abstract

A rebuilder application operates on a dispersed data storage grid and rebuilds stored data segments that have been compromised in some manner. The rebuilder application actively scans for compromised data segments, and is also notified during partially failed writes to the dispersed data storage network, and during reads from the dispersed data storage network when a data slice is detected that is compromised. Records are created for compromised data segments, and put into a rebuild list, which the rebuilder application processes.

Claims (67)

1. A method of rebuilding data on a dispersed data storage network, said method comprising the steps of:

identifying, by a computer of the dispersed data storage network, a data segment that has at least one data slice requiring rebuilding, wherein the data segment is encoded in accordance with an information dispersal algorithm to produce a set of data slices that are stored on slice servers of the dispersed data storage network, wherein the set of data slices are different from one another and includes the at least one data slice requiring rebuilding, wherein the at least one slice requiring rebuilding is a subset of the set of data slices, wherein the at least one data slice that requires rebuilding from the data segment is identified based on one or more of:

determining that the at least one data slice requiring rebuilding is outdated with respect to other data slices of the set of data slices;

determining that the at least one data slice requiring rebuilding is missing;

determining that the at least one data slice requiring rebuilding is corrupted;

determining that the at least one data slice requiring rebuilding failed a read operation;

determining that the at least one data slice requiring rebuilding failed a write operation;

requesting, by the computer from at least some of the slice servers, at least a reconstruction number of data slices of the set of data slices, wherein the at least a reconstruction number of data slices does not include the at least one data slice requiring rebuilding;

reconstructing, by the computer, the data segment from the at least a reconstruction number of data slices to produce a reconstructed data segment;

encoding, by the computer, the reconstructed data segment in accordance with the information dispersal algorithm to reproduce the set of data slices including at least one new data slice that corresponds to the at least one data slice that requires rebuilding; and

writing, by the computer, the at least one new data slice to one or more of the slice servers such that a full set of data slices are stored in the slice servers for the data segment.

2. The method of claim 1 wherein the computer comprises one or more of: a client computer, a grid access computer, and a manager appliance.

3. The method of claim 1 wherein the determining that the at least one data slice requiring rebuilding is outdated comprises:

comparing a transaction number of the at least one data slice requiring rebuilding with transaction numbers of the other data slices of the set of data slices; and

when the transaction number of the at least one data slice requiring rebuilding does not substantially match the transaction numbers of the other data slices of the set of data slices, indicating that the at least data slice requiring rebuilding is outdated.

4. The method of claim 1 wherein the determining that the at least one data slice requiring rebuilding is outdated comprises:

comparing a version of the data segment associated with the at least one data slice requiring rebuilding with the version of the data segment associated with the other data slices of the set of data slices; and

when the version of the data segment associated with the at least one data slice requiring rebuilding does not substantially match the version of the data segment associated with the other data slices of the set of data slices, indicating that the at least one data slice requiring rebuilding is outdated.

5. The method of claim 1 , wherein the determining that the at least one data slice requiring rebuilding is missing comprises at least one of:

determining that one of the slice servers storing the at least one data slice requiring rebuilding is unavailable; and

determining that the one of the slice servers that is identified as storing the at least one data slice requiring rebuilding is not storing the at least one data slice requiring rebuilding.

6. The method of claim 1 , wherein the determining that the at least one data slice requiring rebuilding is corrupted comprises:

retrieving a checksum from the at least one data slice requiring rebuilding;

calculating a new checksum for the at least one data slice requiring rebuilding;

comparing the checksum with the new checksum; and

when the checksum does not substantially match the new checksum, indicating that the at least one data slice requiring rebuilding is corrupted.

7. The method of claim 1 , wherein the encoding the reconstructed data segment comprises:

arranging the reconstructed data segment into a data matrix;

generating a coded matrix of coded values based on the data matrix and an encoding matrix of the information dispersal algorithm;

arranging the coded values into a new set of data slices; and

selecting at least one new data slice from the new set of data slices.

8. The method of claim 1 further comprises:

determining that the at least one data slice requiring rebuilding failed the read operation by receiving, in response to a read request for the at least one data slice requiring rebuilding, an indication that the at least one data slice requiring rebuilding is corrupted; and

determining that the at least one data slice requiring rebuilding failed the write operation by failing to receive a write response from one or more of the slices servers regarding a write request regarding the at least one data slice requiring rebuilding.

9. A rebuilder recorder/agent that is stored on a computer readable memory and, when executed by a computer, causes the computer to:

identify a data segment that has at least one data slice requiring rebuilding, wherein the data segment is encoded in accordance with an information dispersal algorithm to produce a set of data slices that are stored on slice servers of a dispersed data storage network, wherein the set of data slices are different from one another and includes the at least one data slice requiring rebuilding, wherein the at least one slice requiring rebuilding is a subset of the set of data slices, wherein the at least one data slice that requires rebuilding from the data segment is identified based on one or more of:

determining that the at least one data slice requiring rebuilding is outdated with respect to other data slices of the set of data slices;

determining that the at least one data slice requiring rebuilding is missing;

determining that the at least one data slice requiring rebuilding is corrupted;

determining that the at least one data slice requiring rebuilding failed a read operation;

determining that the at least one data slice requiring rebuilding failed a write operation;

request, from at least some of the slice servers, at least a reconstruction number of data slices of the set of data slices, wherein the at least a reconstruction number of data slices does not include the at least one data slice requiring rebuilding;

reconstruct the data segment from the at least a reconstruction number of data slices to produce a reconstructed data segment;

encode the reconstructed data segment in accordance with the information dispersal algorithm to reproduce the set of data slices including at least one new data slice that corresponds to the at least one data slice requiring rebuilding

write the at least one new data slice to one or more of the slice servers such that a full set of data slices are stored in the slice servers for the data segment.

10. The rebuilder recorder/agent of claim 9 is further operable to determine that the at least one data slice requiring rebuilding is outdated by:

comparing a transaction number of the at least one data slice requiring rebuilding with transaction numbers of the other data slices of the set of data slices; and

when the transaction number of the at least one data slice requiring rebuilding does not substantially match the transaction numbers of the other data slices of the set of data slices, indicating that the at least data slice requiring rebuilding is outdated.

11. The rebuilder recorder/agent of claim 9 is further operable to determine that the at least one data slice requiring rebuilding is outdated by:

comparing a version of the data segment associated with the at least one data slice requiring rebuilding with version of the data segment associated with the other data slices of the set of data slices; and

when the version of the data segment associated with the at least one data slice requiring rebuilding does not substantially match the version of the data segment associated with the other data slices of the set of data slices, indicating that the at least data slice requiring rebuilding is outdated.

12. The rebuilder recorder/agent of claim 9 is further operable to determine that the at least one data slice requiring rebuilding is missing by at least one of:

determining that one of the slice servers storing the at least one data slice requiring rebuilding is unavailable; and

determining that the one of the slice servers that is identified as storing the at least one data slice requiring rebuilding is not storing the at least one data slice requiring rebuilding.

13. The rebuilder recorder/agent of claim 9 is further operable to determine that the at least one data slice requiring rebuilding is corrupted by:

retrieving a checksum from the at least one data slice requiring rebuilding;

calculating a new checksum for the at least one data slice requiring rebuilding;

comparing the checksum with the new checksum; and

when the checksum does not substantially match the new checksum, indicating that the at least one data slice requiring rebuilding is corrupted.

14. The rebuilder recorder/agent of claim 9 is further operable to encode the reconstructed data segment by:

arranging the reconstructed data segment into a data matrix;

generating a coded matrix of coded values based on the data matrix and an encoding matrix of the information dispersal algorithm;

arranging the coded values into a new set of data slices; and

selecting at least one new data slice from the new set of data slices.

15. The rebuilder recorder/agent of claim 9 is further operable to:

determine that the at least one data slice requiring rebuilding failed the read operation by receiving, in response to a read request for the at least one data slice requiring rebuilding, an indication that the at least one data slice requiring rebuilding is corrupted; and

determine that the at least one data slice requiring rebuilding failed the write operation by failing to receive a write response from one or more of the slices servers regarding a write request regarding the at least one data slice requiring rebuilding.

Assignments (8)
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 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF THE 8TH INVENTOR FROM Recorded Aug 9, 2016
From: VOLVOVSKI, ILYA; MARK, ZACHARY J.; FOSTER, LYNN; RESCH, JASON; QUIGLEY, JOHN; DHUSE, GREG; THORNTON, VANCE; HENDRICKSON, DUSTY
To: CLEVERSAFE, INC.
Reel/Frame 039637/0452 →
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 May 28, 2010
From: VOLVOVSKI, ILYA; MARK, ZACHARY J.; FOSTER, LYNN; RESCH, JASON; QUIGLEY, JOHN; DHUSE, GREG; THORNTON, VANCE; HENDRICKSON, DUSTIN
To: CLEVERSAFE, INC.
Reel/Frame 024453/0101 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2008
From: FOSTER, LYNN; RESCH, JASON; VOLVOSKI, ILYA; QUIGLEY, JOHN; DHUSE, GREG; THORNTON, VANCE; HENDRICKSON, DUSTY; MARK, ZACHARY
To: CLEVERSAFE, INC.
Reel/Frame 020935/0543 →