IP Library Granted Patent US 10,359,935
Granted Patent B2
US 10,359,935 · App. 15/415,236 · Granted Jul 23, 2019

Dispersed storage encoded data slice rebuild

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 10,359,935
App. No.
15/415,236
Granted
Jul 23, 2019
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module identifying a plurality of encoded data slices requiring rebuilding. The method continues with the DS processing module determining an amount of reserve memory required for storage of rebuilt slices for the identified plurality of encoded data slices requiring rebuilding. The method continues with the DS processing module updating memory utilization information to include the amount of reserve memory required. The method continues with the DS processing module indicating the memory utilization. The method continues with the DS processing module obtaining rebuilt slices. The method continues with the DS processing module storing the rebuilt slices in the memory and updating the memory utilization information.

Claims (127)

1. A dispersed storage (DS) processing module comprises:

memory to store a plurality of encoded data slices;

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

identify a first plurality of encoded data slices that require rebuilding, the identifying including at least attempting to retrieve a second plurality of encoded data slices from a DS memory to perform an integrity check of the second plurality of encoded data slices and for encoded data slices that are retrieved with an error and that are not received, flagging these encoded data slices as the first plurality of encoded data slices that require rebuilding;

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

determine an amount of memory required for storage of rebuilt encoded data slices for the first plurality of encoded data slices;

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

access memory utilization information regarding memory, wherein the memory utilization information includes encoded data slice storage information regarding amount of memory used to store valid encoded data slices, available storage information regarding amount of memory that is unused, and rebuilt storage information regarding an actual amount of memory used to store rebuilt encoded data slices;

update the memory utilization information by allocating a portion of available memory to the amount of memory required for storage of the rebuilt encoded data slices;

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

obtain rebuilt encoded data slices;

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

store the rebuilt encoded data slices in the memory associated with the rebuilt storage information; and

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

modify the rebuilt storage information and the available storage information to reflect the stored rebuilt encoded data slices.

2. The dispersed storage (DS) processing module of claim 1 further comprises:

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

periodically identify the first plurality of encoded data slices by retrieving one or more of:

a list of the second plurality of encoded data slices;

names of the second plurality of encoded data slices;

address ranges of the second plurality of encoded data slices; or

related vault lists including the second plurality of encoded data slices.

3. The dispersed storage (DS) processing module of claim 1 further comprises:

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

identify the first plurality of encoded data slices by one or more of:

receiving a request to rebuild one or more encoded data slice; or

monitoring downloads meeting minimum read/write (R/W) width thresholds but less than a full pillar width.

4. The dispersed storage (DS) processing module of claim 1 further comprises:

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

update the memory utilization information with the amount of memory:

utilized for stored encoded data slices;

utilized for rebuilt encoded data slices;

reserved for rebuilt encoded data slices; or

un-utilized.

5. The dispersed storage (DS) processing module of claim 1 further comprises:

the fifth processing module, when operable within the computing device, further causes the computing device to:

obtain rebuilt encoded data slices including one or more of:

receiving the rebuilt encoded data slices; or

generating the rebuilt encoded data slices.

6. The dispersed storage (DS) processing module of claim 1 further comprises:

the seventh processing module, when operable within the computing device, further causes the computing device to:

update the memory utilization information including:

lowering reserved memory for the rebuilt encoded data slices; and

raising utilized memory for the rebuilt encoded data slices.

7. A dispersed storage (DS) processing module comprises:

memory to store a plurality of encoded data slices;

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

identify a plurality of encoded data slices that require rebuilding, wherein rebuilding of the plurality of encoded data slices is queued for at least one of individual, group, or batch processing and the batch processing will be performed at a time delay from the queuing;

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

determine an amount of memory required for storage of rebuilt encoded data slices for the plurality of encoded data slices;

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

access memory utilization information regarding memory, wherein the memory utilization information includes slice storage information regarding amount of memory used to store valid encoded data slices, available storage information regarding amount of memory that is unused, and rebuilt storage information regarding an actual amount of memory used to store rebuilt encoded data slices;

update the memory utilization information by allocating a portion of available memory to the amount of memory required for storage of the rebuilt encoded data slices;

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

obtain rebuilt encoded data slices;

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

store the rebuilt encoded data slices in the memory associated with the rebuilt storage information; and

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

modify the rebuilt storage information and the available storage information to reflect the stored rebuilt encoded data slices.

8. The dispersed storage (DS) processing module of claim 7 further comprises:

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

periodically identify the plurality of encoded data slices by retrieving one or more of:

a list of the plurality of encoded data slices;

names of the plurality of encoded data slices;

address ranges of the plurality of encoded data slices; or

related vault lists including the plurality of encoded data slices.

9. The dispersed storage (DS) processing module of claim 7 further comprises:

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

identify the plurality of encoded data slices by one or more of:

receiving a request to rebuild one or more encoded data slice; or

monitoring downloads meeting minimum read/write (R/W) width thresholds but less than a full pillar width.

10. The dispersed storage (DS) processing module of claim 7 further comprises:

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

update the memory utilization information with the amount of memory:

utilized for stored encoded data slices;

utilized for rebuilt encoded data slices;

reserved for rebuilt encoded data slices; or

un-utilized.

11. The dispersed storage (DS) processing module of claim 7 further comprises:

the fifth processing module, when operable within the computing device, further causes the computing device to:

obtain rebuilt encoded data slices including one or more of:

receiving the rebuilt encoded data slices; or

generating the rebuilt encoded data slices.

12. The dispersed storage (DS) processing module of claim 7 further comprises:

the seventh processing module, when operable within the computing device, further causes the computing device to:

update the memory utilization information including:

lowering reserved memory for the rebuilt encoded data slices; and

raising utilized memory for the rebuilt encoded data slices.

13. A computing device comprises:

memory to store a plurality of encoded data slices;

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

identify a first plurality of encoded data slices that require rebuilding, the identifying including at least attempting to retrieve a second plurality of encoded data slices from a dispersed storage (DS) memory to perform an integrity check of the second plurality of encoded data slices and for encoded data slices that are retrieved with an error and that are not received, flagging these encoded data slices as the first plurality of encoded data slices that require rebuilding, wherein the identifying further includes monitoring downloads meeting minimum read/write (R/W) width thresholds, but that are less than a full pillar width;

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

determine an amount of memory required for storage of rebuilt encoded data slices for the first plurality of encoded data slices;

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

access memory utilization information regarding memory, wherein the memory utilization information includes encoded data slice storage information regarding amount of memory used to store valid encoded data slices, available storage information regarding amount of memory that is unused, and rebuilt storage information regarding an actual amount of memory used to store rebuilt encoded data slices;

update the memory utilization information by allocating a portion of available memory to the amount of memory required for storage of the rebuilt encoded data slices;

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

obtain rebuilt encoded data slices;

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

store the rebuilt encoded data slices in the memory associated with the rebuilt storage information; and

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

modify the rebuilt storage information and the available storage information to reflect the stored rebuilt encoded data slices.

14. The computing device of claim 13 further comprises:

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

periodically identify the first plurality of encoded data slices by retrieving one or more of:

a list of the second plurality of encoded data slices;

names of the second plurality of encoded data slices;

address ranges of the second plurality of encoded data slices; or

related vault lists including the second plurality of encoded data slices.

15. The computing device of claim 13 further comprises:

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

update the memory utilization information with the amount of memory:

utilized for stored encoded data slices;

utilized for rebuilt encoded data slices;

reserved for rebuilt encoded data slices; or

un-utilized.

16. The computing device of claim 13 further comprises:

the fifth processing module, when operable within the computing device, further causes the computing device to:

obtain rebuilt encoded data slices including one or more of:

receiving the rebuilt encoded data slices; or

generating the rebuilt encoded data slices.

17. The computing device of claim 13 further comprises:

the seventh processing module, when operable within the computing device, further causes the computing device to:

update the memory utilization information including:

lowering reserved memory for the rebuilt encoded data slices; and

raising utilized memory for the rebuilt encoded data slices.

Assignments (5)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0288 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2017
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041494/0524 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2017
From: RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 041081/0091 →
Cited By (2)
US 12,367,151 US 12,443,738