Claims
- 1. In a cache-redundant data storage system having at least two storage controllers, each of the storage controllers comprising a primary cache memory and a secondary cache memory, a method for recovering cache data of a failed redundant storage controller and reestablishing redundancy, comprising:
arranging said at least two storage controllers into pairs, such that cache data of the primary cache memory of each of the storage controllers in the pair is mirrored in the secondary cache memory of the other storage controller in the pair; and upon a failure of a storage controller in a pair, detecting the failure and, in response, creating a structured list of cache tags in the non-failed storage controller, flushing the primary cache memory and the secondary cache memory of the non-failed storage controller, and configuring an available secondary cache memory to function as a redundant cache memory for the primary cache memory of the non-failed storage controller, such that cache data in the primary cache memory of the non-failed storage controller is mirrored in the available secondary cache memory.
- 2. The method of claim 1, wherein if said at least two storage controllers comprise an odd number of storage controllers, the cache data of the primary cache memory of an unpaired storage controller is mirrored in the secondary cache memory of the unpaired storage controller.
- 3. The method of claim 1, wherein the structured list of cache tags identifies the physical location, in the secondary cache memory of the non-failed storage controller, of every data block of the cache data that was mirrored from the primary cache memory of the failed storage controller to the secondary cache memory of the non-failed storage controller.
- 4. The method of claim 1, wherein after the failure is detected and prior to said flushing, the structured list of cache tags is searched upon a subsequent storage request from a host.
- 5. The method of claim 1, wherein upon said flushing, the structured list of cache tags is cleared.
- 6. The method of claim 1, wherein the available secondary cache memory is the secondary cache memory of the non-failed storage controller.
- 7. The method of claim 6, wherein the cache data of the primary cache memory of the non-failed storage controller is mirrored in the secondary cache memory of the non-failed storage controller.
- 8. The method of claim 6, wherein the non-failed storage controller is subsequently identified as an unpaired storage controller.
- 9. The method of claim 1, wherein the available secondary cache memory is the secondary cache memory of an unpaired storage controller of the at least two storage controllers.
- 10. The method of claim 9, wherein the cache data of the primary cache memory of the non-failed storage controller is mirrored in the secondary cache memory of the unpaired storage controller and the cache data of the primary cache memory of the unpaired storage controller is mirrored in the secondary cache memory of the non-failed storage controller.
- 11. The method of claim 10, wherein the unpaired storage controller and the non-failed storage controller are subsequently identified as paired controllers.
- 12. An apparatus for storing data, comprising:
a program memory, for storing program instructions; a processor for executing said program instructions; a primary cache memory, for storing cache data; a secondary cache memory, for storing redundant cache data; and a tagmemory, for storing a structured list of cache tags associated with the cache data of the secondary cache memory.
- 13. The apparatus of claim 12, wherein said processor executes said program instructions to configure the apparatus to perform the steps of:
pairing itself with another substantially similar available apparatus, such that cache data of the primary cache memory of each of the apparatuses in the pair is mirrored in the secondary cache memory of the other apparatus in the pair; and upon a failure of either apparatus in the pair, detecting the failure and, in response, creating a structured list of cache tags in the non-failed apparatus, flushing the primary cache memory and the secondary cache memory of the non-failed apparatus, and configuring an available secondary cache memory to function as a redundant cache memory for the primary cache memory of the non-failed apparatus, such that cache data in the primary cache memory of the non-failed apparatus is mirrored in the available secondary cache memory.
- 14. The apparatus of claim 13, wherein the structured list of cache tags identifies the physical location, in the secondary cache memory of the non-failed apparatus, of every data block of the cache data that was mirrored from the primary cache memory of the failed apparatus to the secondary cache memory of the non-failed apparatus.
- 15. The apparatus of claim 13, wherein the available secondary cache memory is the secondary cache memory of the non-failed apparatus.
- 16. The apparatus of claim 15, wherein the cache data of the primary cache memory of the non-failed apparatus is mirrored in the secondary cache memory of the non-failed apparatus.
- 17. A storage controller for recovering cache data of a failed redundant storage controller and reestablishing redundancy in a cache-redundant data storage system having at least two storage controllers, each of the storage controllers comprising a primary cache memory and a secondary cache memory, comprising:
a means for arranging said storage controller into a pair with another storage controller of said at least two storage controllers, such that cache data of the primary cache memory of each of the storage controllers in the pair is mirrored in the secondary cache memory of the other storage controller in the pair; and a means for detecting a failure of said primary cache memory of a storage controller in the pair, and upon a detection of said failure, creating a structured list of cache tags in the non-failed storage controller, flushing the primary cache memory and the secondary cache memory of the non-failed storage controller, and configuring an available secondary cache memory to function as a redundant cache memory for the primary cache memory of the non-failed storage controller, such that cache data in the primary cache memory of the non-failed storage controller is mirrored in the available secondary cache memory.
- 18. In a cache-redundant data storage system having at least three storage controllers, each of the storage controllers comprising a primary cache memory and a secondary cache memory, a method for recovering cache data of a failed redundant storage controller and reestablishing redundancy, comprising:
linking said at least three storage controllers into a chain, such that cache data of the primary cache memory of each of the storage controllers in the chain is mirrored in the secondary cache memory of another storage controller in the chain; and upon a failure of a storage controller in the chain, detecting the failure and, in response,
creating a structured list of cache tags in the non-failed storage controller whose secondary cache memory was linked to the primary cache memory of the failed controller; flushing the primary cache memory of the non-failed storage controller that was linked to the secondary cache memory of the failed controller; flushing the secondary cache memory of the non-failed storage controller that was linked to the primary cache of the failed controller; and configuring the secondary cache memory of the non-failed storage controller that was linked to the primary cache memory of the failed controller to function as a redundant cache memory for the primary cache memory of the non-failed storage controller that was linked to the secondary cache memory of the failed controller, such that cache data in the primary cache memory of the non-failed storage controller that was formerly linked to secondary cache of the failed controller is mirrored in the secondary cache memory of the non-failed storage controller that was formerly linked to primary cache of the failed controller.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims benefit of U.S. Provisional Patent Application number 60,379,037, filed May 8, 2002, which is herein incorporated by reference. This patent application is related to U.S. patent application Ser. No. ______ (Attorney docket number XIO6032) filed simultaneously herewith, which is herein incorporated by reference in its entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60379037 |
May 2002 |
US |