IP Library Granted Patent US 8,473,677
Granted Patent B2
US 8,473,677 · App. 12/777,904 · Granted Jun 25, 2013

Distributed storage network memory access based on memory state

Inventors: S. Christopher Gladwin (Chicago, IL); Wesley Leggette (Oak Park, IL)
Assignee: Cleversafe, Inc.
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,473,677
App. No.
12/777,904
Granted
Jun 25, 2013
Kind
B2
Abstract

A distributed storage unit determines how to handle a read or write request for a data slice based on a state of the memory the data slice is to be read from or written to. When receiving a request to retrieve a data slice, the distributed storage unit, determines a state of the memory in which the data slice is stored. Based on the memory state, one of multiple different methods for obtaining the data slice is selected. The methods include, among others, a direct read from the memory, and reconstructing the data slice using other memories and parity values. In response to a write request, the distributed storage unit can determine whether to use the currently selected memory for writing, or rotate the memory used for writing, based on a state of the memory.

Claims (82)

1. A method for execution by a distributed storage (DS) unit of a distributed storage network, the method comprising:

maintaining memory states of a plurality of memories of the DS unit, wherein a memory of the plurality of memories is in a write only state, a read state, or a write with read priority state; and

receiving a first request regarding a first data slice;

determining a first memory of the plurality of memories associated with the first data slice;

determining the memory state of the first memory from the memory states of the plurality of memories;

when the memory state of the first memory is the write only state, the first request is a read request, and the DS unit determines to process the first request:

reconstructing the first data slice from corresponding parity data stored in a parity memory of the DS unit and one or more corresponding data slices stored in one or more other memories of the plurality of memories that are in the read state of the write with read priority state; and

outputting the reconstructed encoded data slice in response to the first request

when the memory state of the first memory is write with read priority and the first request is the read request:

pausing write requests to the first memory upon receiving the first request to retrieve the first data slice;

retrieving the first data slice from the first memory; and

outputting the retrieved first data slice.

2. The method of claim 1 further comprising:

when the memory state of the first memory is the read state:

retrieving the first data slice from the first memory; and

outputting the retrieved first data slice in response to the first request.

3. The method of claim 1 further comprising:

determining not to process the first request by determining that other distributed storage units of the distributed storage network should be used to reconstruct a data object, wherein the data object was encoded to produce a set of encoded data slices, which includes the first data slice, and

sending a notification denying the first request.

4. The method of claim 1 , further comprising:

when the first request is a write request:

identifying the first memory as a primary write memory, wherein the first memory has the write only state and other memories of the plurality of memories are in the read state or the write with read priority state;

writing the first data slice to the first memory;

generating parity information from the first data slice and one or more corresponding data slices stored in one or more other memories of the plurality of memories; and

writing the parity information into the parity memory of the DS unit.

5. A distributed storage unit comprising:

a plurality of memories operable for storing encoded data slices;

one or more parity memories operable for storing parity data of two or more encoded data slices stored in two or more memories of the plurality of memories;

a storage unit control module operable to:

receive a request to retrieve a stored encoded data slice;

determine a memory of the plurality of memories storing the stored encoded data slice

determine a memory state of the memory;

when the memory state is a write only memory state:

retrieve corresponding parity data from the one or more parity memories;

retrieve one or more corresponding encoded data slices of the two or more encoded data slices from the two or more memories;

reconstruct the stored encoded data slice from the corresponding parity data and the one or more corresponding encoded data slices; and

output the reconstructed encoded data slice in response to the request when the memory state is write with read priority:

pause write requests upon receiving the request to retrieve the stored encoded data slice;

retrieve the stored encoded data slice from the memory; and

output the retrieved encoded data slice.

6. The distributed storage unit of claim 5 , further comprising:

the storage unit control module to:

maintain memory states of the plurality of memories; and

determine the memory state of the memory from the memory states of the plurality of memories.

7. The distributed storage unit of claim 5 , further comprising:

the storage unit control module operable to:

determine that other distributed storage units should be used to reconstruct a data object, wherein the data object was encoded to produce a set of encoded data slices, which includes the stored encoded data slices; and

send a notification denying the request.

8. The distributed storage unit of claim 7 , further comprising:

the storage unit control module operable to:

determine that the distributed storage unit does not have enough currently available resources to produce the reconstructed encoded data slice; and

send a notification denying the request.

9. The distributed storage unit of claim 5 , further comprising:

the storage unit control module operable to:

when the memory state is read only, retrieve the stored encoded data slice from the memory; and

output the retrieved encoded data slice.

10. The distributed storage unit of claim 5 , further comprising:

the storage unit control module operable to, for the memory:

establish the write only state when a write queue for the memory is at or above a high threshold;

establish a read only state when a read queue for the memory is not empty and the write queue is below the high threshold; and

establish a write with read priority when the read queue is empty and the write queue is below the high threshold.

11. A distributed storage unit comprising:

a plurality of memories operable for storing encoded data slices;

one or more parity memories operable for storing parity data of two or more encoded data slices stored in two or more memories of the plurality of memories;

a storage unit control module operable to:

receive a request to write an encoded data slice;

select one of the plurality of memories as a primary memory to store the encoded data slice;

set a state of the selected one of the plurality of memories to a write only memory state of the primary memory and states of other memories of the plurality of memories are to a read only state or a write with read priority state;

store parity information associated with the encoded data slice in one of the one or more parity memories;

store the encoded data slice in the primary memory; and

determine when to rotate the primary memory from the selected one of the plurality of memories to another one of the plurality of memories.

12. The distributed storage unit of claim 11 , wherein the storage unit control module is further to:

determine not to rotate the primary memory when a number of queued write requests for the primary memory is greater than an upper threshold; and

determine to rotate the primary memory when the number of queued write requests is less than the upper threshold limit and there are queued read requests for the primary memory.

13. The distributed storage unit of claim 11 , further comprising:

the storage unit control module operable to determine to rotate the primary memory to the other memory based on one or more of an expiration of time, a command, a memory utilization indicator, a read request history indicator for the primary memory, and memory performance optimization; and

when the primary memory is rotated to the other memory, set the state of the selected one of the plurality of memories to READ.

14. The distributed storage unit of claim 11 , further comprising:

the one or more parity memories includes a plurality of parity memories;

the storage unit control module operable to:

select the one of the one or more parity memories as a primary parity memory; and

determine when to rotate the primary parity memory from the one of the one or more parity memories to another one of the plurality of parity memories.

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 11, 2010
From: GLADWIN, S. CHRISTOPHER; LEGGETTE, WESLEY
To: CLEVERSAFE, INC.
Reel/Frame 024368/0545 →
Continuity (2)
Provisional Application 61246876 · Sep 29, 2009
Related Publication 20110078372A1 · Mar 31, 2011