# US 10,761,989 B2 · Method of storage management, storage system and computer program product

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,761,989 B2
- Document ID: US10761989B2
- Status: Granted
- Kind: B2
- Application number: 16/021,286
- Filed: 2018-06-28
- Published: 2019-02-21
- Granted: 2020-09-01
- Earliest claimed: 2017-06-30
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Jian Gao; Lifeng Yang; Xinlei Xu; Liam Xiongcheng Li
- Web page: https://patentgrep.com/patent/US10761989B2

## CPC

- G06F 12/0866: for peripheral storage systems, e.g. disk cache
- G06F 3/061: {Improving I/O performance}
- G06F 3/0646: {Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems}
- G06F 3/0674: {Disk device}
- G06F 12/0888: using selective caching, e.g. bypass
- G06F 2212/224: Disk storage
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments of the present disclosure provide a method of storage management, a storage system and a computer program product. The method comprises determining whether a number of I/O requests for a first page in a disk of a storage system exceeds a first threshold. The method further comprises: in response to determining that the number exceeds the first threshold, caching data in the first page to a first cache of the storage system; and storing metadata associated with the first page in a Non-Volatile Dual-In-Line Memory Module (NVDIMM) of the storage system.

## Claims

### Claim 1

A method of storage management, comprising:
determining whether a number of I/O requests for a first page in a disk of a storage system exceeds a first threshold;
in response to determining that the number exceeds the first threshold,
caching data in the first page to a first cache of the storage system;
storing metadata associated with the first page in a Non-Volatile Dual-In-Line Memory Module (NVDIMM) of the storage system; and
in response to receiving a write request for the cached first page,
caching the data in the first page to a second cache of the storage system;
releasing space occupied by the data in the first page on the first cache;
writing data related to the write request into the second cache; and
updating the metadata associated with the first page in the NVDIMM.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first cache comprises a solid-state disk with first endurance and the second cache comprises at least two solid-state disks with second endurance organized into a Redundant Array of Independent Disks (RAID), the second endurance being higher than the first endurance.

### Claim 3 (depends on 2)

The method of claim 2, wherein the first cache is a read-preference cache, and the second cache is a write cache.

### Claim 4 (depends on 1)

The method of claim 1, wherein updating the metadata associated with the first page comprises:
changing status of the first page to be dirty; and
modifying mapping information associated with the first page to indicate that the first page is mapped to the second cache.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
in response to a number of cached pages on the second cache exceeding a second threshold, flushing the cached pages to the disk; and
changing status of the cached pages to be clean.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
in response to a number of cached pages on the second cache exceeding a third threshold, limiting a number of write requests to enter the second cache.

### Claim 7 (depends on 6)

The method of claim 6, wherein limiting the number of write requests to enter the second cache comprises one of:
sending to an upper layer driver an indication to limit the number of write requests to enter the second cache; and
delaying responding to a write request entering the second cache.

### Claim 8 (depends on 1)

The method of claim 1, wherein the second cache is formed from storage provided by a set of solid state disks (SSDs); and
wherein the method further comprises:
loading, as the first page, user data from storage provided by a set of hard disk drives (HDDs) into the second cache in response to an I/O request; and
wherein the set of SSDs and the set of HDDs reside in a same disk array.

### Claim 9

A storage system, comprising:
a Non-Volatile Dual-In-Line Memory Module (NVDIMM);
a disk
a first cache;
a second cache; and
a controller configured to:
determine whether a number of I/O requests for a first page in the disk exceeds a first threshold;
in response to determining that the number exceeds the first threshold,
cache data in the first page to the first cache; and
store metadata associated with the first page in the NVDIMM; and
in response to receiving a write request for the cached first page,
cache the data in the first page to the second cache;
release space occupied by the data in the first page on the first cache;
write data related to the write request into the second cache; and
update the metadata associated with the first page in the NVDIMM.

### Claim 10 (depends on 9)

The storage system of claim 9, wherein the first cache comprises a solid-state disk with first endurance and the second cache comprises at least two solid-state disks with second endurance organized into a Redundant Array of Independent Disks (RAID), the second endurance being higher than the first endurance.

### Claim 11 (depends on 10)

The storage system of claim 10, wherein the first cache is a read-preference cache, and the second cache is a write cache.

### Claim 12 (depends on 9)

The storage system of claim 9, wherein updating the metadata associated with the first page comprises:
changing status of the first page to be dirty; and
modifying mapping information associated with the first page to indicate that the first page is mapped to the second cache.

### Claim 13 (depends on 9)

The storage system of claim 9, wherein the controller is further configured to:
in response to a number of cached pages on the second cache exceeding a second threshold, flush the cached pages to the disk; and
change status of the cached pages to clean page.

### Claim 14 (depends on 9)

The storage system of claim 9, wherein the controller is further configured to:
in response to a number of cached pages on the second cache exceeding a third threshold, limiting a number of write requests to enter the second cache.

### Claim 15 (depends on 14)

The storage system of claim 14, wherein limiting the number of write requests to enter the second cache comprises one of:
sending to an upper layer driver an indication to limit the number of write requests entering the second cache; and
delaying responding to a write request entering the second cache.

### Claim 16 (depends on 9)

The storage system of claim 9, wherein the storage system further comprises a set of hard disk drives (HDDs);
wherein the second cache is formed from storage provided by a set of solid state disks (SSDs);
wherein the set of SSDs and the set of HDDs reside in a same disk array of the storage system; and
wherein the controller is further configured to:
load, as the first page, user data from storage provided by the set of HDDs into the second cache in response to an I/O request.

### Claim 17

A computer program product for storage management, the computer program product comprising:
a non-transitory computer readable medium encoded with computer-executable code, the code configured to enable the execution of:
determining whether a number of I/O requests for a first page in a disk of a storage system exceeds a first threshold;
in response to determining that the number exceeds the first threshold,
caching data in the first page to a first cache of the storage system; and
storing metadata associated with the first page in a Non-Volatile Dual-In-Line Memory Module (NVDIMM) of the storage system; and
in response to receiving a write request for the cached first page,
caching the data in the first page to a second cache of the storage system;
releasing space occupied by the data in the first page on the first cache;
writing data related to the write request into the second cache; and
updating the metadata associated with the first page in the NVDIMM.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein the first cache comprises a solid-state disk with first endurance and the second cache comprises at least two solid-state disks with second endurance organized into a Redundant Array of Independent Disks (RAID), the second endurance being higher than the first endurance.

### Claim 19 (depends on 18)

The computer program product of claim 18, wherein the first cache is a read-preference cache, and the second cache is a write cache.

### Claim 20 (depends on 17)

The computer program product of claim 17, wherein the second cache is formed from storage provided by a set of solid state disks (SSDs); and
wherein the code further configured to enable the execution of:
loading, as the first page, user data from storage provided by a set of hard disk drives (HDDs) into the second cache in response to an I/O request; and
wherein the set of SSDs and the set of HDDs reside in a same disk array.
