Methods and systems for cache management in storage systems

US9753853B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9753853-B2
Application numberUS-201414510785-A
CountryUS
Kind codeB2
Filing dateOct 9, 2014
Priority dateOct 9, 2014
Publication dateSep 5, 2017
Grant dateSep 5, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Methods and systems for managing caching mechanisms in storage systems are provided where a global cache management function manages multiple independent cache pools and a global cache pool. As an example, the method includes: splitting a cache storage into a plurality of independently operating cache pools, each cache pool comprising storage space for storing a plurality of cache blocks for storing data related to an input/output (“I/O”) request and metadata associated with each cache pool; receiving the I/O request for writing a data; operating a hash function on the I/O request to assign the I/O request to one of the plurality of cache pools; and writing the data of the I/O request to one or more of the cache blocks associated with the assigned cache pool. In an aspect, this allows efficient I/O processing across multiple processors simultaneously.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: splitting a cache storage into a plurality of cache pools, each cache pool comprising storage space that stores a plurality of cache blocks that store data related to an input/output (“I/O”) request; receiving the I/O request; extracting a volume identifier and at least one Logical Block Address (LBA) from the I/O request; providing the volume identifier and the at least one LBA to a hash function; determining, by the hash function, a hash index corresponding to the volume identifier and the at least one LBA, wherein determining the hash index includes: determining, using the at least one LBA and a number of stripes in a volume, a hash stripe corresponding to the I/O request; assigning the I/O request to one of the plurality of cache pools that corresponds to the determined hash index; and writing, by a processor assigned to the assigned cache pool, data of the I/O request to one or more of the cache blocks associated with the assigned cache pool. 2. The method of claim 1 , further comprising: receiving a second I/O request; assigning the second I/O request to a second one of the cache pools based on the hash function; and writing, by a second processor assigned to the assigned second cache pool, data of the second I/O request to one or more of the cache blocks associated with the assigned second cache pool, wherein the second processor is different than the processor. 3. The method of claim 2 , wherein the writing of the data of the I/O request and the writing of the data of the second I/O request occur during overlapping time periods. 4. The method of claim 1 , further comprising: reserving a number of cache blocks for a global cache pool; and when the assigned cache pool has too few empty cache blocks, borrowing at least one cache block from the global cache pool and associating the borrowed at least one cache block with the assigned cache pool. 5. The method of claim 4 , further comprising: releasing the borrowed at least one cache block back to the global cache pool. 6. The method of claim 1 , wherein the I/O request spans multiple cache pools. 7. A non-transitory machine readable medium having stored thereon instructions for performing a method comprising machine executable code which when executed by at least one machine, causes the machine to: split a cache storage into a plurality of cache pools, each cache pool comprising storage space that stores a plurality of cache blocks that store data related to an input/output (“I/O”) request; receive the I/O request; extract a volume identifier and at least one Logical Block Address (LBA) from the I/O request; provide the volume identifier and the at least one LBA to a hash function; determine, by the hash function, a hash index corresponding to the volume identifier and the at least one LBA, wherein determining the hash index includes: determining, using the at least one LBA and a number of stripes in a volume, a hash stripe corresponding to the I/O request: assign the I/O request to one of the plurality of cache pools that corresponds to the hash index; and write, by a processor assigned to the assigned cache pool, data of the I/O request to one or more of the cache blocks associated with the assigned cache pool. 8. The non-transitory machine readable medium of claim 7 , further comprising instructions to: receive a second I/O request; assign the second I/O request to a second one of the cache pools based on the hash function; and write, by a second processor assigned to the assigned second cache pool, data of the second I/O request to one or more of the cache blocks associated with the assigned second cache pool, wherein the second processor is different than the processor. 9. The non-transitory machine readable of claim 8 , wherein the writing of the data of the I/O request and the writing of the data of the second I/O request occur during overlapping time periods. 10. The non-transitory machine readable medium of claim 7 , further comprising instructions to: reserve a number of cache blocks for a global cache pool; and when the assigned cache pool has too few empty cache blocks, borrow at least one cache block from the global cache pool and associating the borrowed at least one cache block with the assigned cache pool. 11. The non-transitory machine readable medium of claim 10 , further comprising instructions to release the borrowed at least one cache block back to the global cache pool. 12. The non-transitory machine readable medium of claim 7 , wherein the I/O request spans multiple cache pools. 13. A computing device comprising: a memory containing non-transitory machine readable medium comprising machine executable code having stored thereon instructions; and a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to: split a cache storage into a plurality of cache pools, each cache pool comprising storage space that stores a plurality of cache blocks that store data related to an input/output (“I/O”) request; receive the I/O request; extract a volume identifier and at least one Logical Block Address (LBA) from the I/O request; provide the volume identifier and the at least one LBA to a hash function; determine, by the hash function, a hash index corresponding to the volume identifier and the at least one LBA, wherein determining the hash index includes: determining, using the at least one LBA and a number of stripes in a volume, a hash stripe corresponding to the I/O request; assign the I/O request to one of the plurality of cache pools that corresponds to the hash index; and write, by a processor assigned to the assigned cache pool, data of the I/O request to one or more of the cache blocks associated with the assigned cache pool. 14. The computing device of claim 13 , wherein the processor is further to: receive a second I/O request; assign the second I/O request to a second one of the cache pools based on the hash function; and write, by a second processor assigned to the assigned second cache pool, data of the second I/O request to one or more of the cache blocks associated with the assigned second cache pool, wherein the second processor is different than the processor. 15. The computing device of claim 14 , wherein the writing of the data of the I/O request and the writing of the data of the second I/O request occur during overlapping time periods. 16. The computing device of claim 13 , wherein the processor is further to: reserve a number of cache blocks for a global cache pool; and when the assigned cache pool has too few empty cache blocks, borrow at least one cache block from the global cache pool and associating the borrowed at least one cache block with the assigned cache pool. 17. The computing device of claim 16 , wherein the processor is further configured to release the borrowed at least one cache block back to the global cache pool. 18. The computing device of claim 13 , wherein the I/O request spans multiple cache pools. 19. The method of claim 1 , wherein determining the hash index further includes: applying a randomizing multiplier to the determined hash stripe. 20. The non-transitory machine readable medium of claim 7 , wherein determining the hash index further includes: applying a randomizing multiplier to the determined hash stripe. 21. The computing device of claim 13 , wherein determining the hash index further includes: applying

Assignees

Inventors

Classifications

  • In storage controller · CPC title

  • Mapping of cache memory to specific storage devices or parts thereof · CPC title

  • using pseudo-associative means, e.g. set-associative or hashing · CPC title

  • Space efficiency improvement · CPC title

  • Details relating to cache mapping · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9753853B2 cover?
Methods and systems for managing caching mechanisms in storage systems are provided where a global cache management function manages multiple independent cache pools and a global cache pool. As an example, the method includes: splitting a cache storage into a plurality of independently operating cache pools, each cache pool comprising storage space for storing a plurality of cache blocks for st…
Who is the assignee on this patent?
Netapp Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/0864. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Sep 05 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).