IP Library Granted Patent US 9,274,890
Granted Patent B2
US 9,274,890 · App. 13/925,270 · Granted Mar 1, 2016

Distributed storage network memory access based on memory state

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,274,890
App. No.
13/925,270
Granted
Mar 1, 2016
Kind
B2
Abstract

A storage device of a DSN includes a plurality of memory devices, an interface, and a processing module. The storage device receives an encoded data slice of a set of encoded data slices, wherein a data segment is dispersed storage error encoded to produce the set of encoded data slices. The dispersed storage error encoding includes arranging the data segment into a data matrix of data blocks, generating an encoded data matrix from the data matrix and an encoding matrix, and arranging encoded data blocks of the encoded data matrix into the set of encoded data slices. The storage unit then divides the encoded data slice into encoded data slice partitions and generates a parity data partition therefrom. The storage device then stores the encoded data slice partitions and the parity data partition in separate memory devices.

Claims (53)

1. A method for execution by one or more devices of a distributed storage network (DSN), the method comprises:

dispersed storage error encoding a data segment to produce a set of encoded data slices, wherein the dispersed storage error encoding includes arranging the data segment into a data matrix of data blocks, generating an encoded data matrix from the data matrix and an encoding matrix, and arranging encoded data blocks of the encoded data matrix into the set of encoded data slices;

receiving, by a storage device of the DSN, an encoded data slice of the set of encoded data slices;

dividing, by the storage device, the encoded data slice into encoded data slice partitions;

generating, by the storage device, a parity data partition based on the encoded data slice partitions;

storing, by the storage device, the encoded data slice partitions in separate memory devices of a plurality of memory devices of the storage device; and

storing, by the storage device, the parity data partition in another separate memory of the Plurality of memory devices.

2. The method of claim 1 further comprises:

maintaining, by the storage device, memory states of the plurality of memory devices, wherein the memory states include a write only state, a read state, and a write with read priority state; and

establishing, by the storage device, the write only state for the separate memory devices and the other separate memory device prior to storing the encoded data slice partitions and the parity data partition.

3. The method of claim 1 further comprises:

receiving, by a second storage device of the DSN, a second encoded data slice of the set of encoded data slices;

dividing, by the second storage device, the second encoded data slice into second encoded data slice partitions;

generating, by the second storage device, a second parity data partition based on the second encoded data slice partitions;

storing, by the second storage device, the second encoded data slice partitions in separate memory devices of a plurality of memory devices of the second storage device; and

storing, by the second storage device, the parity data partition in another separate memory of the plurality of memory devices of the second storage device.

4. The method of claim 3 further comprises:

maintaining, by the second storage device, memory states of the plurality of memory devices, wherein the memory states include a write only state, a read state, or a write with read priority state; and

establishing, by the second storage device, the write only state for the separate memory devices and the other separate memory device prior to storing the second encoded data slice partitions and the second parity data partition.

5. The method of claim 1 further comprises:

receiving, by the storage device, a read request for the encoded data slice;

determining, by the storage device, memory state of the separate memory devices and the other separate memory devices, wherein the memory state is one of a write state, a read state, or a write with read priority state;

when the separate memory devices are in the read state or when the other separate memory device and a sufficient number of the separate memory devices are in the read state, reconstructing, by the storage device, the encoded data slice from the encoded data slice partitions or from a sufficient number of the encoded slice partitions and the data parity partition; and

outputting, by the storage device, the reconstructed encoded data slice.

6. The method of claim 5 further comprises:

when the separate memory devices are in the write with read priority state or when the other separate memory device and a sufficient number of the separate memory devices are in the write with read priority state, pausing, by the storage device, write requests to the separate memory devices and to the other separate memory device;

when the write requests to the separate memory devices and to the other separate memory device are paused, reconstructing, by the storage device, the encoded data slice from the encoded data slice partitions or from a sufficient number of the encoded slice partitions and the data parity partition; and

outputting, by the storage device, the reconstructed encoded data slice.

7. The method of claim 5 further comprises:

when the separate memory devices are in the write state or when the other separate memory device and a sufficient number of the separate memory devices are in the write state, sending, by the storage device, a read response message indicating a denial of the read request.

8. A storage device of a dispersed storage network (DSN), the storage device comprises:

a plurality of memory devices;

an interface; and

a processing module operable to:

receive, via the interface, an encoded data slice of a set of encoded data slices, wherein a data segment is dispersed storage error encoded to produce the set of encoded data slices, wherein the dispersed storage error encoding includes arranging the data segment into a data matrix of data blocks, generating an encoded data matrix from the data matrix and an encoding matrix, and arranging encoded data blocks of the encoded data matrix into the set of encoded data slices;

divide the encoded data slice into encoded data slice partitions;

generate a parity data partition based on the encoded data slice partitions;

store the encoded data slice partitions in separate memory devices of the plurality of memory devices of the storage device; and

store the parity data partition in another separate memory of the plurality of memory devices.

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

maintain memory states of the plurality of memory devices, wherein the memory states include a write only state, a read state, and a write with read priority state; and

establish the write only state for the separate memory devices and the other separate memory device prior to storing the encoded data slice partitions and the parity data partition.

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

receive, via the interface, a read request for the encoded data slice;

determine memory state of the separate memory devices and the other separate memory devices, wherein the memory state is one of a write state, a read state, or a write with read priority state;

when the separate memory devices are in the read state or when the other separate memory device and a sufficient number of the separate memory devices are in the read state, reconstruct the encoded data slice from the encoded data slice partitions or from a sufficient number of the encoded slice partitions and the data parity partition; and

output, via the interface, the reconstructed encoded data slice.

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

when the separate memory devices are in the write with read priority state or when the other separate memory device and a sufficient number of the separate memory devices are in the write with read priority state, pause write requests to the separate memory devices and to the other separate memory device;

when the write requests to the separate memory devices and to the other separate memory device are paused, reconstruct the encoded data slice from the encoded data slice partitions or from a sufficient number of the encoded slice partitions and the data parity partition; and

output, via the interface, the reconstructed encoded data slice.

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

when the separate memory devices are in the write state or when the other separate memory device and a sufficient number of the separate memory devices are in the write state, send, via the interface, a read response message indicating a denial of the read request.

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 →
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 →