IP Library Granted Patent US 11,073,993
Granted Patent B1
US 11,073,993 · App. 16/885,602 · Granted Jul 27, 2021

Predicting usable memory

Inventors: Gary W. Grube (Barrington Hills, IL); Jason K. Resch (Chicago, IL); Timothy W. Markison (Mesa, AZ); Ilya Volvovski (Chicago, IL); Manish Motwani (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F3/0619G06F3/067G06F3/0647G06F3/0679G06F12/0223G06F11/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 11,073,993
App. No.
16/885,602
Granted
Jul 27, 2021
Kind
B1
Abstract

A method begins by a processing module determining a priority access level of an encoded data slice stored on a memory device. The method continues by determining a memory status for the memory device, wherein the memory status includes a plurality of discrete usability levels with a highest usability level representing a maximum amount of usable memory, a second usability level representing a lower usability level than the highest usability level and a lowest usability level representing an unusable level when the usable memory is below a threshold. The method continues with the processing module determining whether to migrate the encoded data slice from the memory device based on the priority access level and the memory status. The method continues with the processing module identifying another memory device. The method continues with the processing module facilitating migration of the encoded data slice to another memory device.

Claims (96)

1. A method comprises:

determining a priority access level of an encoded data slice stored on a memory device;

predicting a memory status of usable memory over time for the memory device, wherein the predicting memory status over time includes comparing present usable memory to a plurality of discrete usability levels, with a highest usability level representing a maximum amount of usable memory, at least a second usability level representing a lower usability level than the highest usability level and a lowest usability level representing an unusable level where the present usable memory is below a threshold;

determining, based on the priority access level and the memory status, whether to migrate the encoded data slice from the memory device; and

when it is determined to migrate the encoded data slice from the memory device:

identifying another memory device; and

facilitating migration of the encoded data slice to the another memory device.

2. The method of claim 1 , wherein the facilitating migration of the encoded data slice comprises:

determining to replicate the encoded data slice; and

storing the encoded data slice in the another memory device.

3. The method of claim 2 , wherein the storing the encoded data slice in the another memory device comprises:

identifying the another memory device;

determining another memory status of the another memory device;

comparing a representation of the priority access level and the another memory status to a sliding migration scale; and

when the representation compares favorably to the sliding migration scale, facilitate storing the encoded data slice in the another memory device.

4. The method of claim 1 further comprises:

deleting the encoded data slice from the memory device; and

updating a memory assignment table to indicate that the another memory device is storing the encoded data slice.

5. The method of claim 1 further comprises:

tracking migration history of encoded data slices from the memory device; and

decommissioning the memory device based on the migration history.

6. The method of claim 1 , wherein the determining the priority access level is based on at least one of:

a number of accesses of the encoded data slice;

a service-level agreement;

a data type indicator;

a predetermination;

a lookup;

a priority level of data contained within the encoded data slice;

a priority level of a user account associated with the encoded data slice;

a message; or

a command.

7. The method of claim 1 , wherein the predicting a memory status is based on at least one:

a service life indicator;

a historical performance record;

an error message;

an error rate;

a performance test result;

a predetermination;

a query;

a message; or

a command.

8. The method of claim 1 , wherein the determining whether to migrate the encoded data slice comprises at least one of:

comparing a representation of the priority access level and the memory status to a sliding migration scale; and

when the representation compares unfavorably to the sliding migration scale, indicating the migration of the encoded data slice.

9. A distributed storage (DS) processing unit comprises:

an interface for coupling to a plurality of memory devices; and

a processing module operable to:

determine a priority access level of an encoded data slice stored on a memory device;

predict a memory status of usable memory over time for the memory device, wherein the predicting memory status over time includes comparing present usable memory to a plurality of discrete usability levels, with a highest usability level representing a maximum amount of usable memory, at least a second usability level representing a lower usability level than the highest usability level and a lowest usability level representing an unusable level where the present usable memory is below a threshold;

determine, based on the priority access level and the memory status, whether to migrate the encoded data slice from the memory device; and

when it is determined to migrate the encoded data slice from the memory device:

identify another memory device; and

facilitate migration of the encoded data slice to the another memory device.

10. The DS processing unit of claim 9 , wherein the processing module functions to facilitate migrating the encoded data slice by:

determining to replicate the encoded data slice; and

storing, via the interface, the encoded data slice in the another memory device.

11. The DS processing unit of claim 10 , wherein the processing module functions to store the encoded data slice in the another memory device by:

identifying the another memory device;

determining another memory status of the another memory device;

comparing a representation of the priority access level and the another memory status to a sliding migration scale; and

when the representation compares favorably to the sliding migration scale, facilitate storing, via the interface, the encoded data slice in the another memory device.

12. The DS processing unit of claim 9 , wherein the processing module further functions to:

delete the encoded data slice from the memory device; and

update a memory assignment table to indicate that the another memory device is storing the encoded data slice.

13. The DS processing unit of claim 9 , wherein the processing module further functions to:

track migration history of encoded data slices from the memory device; and

decommission the memory device based on the migration history.

14. The DS processing unit of claim 9 , wherein the processing module functions to determine whether to migrate the encoded data slice by at least one of:

comparing a representation of the priority access level and the memory status to a sliding migration scale; and

when the representation compares unfavorably to the sliding migration scale, indicating the migration of the encoded data slice.

15. A memory system comprises:

a plurality of memory devices; and

a processing module operable to:

determine a priority access level of an encoded data slice stored on a memory device;

predict a memory status of usable memory over time for the memory device, wherein the predicting memory status over time includes comparing present usable memory to a plurality of discrete usability levels, with a highest usability level representing a maximum amount of usable memory, at least a second usability level representing a lower usability level than the highest usability level and a lowest usability level representing an unusable level where the present usable memory is below a threshold;

determine, based on the priority access level and the memory status, whether to migrate the encoded data slice from the memory device; and

when it is determined to migrate the encoded data slice from the memory device:

identify another memory device; and

facilitate migration of the encoded data slice to the another memory device.

16. The memory system of claim 15 , wherein the processing module functions to facilitate migrating the encoded data slice by:

determining to replicate the encoded data slice; and

storing the encoded data slice in the another memory device.

17. The memory system of claim 15 , wherein the processing module functions to store the encoded data slice in the another memory device by:

identifying the another memory device;

determining another memory status of the another memory device;

comparing a representation of the priority access level and the another memory status to a sliding migration scale; and

when the representation compares favorably to the sliding migration scale, facilitate storing the encoded data slice in the another memory device.

18. The memory system of claim 15 , wherein the processing module further functions to:

delete the encoded data slice from the memory device; and

update a memory assignment table to indicate that the another memory device is storing the encoded data slice.

19. The memory system of claim 15 , wherein the processing module further functions to:

track migration history of encoded data slices from the memory device; and

decommission the memory device based on the migration history.

20. The memory system of claim 15 , wherein the processing module functions to determine whether to migrate the encoded data slice by at least one of:

comparing a representation of the priority access level and the memory status to a sliding migration scale; and

when the representation compares unfavorably to the sliding migration scale, indicating the migration of the encoded data slice.

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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2020
From: GRUBE, GARY W.; RESCH, JASON K.; MARKISON, TIMOTHY W.; VOLVOVSKI, ILYA; MOTWANI, MANISH
To: CLEVERSAFE, INC.
Reel/Frame 052819/0766 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2020
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 052819/0829 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052820/0037 →
Continuity (3)
Continuation 16174504 · Oct 30, 2018
Continuation 13204061 · Aug 5, 2011
Provisional Application 61377428 · Aug 26, 2010