IP Library Granted Patent US 10,067,682
Granted Patent B1
US 10,067,682 · App. 15/185,522 · Granted Sep 4, 2018

I/O accelerator for striped disk arrays using parity

Inventors: Paresh Chatterjee (Fremont, CA); Srikumar Subramanian (Newark, CA); Raghavan Sowrirajan (Fremont, CA); Sankarji Gopalakrishnan (Fremont, CA)
Assignee: American Megatrends, Inc.
G06F3/061G06F3/0611G06F3/0613G06F3/0644G06F3/0656G06F3/0659G06F3/0689G06F12/0866
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,067,682
App. No.
15/185,522
Granted
Sep 4, 2018
Kind
B1
Abstract

Disclosed herein is an enhanced volume manager (VM) for a storage system that accelerates input/output (I/O) performance for random write operations to a striped disk array using parity. More specifically, various implementations are directed to accelerating “random writes” (writes comprising less than a complete stripe of data) by consolidating several random writes together to create a “sequential write” (a full-stripe write) to eliminate one or more read operations and/or increase the volume of new/updated data stored for each write operation. Several such implementations comprise functionality in the VM (volume manager) for identifying random write I/O requests, queuing them locally in a journal, and then periodically flushing the journal to the disk array as a sequential write request.

Claims (63)

1. A non-transitory computer-readable medium having computer-executable instructions stored thereon for accelerating I/O performance for a striped-disk array that, when executed by a storage computer, cause the storage computer to:

receive a write I/O request directed to a portion of a stripe of the striped-disk array;

determine, prior to any forwarding of the received write I/O request to the striped-disk array, whether the write I/O request is random or sequential by comparing the write I/O request to a plurality of recent I/O requests;

in response to determining that the write I/O request is random, record the random write I/O request in a journal data storage area of the striped-disk array; and

periodically flush the journal data storage area by forming a sequential write I/O that spans a width of a stripe of the striped-disk array, the formed sequential write I/O comprising the random write I/O request and at least one other random write I/O request that is recorded in the journal data storage area.

2. The non-transitory computer-readable medium of claim 1 , having further computer-executable instructions stored thereon that, when executed by the storage computer, cause the storage computer to forward the sequential write I/O request to the striped-disk array in response to determining that the write I/O request is sequential.

3. The non-transitory computer-readable medium of claim 1 , having further computer-executable instructions stored thereon that, when executed by the storage computer, cause the storage computer to:

forward the formed sequential write I/O to the striped-disk array.

4. The non-transitory computer-readable medium of claim 3 , wherein the journal data storage area is periodically flushed in order to maintain a predetermined amount of storage capacity in the journal data storage area to accommodate incoming write I/O requests.

5. The non-transitory computer-readable medium of claim 3 , wherein the journal data storage area is periodically flushed at a time that minimizes impact on incoming I/O requests.

6. The non-transitory computer-readable medium of claim 1 , having further computer-executable instructions stored thereon that, when executed by the storage computer, cause the storage computer to:

maintain a journal table including a plurality of entries; and

in response to determining that the write I/O request is random, update an entry in the journal table corresponding to the random write I/O operation to indicate a location in the journal data storage area and the portion of the stripe of the striped-disk array to which the random write I/O request is directed.

7. The non-transitory computer-readable medium of claim 6 , having further computer-executable instructions stored thereon that, when executed by the storage computer, cause the storage computer to:

receive a read I/O request;

determine whether the journal table includes an entry corresponding to the read I/O request;

upon determining that the journal table includes an entry corresponding to the read I/O request, service at least a portion of the read I/O request from the journal data storage area; and

upon determining that the journal table does not include an entry corresponding to the read I/O request, forward the read I/O request to the striped-disk array.

8. The non-transitory computer-readable medium of claim 7 , having further computer-executable instructions stored thereon that, when executed by the storage computer, cause the storage computer to:

partition a storage capacity of the striped-disk array into zones;

maintain an accelerated zone table comprising entries that relate the zones to corresponding entries in the journal table;

determine a zone of the striped-disk array to which the read I/O request is directed; and

determine whether the journal table includes an entry corresponding to the read I/O request by searching the accelerated zone table based on the zone of the striped-disk array to which the read I/O request is directed.

9. A method for accelerating I/O performance for a striped-disk array, comprising:

receiving a write I/O request directed to a portion of a stripe of the striped-disk array;

determining, prior to any forwarding of the received write I/O request to the striped-disk array, whether the write I/O request is random or sequential by comparing the write I/O request to a plurality of recent I/O requests;

in response to determining that the write I/O request is random, recording the random write I/O request in a journal data storage area of the striped-disk array; and

periodically flushing the journal data storage area by forming a sequential write I/O that spans a width of a stripe of the striped-disk array, the formed sequential write I/O comprising the random write I/O request and at least one other random write I/O request that is recorded in the journal data storage area.

10. The method of claim 9 further comprising forwarding the sequential write I/O request to the striped-disk array in response to determining that the write I/O request is sequential.

11. The method of claim 9 further comprising:

forwarding the formed sequential write I/O to the striped-disk array.

12. The method of claim 11 , wherein the journal data storage area is periodically flushed in order to maintain a predetermined amount of storage capacity in the journal data storage area to accommodate incoming write I/O requests.

13. The method of claim 11 , wherein the journal data storage area is periodically flushed at a time that minimizes impact on incoming I/O requests.

14. The method of claim 9 , further comprising:

maintaining a journal table including a plurality of entries; and

in response to determining that the write I/O request is random, updating an entry in the journal table corresponding to the random write I/O operation to indicate a location in the journal data storage area and the portion of the stripe of the striped-disk array to which the random write I/O request is directed.

15. The method of claim 14 , further comprising:

receiving a read I/O request;

determining whether the journal table includes an entry corresponding to the read I/O request;

upon determining that the journal table includes an entry corresponding to the read I/O request, servicing at least a portion of the read I/O request from the journal data storage area; and

upon determining that the journal table does not include an entry corresponding to the read I/O request, forwarding the read I/O request to the striped-disk array.

16. The method of claim 15 , further comprising:

partitioning a storage capacity of the striped-disk array into zones;

maintaining an accelerated zone table comprising entries that relate the zones to corresponding entries in the journal table;

determining a zone of the striped-disk array to which the read I/O request is directed; and

determining whether the journal table includes an entry corresponding to the read I/O request further comprises searching the accelerated zone table based on the zone of the striped-disk array to which the read I/O request is directed.

17. A storage computer for accelerating I/O performance for a striped-disk array, comprising:

a processing unit; and

a memory communicatively connected to the processing unit that stores computer-executable instructions that, when executed by the processing unit, cause the storage computer to:

receive a write I/O request directed to a portion of a stripe of the striped-disk array;

determine, prior to any forwarding of the received write I/O request to the striped-disk array, whether the write I/O request is random or sequential by comparing the write I/O request to a plurality of recent I/O requests;

in response to determining that the write I/O request is random, record the random write I/O request in a journal data storage area of the striped-disk array; and

periodically flush the journal data storage area by forming a sequential write I/O that spans a width of a stripe of the striped-disk array, the formed sequential write I/O comprising the random write I/O request and at least one other random write I/O request that is recorded in the journal data storage area.

18. The storage computer of claim 17 , wherein the memory stores further computer-executable instructions that, when executed by the processing unit, cause the storage computer to:

forward the formed sequential write I/O to the striped-disk array.

19. The storage computer of claim 17 , wherein the memory stores further computer-executable instructions that, when executed by the processing unit, cause the storage computer to:

maintain a journal table including a plurality of entries; and

update an entry in the journal table corresponding to the random write I/O operation to indicate a location in the journal data storage area and the portion of the stripe of the striped-disk array to which the random write I/O request is directed.

20. The storage computer of claim 19 , wherein the memory stores further computer-executable instructions that, when executed by the processing unit, cause the storage computer to:

receive a read I/O request;

determine whether the journal table includes an entry corresponding to the read I/O request;

upon determining that the journal table includes an entry corresponding to the read I/O request, service at least a portion of the read I/O request from the journal data storage area; and

upon determining that the journal table does not include an entry corresponding to the read I/O request, forward the read I/O request to the striped-disk array.

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 Jul 26, 2018
From: CHATTERJEE, EXECUTRIX OF ESTATE OF PARESH CHATTERJEE, UDITA
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 046465/0990 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2018
From: SUBRAMANIAN, SRIKUMAR; SOWRIRAJAN, RAGHAVAN; GOPALAKRISHNAN, SANKARJI
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 046465/0993 →
Continuity (2)
Continuation 13449496 · Apr 18, 2012
Provisional Application 61476725 · Apr 18, 2011