IP Library Granted Patent US 9,396,067
Granted Patent B1
US 9,396,067 · App. 13/449,496 · Granted Jul 19, 2016

I/O accelerator for striped disk arrays using parity

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 9,396,067
App. No.
13/449,496
Granted
Jul 19, 2016
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 (64)

1. 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 sequential, forwarding the write I/O request to the striped-disk array; and

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;

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

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

2. The method of claim 1 , 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 random write I/O requests.

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

4. The method of claim 1 , further comprising:

maintaining a journal table including a plurality of entries; and

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.

5. The method of claim 4 , 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.

6. The method of claim 5 , 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.

7. 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 sequential, forward the write I/O request to the striped-disk array; and

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;

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

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

8. The non-transitory computer-readable medium of claim 7 , 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 random write I/O requests.

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

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

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.

11. The non-transitory computer-readable medium of claim 10 , 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.

12. The non-transitory computer-readable medium of claim 11 , 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.

13. 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 sequential, forward the write I/O request to the striped-disk array; and

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;

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

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

14. The storage computer of claim 13 , 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.

15. The storage computer of claim 14 , 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 Sep 5, 2012
From: SUBRAMANIAN, SRIKUMAR; SOWRIRAJAN, RAGHAVAN; GOPALAKRISHNAN, SANKARJI
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 028901/0293 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2012
From: CHATTERJEE, EXECUTRIX OF ESTATE OF PARESH CHATTERJEE, UDITA
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 028901/0340 →