IP Library Granted Patent US 9,286,209
Granted Patent B2
US 9,286,209 · App. 14/273,812 · Granted Mar 15, 2016

System, method and computer-readable medium using map tables in a cache to manage write requests to a raid storage array

Inventors: Anant Baderdinni (Lawrenceville, GA); Noorshaheen Mavungal Noorudheen (Chavakkad, IN)
Assignee: Avago Technologies General IP (Singapore) Pte. Ltd.
G06F12/0246G06F3/0619G06F3/0631G06F3/0644G06F3/0688G06F3/0689G06F12/0253G06F2212/1032G06F2212/2022G06F2212/262G11B2220/415
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,286,209
App. No.
14/273,812
Granted
Mar 15, 2016
Kind
B2
Abstract

A RAID storage system serializes data blocks to be stored in a RAID storage array and uses a primary map table and a number of secondary map tables to relate host addresses to logical block addresses in the storage array. Secondary map tables and other metadata can be cached from the storage array. The dual or two-tier map scheme and metadata caching promote scalability.

Claims (100)

1. A method for accessing data in a redundant array of inexpensive disks (RAID) storage array, comprising:

receiving a write request including a host address and a data block;

identifying a primary map table entry in response to the host address, the primary map table having a plurality of primary map table entries, each primary map table entry identifying one of a plurality of secondary map tables;

identifying a secondary map table in response to an identified primary map table entry identified by the host address, each secondary map table having a plurality of secondary map table entries, each secondary map table entry identifying a storage location in the RAID storage array;

identifying an indicated secondary map table entry in response to the host address;

serializing the write request into a RAID stripe including the data block;

storing a block address in the identified secondary map table entry; and

writing the RAID stripe including the data block to the RAID storage array, the block address stored in the identified secondary map table entry indicating a location of the data block in the RAID storage array.

2. The method of claim 1 , further comprising storing the host address in a location in a reverse map table corresponding to the block address.

3. The method of claim 1 , further comprising:

storing the data block in a cache memory before writing the RAID stripe from the cache memory to the RAID storage array; and

storing a dirty write indication in the identified secondary map table entry before writing the RAID stripe from the cache memory to the RAID storage array.

4. The method of claim 1 , further comprising:

determining prior to writing the RAID stripe to the RAID storage array if the identified secondary map table entry indicates previously written data stored at the logical block address in the RAID storage array; and

storing an invalid block indicator in a reverse map table if the identified secondary map table entry is determined to indicate previously written data stored at the logical block address in the RAID storage array.

5. The method of claim 1 , further comprising:

determining prior to storing the block address in the identified secondary map table entry whether a secondary map table identified as containing the identified secondary map table entry is in a cache memory; and

retrieving the identified second map table from the storage array if it is determined that the identified secondary map table is not in the cache memory.

6. The method of claim 5 , further comprising:

identifying a least important secondary map table in the cache memory; and

removing the least important secondary map table from the cache memory.

7. The method of claim 6 , further comprising:

determining whether the least important secondary map table stored in the cache memory is also stored in the storage array; and

storing the least important secondary map table in the storage array before removing the least important secondary map table from the cache memory if it is determined that the least important secondary map table is not also stored in the storage array.

8. The method of claim 1 , further comprising:

receiving a read request including a host address; and

reading a data block in the RAID storage array at a block address in the identified secondary map table entry in response to the read request.

9. The method of claim 1 , further comprising:

storing the host address in a location in a reverse map table corresponding to the block address;

determining prior to writing the RAID stripe to the RAID storage array if the identified secondary map table entry indicates previously written data stored at the logical block address in the RAID storage array;

storing an invalid block indicator in a reverse map table if the identified secondary map table entry is determined to indicate previously written data stored at the logical block address in the RAID storage array;

identifying a group of contiguous data blocks for recycling; and

transferring from the group of contiguous data blocks a data block not corresponding to an invalid block indicator in the reverse map table to a storage location not in the group of contiguous data blocks.

10. A system, comprising:

a redundant array of inexpensive disks (RAID) storage array; and

a storage controller having processing system comprising one or more processors and a memory, the processing system programmed or configured to:

receive a write request including a host address and a data block;

identify a primary map table entry in response to the host address, the primary map table having a plurality of primary map table entries, each primary map table entry identifying one of a plurality of secondary map tables;

identify a secondary map table in response to an identified primary map table entry identified by the host address, each secondary map table having a plurality of secondary map table entries, each secondary map table entry identifying a storage location in the RAID storage array;

identify an indicated secondary map table entry in response to the host address; serialize the write request into a RAID stripe including the data block;

store a block address in the identified secondary map table entry; and

write the RAID stripe including the data block to the RAID storage array, the block address stored in the identified secondary map table entry indicating a location of the data block in the RAID storage array.

11. The system of claim 10 , wherein the processing system of the storage controller is further programmed or configured to store the host address in a location in a reverse map table corresponding to the block address.

12. The system of claim 10 , wherein the processing system of the storage controller is further programmed or configured to:

store the data block in a cache memory before writing the RAID stripe from the cache memory to the RAID storage array; and

store a dirty write indication in the identified secondary map table entry before writing the RAID stripe from the cache memory to the RAID storage array.

13. The system of claim 10 , wherein the processing system of the storage controller is further programmed or configured to:

determine prior to writing the RAID stripe to the RAID storage array if the identified secondary map table entry indicates previously written data stored at the logical block address in the RAID storage array; and

store an invalid block indicator in a reverse map table if the identified secondary map table entry is determined to indicate previously written data stored at the logical block address in the RAID storage array.

14. The system of claim 10 , wherein the processing system of the storage controller is further programmed or configured to:

determine prior to storing the block address in the identified secondary map table entry whether a secondary map table identified as containing the identified secondary map table entry is in a cache memory; and

retrieve the identified second map table from the storage array if it is determined that the identified secondary map table is not in the cache memory.

15. The system of claim 14 , wherein the processing system of the storage controller is further programmed or configured to:

identify a least important secondary map table in the cache memory; and

remove the least important secondary map table from the cache memory.

16. The system of claim 15 , wherein the processing system of the storage controller is further programmed or configured to:

determine whether the least important secondary map table stored in the cache memory is also stored in the storage array; and

store the least important secondary map table in the storage array before removing the least important secondary map table from the cache memory if it is determined that the least important secondary map table is not also stored in the storage array.

17. The system of claim 10 , wherein the processing system of the storage controller is further programmed or configured to:

receive a read request including a host address; and

read a data block in the RAID storage array at a block address in the identified secondary map table entry in response to the read request.

18. The system of claim 10 , wherein the processing system of the storage controller is further programmed or configured to:

store the host address in a location in a reverse map table corresponding to the block address;

determine prior to writing the RAID stripe to the RAID storage array if the identified secondary map table entry indicates previously written data stored at the logical block address in the RAID storage array;

store an invalid block indicator in a reverse map table if the identified secondary map table entry is determined to indicate previously written data stored at the logical block address in the RAID storage array;

identify a group of contiguous data blocks for recycling; and

transfer from the group of contiguous data blocks a data block not corresponding to an invalid block indicator in the reverse map table to a storage location not in the group of contiguous data blocks.

19. A computer program product comprising a computer readable medium having stored thereon in computer executable non-transitory form instructions that, when executed on a processing system of a redundant array of inexpensive disks (RAID) storage controller, cause the processing system to:

receive a write request including a host address and a data block;

identify a primary map table entry in response to the host address, the primary map table having a plurality of primary map table entries, each primary map table entry identifying one of a plurality of secondary map tables;

identify a secondary map table in response to an identified primary map table entry identified by the host address, each secondary map table having a plurality of secondary map table entries, each secondary map table entry identifying a storage location in the RAID storage array;

identify an indicated secondary map table entry in response to the host address;

serialize the write request into a RAID stripe including the data block;

store a block address in the identified secondary map table entry; and

write the RAID stripe including the data block to the RAID storage array, the block address stored in the identified secondary map table entry indicating a location of the data block in the RAID storage array.

20. The computer program product of claim 19 , further comprising instructions that, when executed on the processing system, cause the processing system to store the host address in a location in a reverse map table corresponding to the block address.

21. The computer program product of claim 19 , further comprising instructions that, when executed on the processing system, cause the processing system to:

store the data block in a cache memory before writing the RAID stripe from the cache memory to the RAID storage array; and

store a dirty write indication in the identified secondary map table entry before writing the RAID stripe from the cache memory to the RAID storage array.

22. The computer program product of claim 19 , further comprising instructions that, when executed on the processing system, cause the processing system to:

determine prior to writing the RAID stripe to the RAID storage array if the identified secondary map table entry indicates previously written data stored at the logical block address in the RAID storage array; and

store an invalid block indicator in a reverse map table if the identified secondary map table entry is determined to indicate previously written data stored at the logical block address in the RAID storage array.

23. The computer program product of claim 19 , further comprising instructions that, when executed on the processing system, cause the processing system to:

determine prior to storing the block address in the identified secondary map table entry whether a secondary map table identified as containing the identified secondary map table entry is in a cache memory; and

retrieve the identified second map table from the storage array if it is determined that the identified secondary map table is not in the cache memory.

24. The computer program product of claim 23 , further comprising instructions that, when executed on the processing system, cause the processing system to:

identify a least important secondary map table in the cache memory; and

remove the least important secondary map table from the cache memory.

25. The computer program product of claim 24 , further comprising instructions that, when executed on the processing system, cause the processing system to:

determine whether the least important secondary map table stored in the cache memory is also stored in the storage array; and

store the least important secondary map table in the storage array before removing the least important secondary map table from the cache memory if it is determined that the least important secondary map table is not also stored in the storage array.

26. The computer program product of claim 19 , further comprising instructions that, when executed on the processing system, cause the processing system to:

receive a read request including a host address; and

read a data block in the RAID storage array at a block address in the identified secondary map table entry in response to the read request.

27. The computer program product of claim 19 , further comprising instructions that, when executed on the processing system, cause the processing system to:

store the host address in a location in a reverse map table corresponding to the block address;

determine prior to writing the RAID stripe to the RAID storage array if the identified secondary map table entry indicates previously written data stored at the logical block address in the RAID storage array;

store an invalid block indicator in a reverse map table if the identified secondary map table entry is determined to indicate previously written data stored at the logical block address in the RAID storage array;

identify a group of contiguous data blocks for recycling; and

transfer from the group of contiguous data blocks a data block not corresponding to an invalid block indicator in the reverse map table to a storage location not in the group of contiguous data blocks.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2014
From: BADERDINNI, ANANT; NOORUDHEEN, NOORSHAHEEN MAVUNGAL
To: LSI CORPORATION
Reel/Frame 032858/0703 →
Continuity (2)
Provisional Application 61981920 · Apr 21, 2014
Related Publication 20150301934A1 · Oct 22, 2015