IP Library › Granted Patent US 11,755,224
Granted Patent B2
US 11,755,224 · App. 16/078,378 · Granted Sep 12, 2023

Storing data in slices of different sizes within different storage tiers

Inventor: Nickolay Alexandrovich Dalmatov (Saint Petersburg, RU)
Assignee: EMC IP Holding Company LLC
G06F3/0647G06F3/0611G06F3/0683G11B5/012
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,755,224
App. No.
16/078,378
Filed
Aug 21, 2018
Granted
Sep 12, 2023
Kind
B2
Art Unit
2136
USPC
711/117
Abstract

A technique manages data in slices of difference sizes within different storage tiers. The technique involves, based on access activity for first data currently residing within a first slice having a first size, selecting a target set of storage devices within which to store the first data from among multiple sets of storage devices. The technique further involves moving the first data from the first slice having the first size to a second slice having a second size that is different from the first size. The technique further involves, after the first data is moved from the first slice to the second slice, storing the second slice in the target set of storage devices.

Claims (97)

1. In data storage equipment operative to store data within slices of different sizes, a method of managing the data, the method comprising:

based on access activity for first data and access activity for second data, the first data and the second data both residing within a first slice that backs a logical block address (LBA) range of a logical unit (LUN), the first slice having a first size, the first slice stored in a set of storage devices in a first tier, selecting, from among multiple other sets of storage devices, (i) a first target set of storage devices in a second tier within which to store the first data and (ii) a second target set of storage devices in a third tier within which to store the second data, the first tier, the second tier, and the third tier providing respective levels of data access performance;

simultaneously (i) moving the first data from the first slice having the first size to a second slice having a second size, and (ii) moving the second data from the first slice to a third slice having a third size, the second slice backing a first subrange of the LBA range, the third slice backing a second subrange of the LBA range, wherein the first size, the second size, and the third size are different from one another, wherein the second slice is backed by the first target set of storage devices in the second tier, and wherein the third slice is backed by the second target set of storage devices in the third tier; and

storing the second slice in the first target set of storage devices and the third slice in the second target set of storage devices;

wherein selecting the first target set of storage devices and the second target set of storage devices further includes:

based on a set of data structures defining a predetermined relationship between multiple slice sizes and respective ranges of access activity, (i) selecting the second size of the second slice to store the first data, and (ii) selecting the third size of the third slice to store the second data.

2. A method as in claim 1 wherein the data storage equipment includes (i) primary memory and (ii) secondary storage coupled to the primary memory, the secondary storage including multiple sets of storage devices, including the set of storage devices and the multiple other sets of storage devices;

wherein moving the first data from the first slice to the second slice includes reading the first data from a source set of storage devices into the second slice while the second slice resides in the primary memory; and

wherein storing the second slice in the first target set of storage devices includes writing the second slice from the primary memory into the first target set of storage devices.

3. A method as in claim 2

wherein selecting the first target set of storage devices includes performing a tier selection operation to identify, as a destination tier for the first data, the second storage tier based on the access activity for the first data.

4. A method as in claim 3 wherein the source set of storage devices is operative to store slices having the first size;

wherein the first target set of storage devices is operative to store slices having the second size;

wherein the access activity for the first data indicates a decrease in recent access activity for the first data; and

wherein performing the tier selection operation to identify, as the destination tier for the first data, the second storage tier based on the access activity for the first data includes choosing the second storage tier in place of the first storage tier in response to the decrease in recent access activity for the first data.

5. A method as in claim 4 wherein the source set of storage devices provides average data access time that is faster than that of the first target set of storage devices;

wherein the first size is smaller than the second size; and

wherein reading the first data from the source set of storage devices into the second slice while the second slice resides in the primary memory includes merging, within the primary memory, the first slice having the first size with a set of other slices having the first size to form the second slice.

6. A method as in claim 3 wherein the source set of storage devices is operative to store slices having the first size;

wherein the first target set of storage devices is operative to store slices having the second size;

wherein the access activity for the first data indicates an increase in recent access activity for the first data; and

wherein performing the tier selection operation to identify, as the destination tier for the first data, the second storage tier based on the access activity for the first data includes choosing the second storage tier in place of the first storage tier in response to the increase in recent access activity for the first data.

7. A method as in claim 6 wherein the source set of storage devices provides average data access time that is slower than that of the first target set of storage devices;

wherein the first size is larger than the second size; and

wherein reading the first data from the source set of storage devices into the second slice while the second slice resides in the primary memory includes partitioning, within the primary memory, the first slice having the first size into multiple other slices having the second size, the second slice being a particular one of the other slices that contains the first data.

8. A method as in claim 3 wherein the source set of storage devices is operative to store slices having the first size;

wherein the first target set of storage devices is operative to store slices having the second size;

wherein the access activity for the first data indicates higher write activity for the first data relative to other data within the multiple sets of storage devices; and

wherein performing the tier selection operation to identify, as the destination tier for the first data, the second storage tier based on the access activity for the first data includes choosing the second storage tier in place of the first storage tier in response to the higher write activity for the first data relative to the other data within the multiple sets of storage devices.

9. A method as in claim 8 wherein the source set of storage devices provides average data access time that is slower than that of the first target set of storage devices;

wherein the first size is smaller than the second size;

wherein the multiple sets of storage devices includes a set of single-level cell solid state drives and a set of multi-level cell solid state drives; and

wherein choosing the second storage tier includes picking the set of single-level cell solid state drives, as the first target set of storage devices, over the set of multi-level cell solid state drives.

10. A method as in claim 3 wherein the source set of storage devices is operative to store slices having the first size;

wherein the first target set of storage devices is operative to store slices having the second size;

wherein the access activity for the first data indicates higher read activity for the first data relative to other data within the multiple sets of storage devices; and

wherein performing the tier selection operation to identify, as the destination tier for the first data, the second storage tier based on the access activity for the first data includes choosing the second storage tier in place of the first storage tier in response to the higher read activity for the first data relative to the other data within the multiple sets of storage devices.

11. A method as in claim 10 wherein the source set of storage devices provides average data access time that is slower than that of the first target set of storage devices;

wherein the first size is smaller than the second size;

wherein the multiple sets of storage devices includes a set of single-level cell solid state drives and a set of multi-level cell solid state drives; and

wherein choosing the second storage tier includes picking the set of multi-level cell solid state drives, as the first target set of storage devices, over the set of single-level cell solid state drives.

12. A method as in claim 2 wherein the data storage equipment is operative to receive host input/output (I/O) requests from a set of host computers, and store host data within the secondary storage and load the host data from the secondary storage in response to the host I/O requests; and

wherein the method further comprises:

updating a performance data repository in response to each host I/O request from the set of host computers.

13. A method as in claim 12 wherein selecting the first target set of storage devices within which to store the first data from among the multiple sets of storage devices includes:

accessing the performance data repository to identify a set of I/O statistics for the first data, and

selecting the first target set of storage devices from the multiple sets of storage devices based on the set of I/O statistics for the first data.

14. A method as in claim 12 wherein the first size is a multiple, N, of the second size, where N is an integer that is greater than 1.

15. A method as in claim 12 wherein the second size is a multiple, N, of the first size, where N is an integer that is greater than 1.

16. A method as in claim 12 wherein the secondary storage includes a set of solid state drives and a set of magnetic disk drives;

wherein reading the first data from the source set of storage devices includes retrieving the first data from one of the set of solid state drives and the set of magnetic disk drives into the primary memory; and

wherein storing the second slice in the first target set of storage devices includes flushing the second slice from the primary memory to the other of the set of solid state drives and the set of magnetic disk drives into the primary memory.

17. A method as in claim 12 wherein the secondary storage includes a set of single-level cell solid state drives and a set of multi-level cell solid state drives;

wherein reading the first data from the source set of storage devices includes retrieving the first data from one of the set of single-level cell solid state drives and the set of multi-level cell solid state drives into the primary memory; and

wherein storing the second slice in the first target set of storage devices includes flushing the second slice from the primary memory to the other of the set of single-level cell solid state drives and the set of multi-level cell solid state drives.

18. Data storage equipment, comprising:

a performance data repository;

memory; and

control circuitry coupled to the performance data repository and the memory, the memory storing instructions which, when carried out by the control circuitry, cause the control circuitry to perform acts comprising:

based on access activity read from the performance data repository for first data and access activity read from the performance data repository for second data, the first data and the second data both residing within a first slice that backs a logical block address (LBA) range of a logical unit (LUN), the first slice having a first size, the first slice stored in a set of storage devices in a first tier, selecting, from among multiple other sets of storage devices, (i) a first target set of storage devices in a second tier within which to store the first data and (ii) a second target set of storage devices in a third tier within which to store the second data, the first tier, the second tier, and the third tier providing respective levels of data access performance,

simultaneously, (i) moving the first data from the first slice having the first size to a second slice having a second size, and (ii) moving second data from the first slice to a third slices slice having a third size, the second slice backing a first subrange of the LBA range, the third slice backing a second subrange of the LBA range, wherein the first size, the second size, and the third size are different from one another, wherein the second slice is backed by the first target set of storage devices in the second tier, and wherein the third slice is backed by the second target set of storage devices in the third tier, and

storing the second slice in the first target set of storage devices and the third slice in the second target set of storage devices;

wherein selecting the first target set of storage devices and the second target set of storage devices further includes:

based on a set of data structures defining a predetermined relationship between multiple slice sizes and respective ranges of access activity, (i) selecting the second size of the second slice to store the first data, and (ii) selecting the third size of the third slice to store the second data.

19. A computer program product having a non-transitory computer readable medium which stores a set of instructions to store data within slices of different sizes; the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

based on access activity for first data and access activity for second data, the first data and the second data both residing within a first slice that backs a logical block address (LBA) range of a logical unit (LUN), the first slice having a first size, the first slice stored in a set of storage devices in a first tier, selecting, from among multiple other sets of storage devices, (i) a first target set of storage devices in a second tier within which to store the first data and (ii) a second target set of storage devices in a third tier within which to store the second data, the first tier, the second tier, and the third tier providing respective levels of data access performance;

simultaneously, (i) moving the first data from the first slice having the first size to a second slice having a second size, and (ii) moving second data from the first slice to a third slice having a third size, the second slice backing a first subrange of the LBA range, the third slice backing a second subrange of the LBA range, wherein the first size, the second size, and the third size are different from one another, wherein the second slice is backed by the first target set of storage devices in the second tier, and wherein the third slice is backed by the second target set of storage devices in the third tier; and

storing the second slice in the first target set of storage devices and the third slice in the second target set of storage devices;

wherein selecting the first target set of storage devices and the second target set of storage devices further includes:

based on a set of data structures defining a predetermined relationship between multiple slice sizes and respective ranges of access activity, (i) selecting the second size of the second slice to store the first data, and (ii) selecting the third size of the third slice to store the second data.

20. A method as in claim 3 wherein the data storage equipment is operative to receive host input/output (I/O) requests from a set of host computers, and store host data within the secondary storage and load the host data from the secondary storage in response to the host I/O requests; and

wherein the method further comprises:

updating a performance data repository in response to each host I/O request from the set of host computers.

21. A method as in claim 1 wherein moving the first data from the first slice to the second slice includes:

transferring, as at least some of the contents of the first slice, the first data to a primary memory slice in primary memory, the primary memory slice having the second size that is different from the first size; and

transferring contents from the primary memory slice in primary memory to the second slice in the first target set of storage devices.

22. A method as in claim 1 wherein the first data has a size that is different from both the first size and the second size.

23. A method as in claim 1 wherein choosing the first target set of storage devices includes:

comparing the average access rate per unit of storage space metric for the first data to a plurality of metric ranges;

selecting a slice size based on a result of comparing the average access rate per unit of storage space metric for the first data to the plurality of metric ranges; and

identifying the first target set of storage devices from a plurality of storage devices based on the selected slice size.

24. A method as in claim 23 wherein the average access rate per unit of storage space metric for the first data is average input/output operations per second per gigabyte (IOPS/GB); and

wherein selecting the slice size includes:

locating an entry within a mapping table having a plurality of entries that map the plurality of metric ranges to a plurality of slice sizes, the entry corresponding to a particular metric range, and the metric falling within the particular metric range.

25. A method as in claim 23 wherein the first target set of storage devices forms the first storage tier;

wherein storing the second slice in the first target set of storage devices includes placing data of the second slice into the first storage tier; and

wherein the method further comprises:

before selecting the first target set of storage devices, partitioning third data residing within a fourth slice that is larger than the first slice into the first data and fourth data; and

when the first data is moved to the second slice and the data of the second slice is placed into the first storage tier, moving the fourth data into a second storage tier that is different from the first storage tier.

26. A method as in claim 23 wherein the first slice is in the first storage tier; and

wherein moving the first data from the first slice includes:

reading the first data from the first storage tier; and

combining the first data read from the first storage tier with other data read from the second storage tier that is different from the first storage tier to form the second slice.

27. A method as in claim 1 wherein simultaneously (i) moving the first data and (ii) moving the second data includes:

moving data of first slice into primary memory;

partitioning, in the primary memory, the data of the first slice into uniformly sized portions, a first portion including the first data and a second portion including the second data; and

inserting, based on access activity, the first portion into the second slice and the second portion into the third slice.

Assignments (4)
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 Dec 4, 2018
From: DALMATOV, NICKOLAY ALEXANDROVICH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 047671/0953 →
Continuity (1)
Related Publication 20210200458A1 · Jul 1, 2021
Cited By (2)
US 12,223,176 US 12,379,853