IP Library Granted Patent US 10,459,797
Granted Patent B2
US 10,459,797 · App. 16/050,236 · Granted Oct 29, 2019

Making trade-offs between rebuild scanning and failing memory device flexibility

Inventors: Jason K. Resch (Chicago, IL); Thomas D. Cocagne (Elk Grove Village, IL); Wesley B. Leggette (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/1092G06F3/0604G06F3/067G06F3/0614G06F3/0629G06F3/0689G06F9/50G06F11/0727G06F11/1076
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,459,797
App. No.
16/050,236
Granted
Oct 29, 2019
Kind
B2
Abstract

A dispersed storage network (DSN) includes receiving a slice access request including a slice name, identifying a sub-range of a DSN address range based on the slice name, identifying a memory device of a group of memory devices associated with the sub-range utilizing a decentralized agreement function based on the slice name, facilitating a slice access request with the identified memory device. For rebuilding a slice, a method includes detecting a storage error, identifying a sub-range of the DSN address range, facilitating rebuilding of the identified sub-range to produce rebuilt encoded data slices, updating location weights of the group of memory devices based on the detected storage error, for each rebuilt encoded data slice, identifying a corresponding memory device of the group of memory devices for storage of the rebuilt encoded data slice utilizing the decentralized agreement function and the updated location weights, and storing the rebuilt encoded data slice.

Claims (53)

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

detecting a storage error associated with a memory device of a group of memory devices;

identifying a sub-range of an DSN address range associated with the group of memory devices;

facilitating rebuilding of the identified sub-range to produce rebuilt encoded data slices;

updating location weights of the group of memory devices based on the detected storage error; and

for each rebuilt encoded data slice, identifying a corresponding memory device of the group of memory devices for storage of the rebuilt encoded data slice utilizing a decentralized agreement function and the updated location weights; and

storing the rebuilt encoded data slice in a corresponding identified memory device.

2. The method of claim 1 , wherein the detecting a storage error includes one or more of: receiving an error message, performing a memory device test, interpreting a memory device test result, detecting a corrupted slice, detecting a failed memory, or detecting a missing slice.

3. The method of claim 1 , wherein the identifying the sub-range of the DSN address range associated with a group of memory devices includes accessing a slice name to sub-range table using an identifier of the memory device.

4. The method of claim 1 , wherein the facilitating includes one or more of: scanning for missing slices across the sub-range, acquiring a decode threshold number of slices for each missing slice, or generating rebuilt slices from the acquired slices.

5. The method of claim 1 , wherein the updating location weights of the group of memory devices includes updating a location weight for a failed memory device to zero and raising location weights for remaining memory devices of a group of memory devices in a total amount equivalent to a previous location weight for the failed memory device.

6. The method of claim 1 , wherein the identifying a corresponding memory device of the group of memory devices for storage of the rebuilt encoded data slice utilizing the decentralized agreement function and the updated location weights includes performing the decentralized agreement function for each of the memory devices using updated location weights, a slice name of the rebuilt encoded data slice, and a memory group identifier to produce ranked scoring information.

7. The method of claim 6 further comprises identifying a corresponding memory device associated with a highest score of the ranked scoring information.

8. The method of claim 1 , wherein the storing the rebuilt encoded data slice in the corresponding identified memory device includes sending the encoded data slice to the identified corresponding memory device for each rebuilt encoded data slice.

9. A computing device of a group of computing devices of a dispersed storage network (DSN), the computing device comprises:

a network interface;

a local memory; and

a processing module operably coupled to the local memory and the network interface, the processing module configured to:

when accessing an encoded data slice:

receive a slice access request that includes a slice name;

identify a sub-range of a DSN address range based on the slice name;

identify a memory device of a group of memory devices associated with the sub-range utilizing a decentralized agreement function based on the slice name;

facilitate a slice access request with the identified memory device; and

when rebuilding an encoded data slice:

detect a storage error associated with a memory device of the group of memory devices;

identify the sub-range of the DSN address range associated with a group of memory devices;

facilitate rebuilding of the identified sub-range to produce rebuilt encoded data slices;

update location weights of the group of memory devices based on the detected storage error;

for each rebuilt encoded data slice, identify a corresponding memory device of the group of memory devices for storage of the rebuilt encoded data slice utilizing the decentralized agreement function and the updated location weights; and

store the rebuilt encoded data slice in the corresponding identified memory device.

10. The computing device of claim 9 , wherein the identify a memory device of a group of memory devices associated with the sub-range utilizing a decentralized agreement function based on the slice name includes performing the decentralized agreement function to produce scores for each of the memory devices of a group of memory devices using one or more of: location weights of each memory device, the slice name, or a memory group identifier.

11. The computing device of claim 9 , wherein the facilitate includes one or more of: scanning for missing slices across the sub-range, acquiring a decode threshold number of slices for each missing slice, or generating rebuilt slices from the acquired slices.

12. The computing device of claim 9 , wherein the update location weights of the group of memory devices includes updating a location weight for a failed memory device to zero and raising location weights for remaining memory devices of a group of memory devices in a total amount equivalent to a previous location weight for the failed memory device.

13. The computing device of claim 9 , wherein the identify a corresponding memory device of the group of memory devices for storage of the rebuilt encoded data slice utilizing the decentralized agreement function and the updated location weights includes performing the decentralized agreement function for each of the memory devices using updated location weights, a slice name of the rebuilt encoded data slice, and a memory group identifier to produce ranked scoring information.

14. The computing device of claim 13 further comprises identifying a corresponding memory device associated with a highest score of the ranked scoring information.

15. The computing device of claim 9 , wherein the updating location weights of the group of memory devices includes updating a location weight for a failed memory device to zero and raising location weights for remaining memory devices of the group of memory devices in a total amount equivalent to a previous location weight for the failed memory device.

16. A method for execution by one or more processing modules of one or more computing devices of a dispersed storage network (DSN), the method comprises:

when accessing an encoded data slice:

receiving a slice access request that includes a slice name;

identifying a sub-range of a DSN address range based on the slice name;

identifying a memory device of a group of memory devices associated with the sub-range utilizing a decentralized agreement function based on the slice name;

facilitating a slice access request with the identified memory device; and

when rebuilding an encoded data slice:

detecting a storage error associated with a memory device of the group of memory devices;

identifying the sub-range of the DSN address range associated with a group of memory devices;

facilitating rebuilding of the identified sub-range to produce rebuilt encoded data slices;

updating location weights of the group of memory devices based on the detected storage error;

for each rebuilt encoded data slice, identifying a corresponding memory device of the group of memory devices for storage of the rebuilt encoded data slice utilizing the decentralized agreement function and the updated location weights; and

storing the rebuilt encoded data slice in a corresponding identified memory device.

17. The method of claim 16 , wherein the identifying a sub-range of a DSN address range includes any of: accessing a slice name to sub-range table or performing a deterministic function on the slice name to produce the sub-range.

18. The method of claim 16 , wherein the identifying a memory device of a group of memory devices associated with the sub-range utilizing a decentralized agreement function based on the slice name includes performing the decentralized agreement function to produce scores for each of the memory devices of a group of memory devices using one or more of: location weights of each memory device, the slice name, or a memory group identifier.

19. The method of claim 16 , wherein the identify a corresponding memory device of the group of memory devices for storage of the rebuilt encoded data slice utilizing the decentralized agreement function and the updated location weights includes performing the decentralized agreement function for each of the memory devices using updated location weights, a slice name of the rebuilt encoded data slice, and a memory group identifier to produce ranked scoring information.

20. The method of claim 16 , wherein the updating location weights of the group of memory devices includes updating a location weight for a failed memory device to zero and raising location weights for remaining memory devices of the group of memory devices in a total amount equivalent to a previous location weight for the failed memory device.

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 DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2018
From: RESCH, JASON K.; COCAGNE, THOMAS D.; LEGGETTE, WESLEY B.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 046511/0435 →