IP Library Granted Patent US 8,819,482
Granted Patent B2
US 8,819,482 · App. 14/047,661 · Granted Aug 26, 2014

Method and apparatus for distributed storage integrity processing

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,819,482
App. No.
14/047,661
Granted
Aug 26, 2014
Kind
B2
Abstract

A distributed storage integrity system in a dispersed storage network includes a scanning agent and a control unit. The scanning agent identifies an encoded data slice that requires rebuilding, wherein the encoded data slice is one of a plurality of encoded data slices generated from a data segment using an error encoding dispersal function. The control unit retrieves at least a number T of encoded data slices needed to reconstruct the data segment based on the error encoding dispersal function. The control unit is operable to reconstruct the data segment from at least the number T of the encoded data slices and generate a rebuilt encoded data slice from the reconstructed data segment. The scanning agent is located in a storage unit and the control unit is located in the storage unit or in a storage integrity processing unit, a dispersed storage processing unit or a dispersed storage managing unit.

Claims (53)

1. A storage integrity processing unit in a distributed storage network, comprises:

a network interface for interfacing with a plurality of storage units in the distributed storage network; and

at least one rebuild module operable to:

receive a plurality of identifications of data slices that require rebuilding;

store in a rebuild queue the plurality of identifications of data slices that require rebuilding;

select one of the plurality of identifications of data slices from the rebuild queue based on a prioritization algorithm, wherein the selected data slice is one of an X number of a plurality of data slices of an encoded data segment and wherein the encoded data segment is one of a plurality of data segments of a data object and wherein the prioritization algorithm is based on a priority indicator associated with the data object;

reconstruct the encoded data segment from at least a number T of the X number of the plurality of data slices of the encoded data segment to generate a reconstructed data segment; and

generate a rebuilt encoded data slice corresponding to the selected data slice from the reconstructed data segment.

2. The storage integrity processing unit of claim 1 , wherein the priority indicator includes at least one of: a priority indicator for the data object, a priority indicator of a user associated with the data object, a priority indicator for a data object type and a data slice age.

3. The storage integrity processing unit of claim 1 , further comprising:

a slice queue operable to store the rebuilt encoded data slice, wherein the slice queue stores the rebuilt encoded data slice as one of a plurality of stored rebuilt data slices; and

a slice agent operable to:

select one of the plurality of stored rebuilt data slices based on the prioritization algorithm; and

store the selected one of the plurality of stored rebuilt data slices in one of the plurality of storage units.

4. The storage integrity processing unit of claim 1 , wherein the rebuild module is operable to receive the plurality of identifications of data slices that require rebuilding from one or more of the plurality of storage units.

5. The storage integrity processing unit of claim 1 , wherein portions of the encoded data segment are interleaved into a number X of a plurality of encoded data slices for storage in the plurality of storage units and wherein the identified data slice is one of the number X of the plurality of encoded data slices of the encoded data segment; and

wherein the number T corresponds to a threshold number of the number X of the plurality of encoded data slices needed to reconstruct the encoded data segment based on an error encoding dispersal function, wherein the number T equals less than the number X.

6. The storage integrity processing unit of claim 5 , wherein the rebuild module being operable to reconstruct the encoded data segment comprises:

being operable to reconstruct the data segment from at least the number T of the plurality of encoded data slices to produce the reconstructed data segment by decoding at least the number T of the plurality of encoded data slices using a decoding matrix A in accordance with the error encoding dispersal function.

7. The storage integrity processing unit of claim 6 , wherein the rebuild module being operable to decode at least the number T of the plurality of encoded data slices using a decoding matrix A in accordance with the error encoding dispersal function comprises:

being operable to deslice at least the number T of the plurality of encoded data slices to generate a portion of an encoded data segment; and

being operable to multiply the portion of the encoded data segment with the decoding matrix A, wherein the decoding matrix A is an MxR matrix, wherein the decoding matrix A includes a number R of rows equal to the number R of plurality of encoded data slices and includes a number M of columns equal to the number T of the plurality of encoded data slices needed to reconstruct the data segment based on the error encoding dispersal function.

8. A storage unit in a distributed storage network, comprising:

a network interface for interfacing with a plurality of additional storage units in the distributed storage network; and

at least one module operable to:

scan an address range of encoded data slices;

determine a plurality of identifications of encoded data slices that require rebuilding;

store in a rebuild queue the plurality of identifications of encoded data slices that require rebuilding;

select one of the plurality of identifications of encoded data slices from the rebuild queue to rebuild based on a prioritization algorithm, wherein the selected encoded data slice is one of an X number of encoded data slices associated with a data segment and wherein the prioritization algorithm is based on a priority indicator associated with the data segment;

retrieve at least a number T of the X number of the encoded data slices associated with the data segment, wherein the number T corresponds to a number of the plurality of encoded data slices needed to reconstruct the data segment based on an error encoding dispersal function;

reconstruct the data segment from at least the number T of the plurality of encoded data slices to produce a reconstructed data segment and

generate a rebuilt encoded data slice corresponding to the selected encoded data slice from the reconstructed data segment.

9. The storage unit of claim 8 , wherein the reconstructed data segment is one of a plurality of data segments of a data object.

10. The storage unit of claim 9 , wherein the priority indicator associated with the data segment includes a priority indicator associated with the data object.

11. The storage unit of claim 10 , wherein the priority indicator includes at least one of:

a priority indicator for the data object, a priority indicator of a user associated with the data object, a priority indicator for a data object type and a data slice age.

12. The storage unit of claim 8 , wherein the prioritization algorithm is based on a first in first out (FIFO) order.

13. The storage unit of claim 8 , wherein the module being operable to scan the address range of encoded data slices comprises:

being operable to scan an address range of encoded data slices, wherein the address range includes addresses assigned to the storage unit and to the plurality of additional storage units.

14. The storage unit of claim 13 , wherein the module being operable to retrieve at least the number T of the X number of the encoded data slices associated with the data segment comprises:

being operable to retrieve at least one of the number T of the number X of the encoded data slices associated with the data segment from at least one of the plurality of additional storage units.

15. A storage integrity system in a storage network, comprising:

one or more processing modules operable to:

access a rebuild queue, wherein the rebuild queue includes a plurality of identifications of data slices that require rebuilding;

select one of the plurality of identifications of data slices that requires rebuilding from the rebuild queue based on a prioritization algorithm, wherein the selected data slice is one of an X number of a plurality of data slices of an encoded data segment;

reconstruct the encoded data segment from at least a number T of the X number of the plurality of data slices of the encoded data segment to generate a reconstructed data segment, wherein the reconstructed data segment is one of a plurality of data segments of a data object and wherein the prioritization algorithm is based on a priority indicator associated with the data object; and

generate a rebuilt encoded data slice corresponding to the selected data slice from the reconstructed data segment.

16. The storage integrity system of claim 15 , wherein the priority indicator includes at least one of: a priority indicator for the data object, a priority indicator of a user associated with the data object, a priority indicator for a data object type and a data slice age.

17. The storage integrity system of claim 15 , wherein the prioritization algorithm is based on a first in first out (FIFO) order.

18. The storage integrity system of claim 15 , wherein the one or more processing modules are further operable to:

scan an address range of encoded data slices;

determine the plurality of identifications of encoded data slices that require rebuilding; and

store in the rebuild queue the plurality of identifications of encoded data slices that require rebuilding.

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 31, 2016
From: DHUSE, GREG; BAPTIST, ANDREW; MARK, ZACHARY J.; RESCH, JASON K.; VOLVOVSKI, ILYA
To: CLEVERSAFE, INC.
Reel/Frame 038151/0964 →