Method to efficiently track I/O access history using efficient memory data structures
US-9798754-B1 · Oct 24, 2017 · US
US10019362B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-10019362-B1 |
| Application number | US-201615145084-A |
| Country | US |
| Kind code | B1 |
| Filing date | May 3, 2016 |
| Priority date | May 6, 2015 |
| Publication date | Jul 10, 2018 |
| Grant date | Jul 10, 2018 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
An example method for using a plurality of SSDs as a caching medium in a data storage system can include splitting the SSDs into a plurality of cache regions, maintaining a first cache region of the SSDs as a read cache and maintaining a second cache region of the SSDs as a write cache. Additionally, read data can be stored by striping the read data across the SSDs in the first cache region, and dirty write data can be stored by mirroring the dirty write data across the SSDs in the second cache region. The computer-implemented method can also include dynamically adjusting a size of at least one of the first and second cache regions of the SSDs based on an input/output (“I/O”) load of the data storage system.
Opening claim text (preview).
What is claimed: 1. A computer-implemented method for using a plurality of solid state devices (“SSDs”) as a caching medium in a data storage system, comprising: splitting the SSDs into a plurality of cache regions; maintaining a first cache region of the SSDs as a write-through cache, wherein data stored in the first cache region is striped across the SSDs; maintaining a second cache region of the SSDs as a write-back cache, wherein data stored in the second cache region is mirrored across the SSDs; dynamically adjusting a size of at least one of the first and second cache regions of the SSDs based on an input/output (“I/O”) load of the data storage system; detecting failure at least one of the SSDs; upon detecting the failure, persisting one or more blocks of data stored in the second cache region of an operational SSD to the data storage system; and maintaining the second cache region of the operational SSD as a write-through cache. 2. The computer-implemented method of claim 1 , wherein dynamically adjusting a size of at least one of the first and second cache regions of the SSDs based on the I/O load of the data storage system further comprises: expanding a size of the second cache region as the I/O load of the data storage system increases; or reducing a size of the second cache region as the I/O load of the data storage system decreases. 3. The computer-implemented method of claim 1 , wherein upon restoring or replacing the failed at least one SSDs, the computer-implemented method further comprises restoring the second cache region of the operational SSD to operation as a write-back cache. 4. The computer-implemented method of claim 1 , further comprising tracking valid data stored in the first cache region of the SSDs without maintaining a valid bitmap by: for each read I/O operation that is not previously stored in the first cache region of the SSDs and that requests a data chunk with a size less than an SSD block size from the data storage system, reading a data block from the data storage system including the data chunk, wherein the data block has a size equal to the SSD block size; and storing the data block in the first cache region of the SSDs. 5. The computer-implemented method of claim 1 , further comprising tracking dirty data stored in the second cache region of the SSDs with a dirty bitmap for each SSD block of the second cache region of the SSDs, wherein each bit in the dirty bitmap corresponds to an SSD page size, by: for each write I/O operation directed to a data chunk with a size less than the SSD page size in the data storage system, reading a data block from the data storage system including the data chunk, wherein the data block has a size equal to the SSD page size; modifying the data block according to the write I/O operation; and storing the modified data block in the second cache region of the SSDs. 6. The computer-implemented method of claim 1 , further comprising: receiving a TRIM command from the data storage system in response to invalidation of one or more cache lines of the SSDs; and wiping the invalidated one or more cache lines from the first cache region of the SSDs. 7. The computer-implemented method of claim 1 , further comprising: receiving a TRIM command from the data storage system in response to flushing one or more cache lines of the SSDs to the data storage system; and wiping the flushed one or more cache lines from the second cache region of the SSDs. 8. The computer-implemented method of claim 1 , wherein the first cache region of the SSDs is maintained as a RAID 0 array. 9. The computer-implemented method of claim 1 , wherein the second cache region of the SSDs is maintained as a RAID 1 array. 10. A non-transitory computer-readable recording medium having computer-executable instructions stored thereon for using a plurality of solid state devices (“SSDs”) as a caching medium in a data storage system that, when executed by a storage server computer, cause the storage server computer to: split the SSDs into a plurality of cache regions; maintain a first cache region of the SSDs as a write-through cache, wherein data stored in the first cache region is striped across the SSDs; maintain a second cache region of the SSDs as a write-back cache, wherein data stored in the second cache region is mirrored across the SSDs; dynamically adjust a size of at least one of the first and second cache regions of the SSDs based on an input/output (“I/O”) load of the data storage system; detect failure of at least one of the SSDs; upon detecting the failure, persist one or more blocks of data stored in the second cache region of an operational SSD to the data storage system; and maintain the second cache region of the operational SSD as a write-through cache. 11. The non-transitory computer-readable recording medium of claim 10 , wherein dynamically adjusting a size of at least one of the first and second cache regions of the SSDs based on the I/O load of the data storage system further comprises: expanding a size of the second cache region as the I/O load of the data storage system increases; or reducing a size of the second cache region as the I/O load of the data storage system decreases. 12. The non-transitory computer-readable recording medium of claim 10 , having further computer-executable instructions stored thereon that, when executed by the storage server computer, cause the storage server computer to, upon restoring or replacing the failed at least one of the SSDs, restore the second cache region of the operational SSD to operation as a write-back cache. 13. The non-transitory computer-readable recording medium of claim 10 , having further computer-executable instructions stored thereon that, when executed by the storage server computer, cause the storage server computer to track valid data stored in the first cache region of the SSDs without maintaining a valid bitmap by: for each read I/O operation that is not previously stored in the first cache region of the SSDs and that requests a data chunk with a size less than an SSD block size from the data storage system, reading a data block from the data storage system including the data chunk, wherein the data block has a size equal to the SSD block size; and storing the data block in the first cache region of the SSDs. 14. The non-transitory computer-readable recording medium of claim 10 , having further computer-executable instructions stored thereon that, when executed by the storage server computer, cause the storage server computer to track dirty data stored in the second cache region of the SSDs with a dirty bitmap for each SSD block of the second cache region of the SSDs, wherein each bit in the dirty bitmap corresponds to an SSD page size, by: for each write I/O operation directed to a data chunk with a size less than the SSD page size in the data storage system, reading a data block from the data storage system including the data chunk, wherein the data block has a size equal to the SSD page size; modifying the data block according to the write I/O operation; and storing the modified data block in the second cache region of the SSDs. 15. A storage server computer for using a plurality of solid state devices (“SSDs”) as a caching medium in a data storage system, the data storage system including a plurality of mass storage devices, the storage server computer comprising: a processing unit; and a memory operably coupled to the processing unit, the memory having computer-executable instructions stored thereon that, when executed by the processing unit, cause the storage server c
Partitioned cache · CPC title
in relation to data integrity, e.g. data losses, bit errors · CPC title
Non-volatile semiconductor memory arrays · CPC title
using more than 2 mirrored copies · CPC title
by allocating resources to storage systems · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.