IP Library Granted Patent US 10,019,362
Granted Patent B1
US 10,019,362 · App. 15/145,084 · Granted Jul 10, 2018

Systems, devices and methods using solid state devices as a caching medium with adaptive striping and mirroring regions

Inventors: Paresh Chatterjee (Fremont, CA); Srikumar Subramanian (Suwanee, GA); Sankarji Gopalakrishnan (Fremont, CA); Senthilkumar Ramasamy (Duluth, GA)
Assignee: American Megatrends, Inc.
G06F12/0815G06F3/0619G06F3/0631G06F3/0688G06F11/2069G06F12/0804G06F12/0893G06F2201/805G06F2212/1032G06F2212/222G06F2212/604
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,019,362
App. No.
15/145,084
Granted
Jul 10, 2018
Kind
B1
Abstract

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.

Claims (77)

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 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 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.

16. The storage server computer of claim 15 , 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.

17. The storage server computer of claim 15 , wherein the memory has 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.

18. 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; and

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.

19. 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; and

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; and

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.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2020
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC,
To: AMZETTA TECHNOLOGIES, LLC,
Reel/Frame 053007/0151 →
CHANGE OF NAME Recorded Jun 22, 2020
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 053007/0233 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2016
From: SUBRAMANIAN, SRIKUMAR; GOPALAKRISHNAN, SANKARJI; RAMASAMY, SENTHILKUMAR
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 039676/0300 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2016
From: CHATTERJEE, EXECUTRIX OF THE ESTATE OF PARESH CHATTERJEE, UDITA
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 039676/0793 →
Continuity (1)
Provisional Application 62157522 · May 6, 2015
Cited By (6)
US 12,399,656 US 12,423,240 US 12,481,569 US 12,505,045 US 12,572,283 US 12,670,102