IP Library Granted Patent US 9,888,076
Granted Patent B2
US 9,888,076 · App. 14/182,393 · Granted Feb 6, 2018

Encoded data slice caching in a distributed 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 9,888,076
App. No.
14/182,393
Granted
Feb 6, 2018
Kind
B2
Abstract

A method begins by receiving a request to retrieve a data segment stored as encoded data slices in a distributed storage network (DSN). The method continues by determining whether at least the threshold number of encoded data slices is cached in temporary storage associated with a distributed storage processing module. When the at least the threshold number of encoded data slices are cached in the temporary storage, the method continues by retrieving the at least the threshold number of encoded data slices from the temporary storage. When the at least the threshold number of encoded data slices is not cached in the temporary storage, the method continues by retrieving one or more of the encoded data slices from the DSN to obtain the at least the threshold number of encoded data slices.

Claims (54)

1. A method for use in a distributed storage processing module, the method comprising:

receiving a request to retrieve a data segment stored as “n” number of encoded data slices in a distributed storage network (DSN), wherein the data segment is encoded using a dispersed error coding function to produce the encoded data slices, wherein a threshold number of the encoded data slices is sufficient to reconstruct the data segment, where the threshold number of the encoded data slices is less than “n”;

determining whether at least the threshold number of encoded data slices is cached in temporary storage associated with a distributed storage processing module;

when the at least the threshold number of encoded data slices is cached in the temporary storage, retrieving the at least the threshold number of encoded data slices from the temporary storage;

when the at least the threshold number of encoded data slices is not cached in the temporary storage, retrieving one or more of the encoded data slices from the DSN to obtain the at least the threshold number of encoded data slices;

maintaining access frequency information regarding retrieval of the at least the threshold number of encoded data slices from the temporary storage;

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is at or above a first accessing rate, maintaining storage of the at least the threshold number of encoded data slices in the temporary storage;

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is at or above a second accessing rate and below the first accessing rate deleting one of the at least the threshold number of encoded data slices from the temporary storage; and

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is at or above a third accessing rate and below the second accessing rate, deleting another one of the at least the threshold number of encoded data slices from the temporary storage.

2. The method of claim 1 , wherein the retrieving one or more of the encoded data slices further comprises:

determining a number of error-free encoded data slices that is cached in the temporary storage;

determining a number of encoded data slices to retrieve from the DSN based on a difference between the threshold number and the number of error-free encoded data slices; and

retrieving, as the one or more of the encoded data slices, the number of encoded data slices.

3. The method of claim 1 further comprises:

performing an integrity check on individual ones of the at least the threshold number of encoded data slices that are cached in the temporary storage;

for each encoded data slice that passes the integrity check, indicating that the encoded data slice is error free; and

when a threshold number of error free encoded data slices have passed the integrity check, indicating that the at least the threshold number of encoded data slices are cached in the temporary storage.

4. The method of claim 1 further comprises:

when the at least the threshold number of encoded data slices is not cached in the temporary storage, determining whether to cache the at least the threshold number of encoded data slices in the temporary storage; and

when the determining indicates that the at least the threshold number of encoded data slices are to be cached:

storing the at least the threshold number of encoded data slices in the temporary storage; and

storing names of the at least the threshold number of encoded data slices in a hash table.

5. The method of claim 1 further comprises: deleting the at least the threshold number of encoded data slices from the temporary storage in response to at least one of: a security level of the request, a priority level of the requested information, a network loading level, and a memory loading level.

6. The method of claim 1 further comprises:

maintaining access frequency information regarding retrieval of the at least the threshold number of encoded data slices from the temporary storage;

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is at or above an accessing rate, maintaining storage of the at least the threshold number of encoded data slices in the temporary storage; and

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is below an accessing rate, deleting one or more of the at least the threshold number of encoded data slices from the temporary storage.

7. A computing device comprises:

an interface operable to receive a request to retrieve a data segment from a distributed storage network (DSN), wherein the data segment is encoded using a dispersed error coding function to produce a number “n” of encoded data slices, wherein a threshold number of the encoded data slices is sufficient to reconstruct the data segment, where the threshold number of the encoded data slices is less than “n”;

temporary memory; and

a processing module operable to:

determine whether at least the threshold number of encoded data slices is cached in the temporary memory associated with a distributed storage processing module; when the at least the threshold number of encoded data slices is cached in the temporary memory, retrieve the at least the threshold number of encoded data slices from the temporary memory;

when the at least the threshold number of encoded data slices is not cached in the temporary memory, retrieve one or more of the encoded data slices from the DSN to obtain the at least the threshold number of encoded data slices^, maintain access frequency information regarding retrieval of the at least the threshold number of encoded data slices from the temporary memory;

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is at or above a first accessing rate, maintain storage of the at least the threshold number of encoded data slices in the temporary memory;

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is at or above a second accessing rate and below the first accessing rate, delete one of the at least the threshold number of encoded data slices from the temporary memory; and

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is at or above a third accessing rate and below the second accessing rate, delete another one of the at least the threshold number of encoded data slices from the temporary memory.

8. The computing device of claim 6 , wherein the processing module is further operable to retrieve the one or more of the encoded data slices further by:

determining a number of error-free encoded data slices that is cached in the temporary memory;

determining a number of encoded data slices to retrieve from the DSN based on a difference between the threshold number and the number of error-free encoded data slices; and

retrieving, as the one or more of the encoded data slices, the number of encoded data slices.

9. The computing device of claim 6 , wherein the processing module is further operable to:

perform an integrity check on individual ones of the at least the threshold number of encoded data slices that are cached in the temporary memory;

for each encoded data slice that passes the integrity check, indicate that the encoded data slice is error free; and

when a threshold number of error free encoded data slices have passed the integrity check, indicate that the at least the threshold number of encoded data slices are cached in the temporary memory.

10. The computing device of claim 6 , wherein the processing module is further operable to:

when the at least the threshold number of encoded data slices is not cached in the temporary memory, determine whether to cache the at least the threshold number of encoded data slices in the temporary memory; and

when the determining indicates that the at least the threshold number of encoded data slices are to be cached:

store the at least the threshold number of encoded data slices in the temporary memory; and

store names of the at least the threshold number of encoded data slices in a hash table.

11. The computing device of claim 6 , wherein the processing module is further operable to: delete the at least the threshold number of encoded data slices from the temporary memory in response to at least one of: a security level of the request, a priority level of the requested information, a network loading level, and a memory loading level.

12. The computing device of claim 6 , wherein the processing module is further operable to:

maintain access frequency information regarding retrieval of the at least the threshold number of encoded data slices from the temporary memory;

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is at or above an accessing rate, maintain storage of the at least the threshold number of encoded data slices in the temporary memory; and

when the access frequency information indicates that accessing of the at least the threshold number of encoded data slices is below an accessing rate, delete one or more of the at least the threshold number of encoded data slices from the temporary memory.

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 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2014
From: RESCH, JASON K.; DHUSE, GREG; MOTWANI, MANISH
To: CLEVERSAFE, INC.
Reel/Frame 032283/0161 →