IP Library Granted Patent US 10,788,994
Granted Patent B1
US 10,788,994 · App. 14/586,083 · Granted Sep 29, 2020

Disaggregation of flash management

Inventors: John S. Harwood (Paxton, MA); Robert W. Beauchamp (Berlin, MA); Roy E. Clark (Hopkinton, MA); Dragan Savic (Brookline, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0626G06F3/0653G06F3/0688
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,788,994
App. No.
14/586,083
Granted
Sep 29, 2020
Kind
B1
Abstract

A system, computer program product, and computer-executable method for managing flash devices within a data storage environment utilized by an application of one or more applications, wherein the application accesses the managed flash devices through a pool of flash storage provided by the data storage, the system, computer program product, and computer-executable method comprising receiving a data I/O from the application, analyzing the data I/O directed toward the pool of flash storage in relation to the flash devices, and managing the flash devices based on data I/Os directed toward the pool of flash storage by the application.

Claims (77)

1. A computer-executable method for managing flash devices within a data storage environment utilized by an application of one or more applications, wherein the application accesses the managed flash devices through a pool of flash storage provided by the data storage environment, the computer-executable method comprising:

receiving a data I/O from the application, wherein the data I/O is directed toward the pool of flash storage;

wherein the data storage environment provides the pool of flash storage from two or more data storage systems including sources of flash data storage within the data storage environment, wherein each of the two or more data storage systems is enabled to include one or more flash devices;

the pool of flash storage comprising a flash stack including at least a first flash device implemented in a compute node of the data storage environment, a second flash device implemented in a given one of the data storage systems that is separate from the compute node in which the first flash device is implemented, and a third flash device implemented in a flash appliance that is separate from the compute node in which the first flash device is implemented and the given data storage system in which the second flash device is implemented;

the pool of flash storage thereby comprising multiple distinct flash devices from respective ones of the compute node, the given data storage system and the flash appliance, the multiple distinct flash devices corresponding to respective different layers of the flash stack;

analyzing the data I/O in relation to the flash devices;

grouping the data I/O with one or more data streams based on a type of workload associated with the data I/O; and

managing the flash devices in the flash stack of the pool of flash storage based on the analysis of the data I/O, each of the one or more applications using the pool of flash storage being unaware of the management of the flash devices;

wherein managing the flash devices in the flash stack of the pool of flash storage is performed in a data management module comprising a processor coupled to a memory;

wherein managing the flash devices in the flash stack of the pool of flash storage comprises:

monitoring wear of the flash devices; and

reducing wear of the flash devices by selecting at least one of recoding data such that an increased number of bits are in the erased state and compressing data; and

wherein the data storage environment is enabled to manage low level functions of each of the flash devices within the data storage environment.

2. The computer-executable method of claim 1 , wherein the analyzing comprises:

determining a pattern from the data I/O; and

creating a data management policy based on the determination, wherein the data management policy indicates how each of the managed flash devices are to be allocated to the pool of flash storage.

3. The computer-executable method of claim 2 , wherein managing the flash devices based on the data I/O comprises:

modifying an allocation of the managed flash devices to the pool of flash storage based on the data management policy.

4. The computer-executable method of claim 2 , wherein managing the flash devices based on the data I/O comprises:

overprovisioning a first flash device of the managed flash devices based on the data management policy.

5. The computer-executable method of claim 1 , further comprising:

managing writes to the pool of flash storage based on the analysis of the data I/O.

6. The computer-executable method of claim 1 , wherein managing the flash devices based on the data I/O further comprises:

moving data from a first flash device of the flash devices to a second flash device of the flash devices, wherein the application is unaware that the data moved from the first flash device to the second flash device.

7. A system, comprising:

a data storage environment including flash devices, wherein one or more applications utilize the data storage environment, wherein the one or more applications access the flash devices through a pool of flash storage provided by the data storage environment; and

computer-executable program logic encoded in memory of one or more computers enabled to manage the flash devices within the data storage environment, wherein the computer-executable program logic is configured for the execution of:

receiving a data I/O from an application of the one or more applications, wherein the data I/O is directed toward the pool of flash storage;

wherein the data storage environment provides the pool of flash storage from two or more data storage systems including sources of flash data storage within the data storage environment, wherein each of the two or more data storage systems is enabled to include one or more flash devices;

the pool of flash storage comprising a flash stack including at least a first flash device implemented in a compute node of the data storage environment, a second flash device implemented in a given one of the data storage systems that is separate from the compute node in which the first flash device is implemented, and a third flash device implemented in a flash appliance that is separate from the compute node in which the first flash device is implemented and the given data storage system in which the second flash device is implemented;

the pool of flash storage thereby comprising multiple distinct flash devices from respective ones of the compute node, the given data storage system and the flash appliance, the multiple distinct flash devices corresponding to respective different layers of the flash stack;

analyzing the data I/O in relation to the flash devices;

grouping the data I/O with one or more data streams based on a type of workload associated with the data I/O; and

managing the flash devices in the flash stack of the pool of flash storage based on the analysis of the data I/O, each of the one or more applications using the pool of flash storage being unaware of the management of the flash devices;

wherein managing the flash devices in the flash stack of the pool of flash storage is performed in a data management module comprising a processor coupled to a memory;

wherein managing the flash devices in the flash stack of the pool of flash storage comprises:

monitoring wear of the flash devices; and

reducing wear of the flash devices by selecting at least one of recoding data such that an increased number of bits are in the erased state and compressing data; and

wherein the data storage environment is enabled to manage low level functions of each of the flash devices within the data storage environment.

8. The system method of claim 7 , wherein the analyzing comprises:

determining a pattern from the data I/O; and

creating a data management policy based on the determination, wherein the data management policy indicates how each of the managed flash devices are to be allocated to the pool of flash storage.

9. The system of claim 8 , wherein managing the flash devices based on the data I/O comprises:

modifying an allocation of the managed flash devices to the pool of flash storage based on the data management policy.

10. The system of claim 8 , wherein managing the flash devices based on the data I/O comprises:

overprovisioning a first flash device of the managed flash devices based on the data management policy.

11. The system of claim 7 , wherein the computer-executable program logic is further configured for the execution of:

managing writes to the pool of flash storage based on the analysis of the data I/O.

12. The system of claim 7 , wherein managing the flash devices based on the data I/O further comprises:

moving data from a first flash device of the flash devices to a second flash device of the flash devices, wherein the application is unaware that the data moved from the first flash device to the second flash device.

13. A computer program product for managing flash devices within a data storage environment utilized by an application of one or more applications, wherein the application accesses the managed flash devices through a pool of flash storage provided by the data storage environment, the computer program product comprising:

a non-transitory computer readable medium encoded with computer-executable code, the code configured to enable the execution of:

receiving a data I/O from the application, wherein the data I/O is directed toward the pool of flash storage;

wherein the data storage environment provides the pool of flash storage from two or more data storage systems including sources of flash data storage within the data storage environment, wherein each of the two or more data storage systems is enabled to include one or more flash devices;

the pool of flash storage comprising a flash stack including at least a first flash device implemented in a compute node of the data storage environment, a second flash device implemented in a given one of the data storage systems that is separate from the compute node in which the first flash device is implemented, and a third flash device implemented in a flash appliance that is separate from the compute node in which the first flash device is implemented and the given data storage system in which the second flash device is implemented;

the pool of flash storage thereby comprising multiple distinct flash devices from respective ones of the compute node, the given data storage system and the flash appliance, the multiple distinct flash devices corresponding to respective different layers of the flash stack;

analyzing the data I/O in relation to the flash devices;

grouping the data I/O with one or more data streams based on a type of workload associated with the data I/O; and

managing the flash devices in the flash stack of the pool of flash storage based on the analysis of the data I/O, each of the one or more applications using the pool of flash storage being unaware of the management of the flash devices;

wherein managing the flash devices in the flash stack of the pool of flash storage is performed in a data management module comprising a processor coupled to a memory;

wherein managing the flash devices in the flash stack of the pool of flash storage comprises:

monitoring wear of the flash devices; and

reducing wear of the flash devices by selecting at least one of recoding data such that an increased number of bits are in the erased state and compressing data; and

wherein the data storage environment is enabled to manage low level functions of each of the flash devices within the data storage environment.

14. The computer program product of claim 13 , wherein the analyzing comprises:

determining a pattern from the data I/O; and

creating a data management policy based on the determination, wherein the data management policy indicates how each of the managed flash devices are to be allocated to the pool of flash storage.

15. The computer program product of claim 14 , wherein managing the flash devices based on the data I/O comprises:

modifying an allocation of the managed flash devices to the pool of flash storage based on the data management policy.

16. The computer program product of claim 14 , wherein managing the flash devices based on the data I/O comprises:

overprovisioning a first flash device of the managed flash devices based on the data management policy.

17. The computer program product of claim 13 , the code further configured to enable the execution of:

managing writes to the pool of flash storage based on the analysis of the data I/O.

18. The computer program product of claim 13 , wherein managing the flash devices based on the data I/O further comprises:

moving data from a first flash device of the flash devices to a second flash device of the flash devices, wherein the application is unaware that the data moved from the first flash device to the second flash device.

19. The computer program product of claim 13 , wherein the flash stack further comprises a fourth flash device implemented in another flash appliance that is separate from the compute node in which the first flash device is implemented and the given data storage system in which the second flash device is implemented.

20. The computer program product of claim 19 , wherein the flash stack further comprises a fifth flash device implemented in another compute node of the data storage environment that is separate from the compute node in which the first flash device is implemented.

Assignments (5)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2016
From: HARWOOD, JOHN S.; BEAUCHAMP, ROBERT W.; CLARK, ROY E.; SAVIC, DRAGAN
To: EMC CORPORATION
Reel/Frame 040732/0500 →
Cited By (1)
US 12,346,249