IP Library Granted Patent US 8,527,705
Granted Patent B2
US 8,527,705 · App. 12/983,221 · Granted Sep 3, 2013

Temporarily caching an encoded data slice

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,527,705
App. No.
12/983,221
Granted
Sep 3, 2013
Kind
B2
Abstract

A method begins by a processing module obtaining an encoded data slice and an associated slice name. The method continues with the processing module determining a dispersed storage (DS) unit for storing the encoded data slice based on at least one of the encoded data slice and the associated slice name and estimating a performance level of the DS unit to produce an estimated DS unit performance level. The method continues with the processing module sending the encoded data slice to the DS unit for storage therein and when the estimated DS unit performance level compares unfavorably with a performance threshold, facilitating storage of the encoded data slice in temporary memory to produce a temporarily stored encoded data slice, wherein the temporarily stored encoded data slice is retrieved in response to a retrieval request when confirmation of the DS unit storing the encoded data slice has not been received.

Claims (95)

1. A method comprises:

obtaining an encoded data slice and an associated slice name;

determining a dispersed storage (DS) unit for storing the encoded data slice based on at least one of the encoded data slice and the associated slice name;

estimating a performance level of the DS unit to produce an estimated DS unit performance level;

sending the encoded data slice to the DS unit for storage therein; and

when the estimated DS unit performance level compares unfavorably with a performance threshold, facilitating storage of the encoded data slice in temporary memory to produce a temporarily stored encoded data slice, wherein the temporarily stored encoded data slice is retrieved in response to a retrieval request of the encoded data slice when confirmation of the DS unit storing the encoded data slice has not been received.

2. The method of claim 1 further comprises, when the estimated DS unit performance level compares unfavorably with the performance threshold:

updating a storage location table to associate the slice name with a temporary memory identifier (ID) of the temporary memory.

3. The method of claim 1 further comprises, when the estimated DS unit performance level compares unfavorably with the performance threshold:

receiving a response from the DS unit, wherein the response indicates that the encoded data slice is available for retrieval; and

when the encoded data slice is available for retrieval:

updating a storage location table to associate the slice name with a DS unit identifier (ID) of the DS unit;

determining whether to retrieve the temporarily stored encoded data slice or the encoded data slice from the DS unit in response to the retrieval request; and

when the encoded data slice from the DS unit in response to the retrieval request, sending a read request to the DS unit regarding retrieval of the encoded data slice.

4. The method of claim 3 further comprises:

facilitating deleting of the encoded data slice from the temporary memory; and

updating the storage location table to delete an association of the slice name with a temporary memory identifier (ID) of the temporary memory.

5. The method of claim 1 , wherein the obtaining the encoded data slice comprises at least one of:

receiving the encoded data slice;

creating the encoded data slice;

rebuilding the encoded data slice from a set of associated encoded data slices; and

receiving the encoded data slice as a rebuilt encoded data slice that was rebuilt from the set of associated encoded data slices.

6. The method of claim 1 , wherein determining the DS unit is based on at least one of:

an identification of a slice name range to be rebuilt;

a second DS unit identifier associated with the DS unit affiliated with the associated slice name;

a virtual dispersed storage network (DSN) address to physical location table lookup;

a vault lookup;

a command;

a message;

a predetermination;

a DS unit query;

requirements;

metadata; and

information obtained associated with the rebuilt encoded data slice.

7. The method of claim 1 , wherein the estimated DS unit performance level comprises at least one of:

estimated reliability;

estimated availability;

estimated access latency;

estimated bandwidth utilization;

estimated security performance; and

estimated cost.

8. The method of claim 1 , wherein the determining the performance level of the DS unit to produce the estimated DS unit performance level comprises at least one of:

obtaining a historical performance level based on one or more of a vault lookup, a command, a message, a predetermination, and a DS unit query; and

determining the estimated DS unit performance level based on the historical performance level and an estimation algorithm.

9. The method of claim 1 , wherein facilitating storage of the encoded data slice in the temporary memory further comprises:

determining the temporary memory based on at least one of the slice name, size of the encoded data slice, a comparison of DS unit access latency history to a threshold, a DS unit performance history, a DS unit storage set, error coding dispersal storage function parameters, metadata, requirements, a vault lookup, a command, and information obtained associated with the encoded data slice, wherein the temporary memory includes one or more of another DS unit, local memory, cache memory, and main memory.

10. A computer comprises:

an interface;

a memory; and

a processing module operable to:

obtain an encoded data slice and an associated slice name;

determine a dispersed storage (DS) unit for storing the encoded data slice based on at least one of the encoded data slice and the associated slice name;

estimate a performance level of the DS unit to produce an estimated DS unit performance level;

send, via the interface, the encoded data slice to the DS unit for storage therein; and

facilitate storage of the encoded data slice in temporary memory to produce a temporarily stored encoded data slice when the estimated DS unit performance level compares unfavorably with a performance threshold, wherein the temporarily stored encoded data slice is retrieved in response to a retrieval request of the encoded data slice when confirmation of the DS unit storing the encoded data slice has not been received.

11. The computer of claim 10 , wherein when the estimated DS unit performance level compares unfavorably with the performance threshold, the processing module further functions to:

update a storage location table to associate the slice name with a temporary memory identifier (ID) of the temporary memory.

12. The computer of claim 10 , wherein when the estimated DS unit performance level compares unfavorably with the performance threshold, the processing module further functions to:

receive, via the interface, a response from the DS unit, wherein the response indicates that the encoded data slice is available for retrieval; and

when the encoded data slice is available for retrieval:

update a storage location table to associate the slice name with a DS unit identifier (ID) of the DS unit;

determine whether to retrieve the temporarily stored encoded data slice or the encoded data slice from the DS unit in response to the retrieval request; and

send, via the interface, a read request to the DS unit regarding retrieval of the encoded data slice when the encoded data slice from the DS unit in response to the retrieval request.

13. The computer of claim 12 , wherein the processing module further functions to:

facilitate deleting of the encoded data slice from the temporary memory; and

update the storage location table to delete an association of the slice name with a temporary memory identifier (ID) of the temporary memory.

14. The computer of claim 10 , wherein the processing module functions to obtain the encoded data slice by at least one of:

receiving, via the interface, the encoded data slice;

creating the encoded data slice;

rebuilding the encoded data slice from a set of associated encoded data slices; and

receiving, via the interface, the encoded data slice as a rebuilt encoded data slice that was rebuilt from the set of associated encoded data slices.

15. The computer of claim 10 , wherein the processing module functions to determine the DS unit based on at least one of:

an identification of a slice name range to be rebuilt;

a second DS unit identifier associated with the DS unit affiliated with the associated slice name;

a virtual dispersed storage network (DSN) address to physical location table lookup;

a vault lookup;

a command;

a message;

a predetermination;

a DS unit query;

requirements;

metadata; and

information obtained associated with the rebuilt encoded data slice.

16. The computer of claim 10 , wherein the estimated DS unit performance level comprises at least one of:

estimated reliability;

estimated availability;

estimated access latency;

estimated bandwidth utilization;

estimated security performance; and

estimated cost.

17. The computer of claim 10 , wherein the processing module functions to determine the performance level of the DS unit to produce the estimated DS unit performance level by at least one of:

obtaining a historical performance level based on one or more of a vault lookup, a command, a message, a predetermination, and a DS unit query; and

determining the estimated DS unit performance level based on the historical performance level and an estimation algorithm.

18. The computer of claim 10 , wherein the processing module functions to facilitate storage of the encoded data slice in the temporary memory by:

determining the temporary memory based on at least one of the slice name, size of the encoded data slice, a comparison of DS unit access latency history to a threshold, a DS unit performance history, a DS unit storage set, error coding dispersal storage function parameters, metadata, requirements, a vault lookup, a command, and information obtained associated with the encoded data slice, wherein the temporary memory includes one or more of another DS unit, local memory, cache memory, and main 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 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2011
From: GLADWIN, S. CHRISTOPHER; VOLVOVSKI, ILYA; DHUSE, GREG; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 026229/0907 →