IP Library Granted Patent US 10,642,704
Granted Patent B2
US 10,642,704 · App. 15/841,083 · Granted May 5, 2020

Storage controller failover system

Inventors: Lucky Pratap Khemani (Bangalore, IN); Kala Sampathkumar (Bangalore, IN)
Assignee: Dell Products L.P.
G06F11/2094G06F11/2092G06F11/2097G06F12/0893G06F16/22G06F2201/85G06F2212/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,642,704
App. No.
15/841,083
Granted
May 5, 2020
Kind
B2
Abstract

A storage controller failover system includes servers, storage controllers coupled to storage subsystems, and a switching system coupling the servers to the storage controllers. A storage controller configurations and storage controller caches for each of the storage controllers are stored in one or more database. A failure is detected of a first storage controller that has provided first storage communications along a first path between a first server and a first storage subsystem and, in response, a second storage controller that is configured to take over the first storage communications from the first storage controller is determined based on its second storage controller configuration. A first storage controller cache for the first storage controller is provided to the second storage controller, and the second storage controller is caused to provide the first storage communications along a second path between the first server and the first storage subsystem.

Claims (64)

1. A storage controller failover system, comprising:

a first storage controller;

a second storage controller; and

a controller system that is coupled to each of the first storage controller and the second storage controller, wherein the controller system is configured to:

determine that the first storage controller that has provided first storage communications along a first path between a first server and a first storage subsystem has failed;

determine that the second storage controller is configured to take over the first storage communications from the first storage controller;

copy, in response to determining that the first storage controller has failed, a mirrored first storage controller cache that is stored in a cache storage and that is a mirror of a first storage controller cache for the first storage controller from the cache storage to the second storage controller; and

cause the second storage controller to provide at least a first portion of the first storage communications along a second path between the first server and the first storage subsystem.

2. The system of claim 1 , further comprising

a third storage controller that is coupled to the controller system, wherein the controller system is configured to:

determine that the third storage controller is configured to take over the first storage communications from the first storage controller;

provide, in response to determining that the first storage controller has failed, the first storage controller cache for the first storage controller to the third storage controller; and

cause the third storage controller to provide at least a second portion of the first storage communications along a third path between the first server and the first storage subsystem.

3. The system of claim 1 , wherein the controller system is configured to:

determine that the second storage controller is configured to take over the first storage communications from the first storage controller in response to determining that a communication load handled by the second storage controller is less than a communication load handled by at least one third storage controller that is coupled to the controller system.

4. The system of claim 1 , wherein the controller system is configured to:

receive a second storage controller configuration from a second server that is coupled to the second storage controller, wherein the controller system uses the second storage controller configuration to determine that the second storage controller is configured to take over the first storage communications from the first storage controller.

5. The system of claim 4 , wherein the controller system is configured to:

store the second storage controller configuration on a storage device that is external to the controller system.

6. The system of claim 1 , wherein the controller system is configured to:

determine that the second storage controller is configured to take over the first storage communications from the first storage controller prior to the determining that the first storage controller has failed.

7. The system of claim 1 , wherein second storage controller is configured to:

provide at least one active virtual function for a second server to provide second storage communications along a third path between the second server and a second storage subsystem; and

hold at least one reserved virtual function prior to the failure of the first storage controller, wherein the causing the second storage controller to provide at least the first portion of the first storage communications along the second path between the first server and the first storage subsystem includes causing the second storage controller to:

provide the at least one reserved virtual function for the first server to provide the first storage communications along the second path between the first server and the first storage subsystem subsequent to the failure of the first storage controller.

8. An information handling system (IHS), comprising:

a processing system; and

a memory system that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide a controller engine that is configured to:

determine that a first storage controller that has provided first storage communications along a first path between a first server and a first storage subsystem has failed;

determine that a second storage controller is configured to take over the first storage communications from the first storage controller;

provide, in response to determining that the first storage controller has failed, a first storage controller cache for the first storage controller to the second storage controller; and

cause the second storage controller to provide at least a first portion of the first storage communications along a second path between the first server and the first storage subsystem, wherein second storage controller is configured to:

provide at least one active virtual function for a second server to provide second storage communications along a third path between the second server and a second storage subsystem; and

hold at least one reserved virtual function prior to the failure of the first storage controller, wherein the causing the second storage controller to provide at least the first portion of the first storage communications along the second path between the first server and the first storage subsystem includes causing the second storage controller to:

provide the at least one reserved virtual function for the first server to provide the first storage communications along the second path between the first server and the first storage subsystem subsequent to the failure of the first storage controller.

9. The IHS of claim 8 , wherein the controller engine is configured to:

determine that a third storage controller is configured to take over the first storage communications from the first storage controller;

provide, in response to determining that the first storage controller has failed, the first storage controller cache for the first storage controller to the third storage controller; and

cause the third storage controller to provide at least a second portion of the first storage communications along a fourth path between the first server and the first storage subsystem.

10. The IHS of claim 8 , wherein the controller engine is configured to:

determine that the second storage controller is configured to take over the first storage communications from the first storage controller in response to determining that a communication load handled by the second storage controller is less than a communication load handled by at least one third storage controller.

11. The IHS of claim 8 , wherein the controller engine is configured to:

receive a second storage controller configuration from the second server that is coupled to the second storage controller, wherein the controller engine uses the second storage controller configuration to determine that the second storage controller is configured to take over the first storage communications from the first storage controller.

12. The IHS of claim 8 , wherein the controller engine is configured to:

determine that the second storage controller is configured to take over the first storage communications from the first storage controller prior to the determining that the first storage controller has failed.

13. A method for providing storage controller failover, comprising:

determining, by a controller system, that a first storage controller that has provided first storage communications along a first path between a first server and a first storage subsystem has failed;

determining, by the controller system using a second storage controller configuration received from a second server that is coupled to a second storage controller, that the second storage controller is configured to take over the first storage communications from the first storage controller;

providing, by the controller system in response to determining that the first storage controller has failed, a first storage controller cache for the first storage controller to the second storage controller; and

causing, by the controller system, the second storage controller to provide at least a first portion of the first storage communications along a second path between the first server and the first storage subsystem.

14. The method of claim 13 , further comprising:

determining, by the controller system, that a third storage controller is configured to take over the first storage communications from the first storage controller;

providing, by the controller system in response to determining that the first storage controller has failed, the first storage controller cache for the first storage controller to the third storage controller; and

causing, by the controller system, the third storage controller to provide at least a second portion of the first storage communications along a third path between the first server and the first storage subsystem.

15. The method of claim 13 , further comprising:

determining, by the controller system, that the second storage controller is configured to take over the first storage communications from the first storage controller in response to determining that a communication load handled by the second storage controller is less than a communication load handled by at least one third storage controller.

16. The method of claim 13 , further comprising:

storing, by the controller system, the second storage controller configuration on a storage device that is external to the controller system.

17. The method of claim 13 , further comprising:

determining, by the controller system, that the second storage controller is configured to take over the first storage communications from the first storage controller prior to the determining that the first storage controller has failed.

18. The method of claim 13 , further comprising:

providing, by the second storage controller, at least one active virtual function for the second server to provide second storage communications along a third path between the second server and a second storage subsystem;

holding, by the second storage controller, at least one reserved virtual function prior to the failure of the first storage controller; and

providing, by the second storage controller, the at least one reserved virtual function for the first server to provide the first storage communications along the second path between the first server and the first storage subsystem subsequent to the failure of the first storage controller.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045482/0131) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2017
From: KHEMANI, LUCKY PRATAP; SAMPATHKUMAR, KALA
To: DELL PRODUCTS L.P.
Reel/Frame 044390/0555 →
Continuity (2)
Continuation 15048795 · Feb 19, 2016
Related Publication 20180107572A1 · Apr 19, 2018