US2019188156A1PendingUtilityA1

Stripe aligned cache flush

39
Assignee: SEAGATE TECHNOLOGY LLCPriority: Dec 19, 2017Filed: Dec 19, 2017Published: Jun 20, 2019
Est. expiryDec 19, 2037(~11.4 yrs left)· nominal 20-yr term from priority
G06F 12/128G06F 2212/261G06F 2212/604G06F 12/0871G06F 2212/621
39
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Implementations described herein provide a storage system including a cache, such as a solid-state cache or other relatively higher speed memory cache, and a disc array or relatively higher capacity mass data store. As the storage system receives write requests from a host device, the data of the write requests is initially written to the cache. Eventually, such data is committed to the mass data store in a flushing process. A flushing manager selects data blocks from the cache to flush to the mass data store. The flushing manager selects a sequence of data blocks that are contiguously stored on the mass data store such as to increase performance for I/O operations in the mass data store. The flushing manager utilizes a data structure, such as a binary search tree, to identify the contiguous data blocks to flush.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A storage system comprising:
 a memory;   one or more hardware processors; and   a flushing manager stored in the memory and executable by the one or more hardware processors to determine, using a data structure referencing one or more cache windows of a solid-state cache, that one or more data blocks from the one or more cache windows are contiguous in a data stripe of one or more data stripes stored in a plurality of discs of a disc-array, each data stripe allocated to the plurality of discs, and   in response to the determination, identify the one or more dirty data blocks from the one or more cache windows for flushing to the disc array.   
     
     
         2 . The storage system of  claim 1  wherein the one or more cache windows are referenced by the data structure based on the one or more cache windows including at least one dirty data block. 
     
     
         3 . The storage system of  claim 1  wherein the data structure is a binary tree of the one or more cache windows, the binary tree of the one or more cache windows storing the references to the one or more cache windows in an order based on a logical block address of the one or more cache windows as allocated to the disc array. 
     
     
         4 . The storage system of  claim 3  wherein the flushing manager traverses the binary tree of the one or more cache windows to identify the one or more contiguous dirty data blocks. 
     
     
         5 . The storage system of  claim 4 , wherein the flushing manager builds a sequence of the one or more dirty blocks as the flushing manager traverses the binary tree of the one or more cache windows. 
     
     
         6 . The storage system of  claim 4  wherein the flushing manage traverses the binary tree of the one or more cache windows until a threshold number of dirty data blocks are flushed to the disc array. 
     
     
         7 . The storage system of  claim 1  wherein the flushing manager determines whether the one or more dirty data blocks are aligned in the data stripe before identifying the one or more dirty data blocks for flushing to the disc array. 
     
     
         8 . A method comprising:
 determining that one or more dirty data blocks from one or more cache windows of a cache are contiguous in a data stripe of a mass data store, the determination using a data structure referencing the one or more cache windows, the data stripe allocated to the mass data store; and   flushing the one or more dirty data blocks to the data stripe allocated to the mass data store.   
     
     
         9 . The method of  claim 8  wherein the one or more cache windows are referenced by the data structure based on the one or more cache windows including at least one dirty data block. 
     
     
         10 . The method of  claim 8  wherein the data structure is a binary tree of the one or more cache windows of a solid-state memory cache, the binary tree storing references to one or more dirty cache windows in an order based on a logical block address of the one or more dirty cache windows as allocated to the mass data store comprising a disc array. 
     
     
         11 . The method of  claim 10  further comprising:
 traversing the binary tree of the one or more dirty cache windows to identify the one or more dirty data blocks. 
 
     
     
         12 . The method of  claim 11  further comprising:
 adding dirty data blocks of a current cache window to a sequence of one or more dirty cache blocks as the binary tree is traversed. 
 
     
     
         13 . The method of  claim 11  further comprising:
 determining whether a current cache window referenced by the binary tree ends on a stripe boundary of the data stripe; and 
 responsive to determining that the current cache window ends on the stripe boundary of the data stripe, flushing the current cache window to the disc array. 
 
     
     
         14 . The method of  claim 10  further comprising:
 traversing the binary tree of the one or more cache windows to identify the one or more dirty data blocks until a threshold number of dirty data blocks are flushed to the disc array. 
 
     
     
         15 . One or more processor-readable storage media encoding processor-executable instructions for executing on a computer system a process to improve the computer system comprising:
 determining that one or more dirty data blocks from one or more cache windows of a solid-state cache are contiguous in a data stripe a disc array including a plurality of discs, the determination using a data structure referencing the one or more cache windows, the data stripe allocated to the plurality of discs; and   flushing the one or more dirty data blocks to the data stripe allocated to the plurality of discs in the disc array.   
     
     
         16 . The one or more processor-readable storage media of  claim 15  wherein the one or more cache windows are referenced by the data structure based on the one or more cache windows including at least one dirty data block. 
     
     
         17 . The one or more processor-readable storage media of  claim 15  wherein the data structure is a binary tree, the binary tree storing the references to the one or more cache windows in an order based on a logical block address of the one or more cache windows as allocated to the disc array. 
     
     
         18 . The one or more processor-readable storage media of  claim 15 , the computer process further comprising:
 traversing the data structure of the one or more cache windows to identify the one or more dirty data blocks; and   adding dirty data blocks of a current cache window to a sequence of one or more dirty cache blocks as the data structure is traversed.   
     
     
         19 . The one or more processor-readable storage media of  claim 15 , the computer process further comprising:
 determining whether a current cache window referenced by the data structure ends on a stripe boundary of the data stripe; and   responsive to determining that the current cache window ends on the stripe boundary of the data stripe, flushing the current cache window to the disc array comprising a relatively higher capacity mass data store.   
     
     
         20 . The one or more processor-readable storage media of  claim 15 , the computer process further comprising:
 traversing the data structure to identify the one or more dirty data blocks until a threshold number of dirty data blocks are flushed to the disc array.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.