Stripe aligned cache flush
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-modifiedWhat 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.