Method and apparatus for providing a raid controller having transparent failover and failback
First Claim
1. A method for operating a plurality of controllers adapted to transfer data between a data storage system and at least one host computer in response to instruction therefrom, the method comprising the steps of:
- (a) associating a unique identifier with each controller;
(b) addressing instructions from the host computer to one of said plurality of controllers via a host-side loop using the unique identifier associated with the controller;
(c) detecting a failed controller from among said plurality of connected controllers; and
in response, (d) disabling the failed controller, and (e) a surviving controller, different from said failed controller, responding to instructions addressed to the surviving computer and to instructions addressed to the failed controller via the host-side loop, so that failure of.the failed controller is substantially transparent to the host computer; and
wherein the step of associating a unique identifier with each controller comprises the step of associating a world wide name with each controller.
4 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for controlling a memory system 100 comprising a plurality of controllers 105 connected by a fibre channel arbitrated loop 145 to provide transparent failover and failback mechanisms for failed controllers. The controllers 105 are adapted to transfer data between a data storage system 120 and at least one host computer 110 in response to instructions therefrom. In the method, a unique identifier is provided to each controller 105. The operation of the controllers 105 is then monitored and, when a failed controller is detected, a failover procedure is performed on a surviving controller. The failover procedure includes disabling the failed controller and instructing the surviving controller to assume the identity of the failed controller. Thus, the surviving controller is capable of responding to instructions addressed to it and instructions addressed to the failed controller, and the failure of the failed controller is transparent to the host computer 110. A computer program and a computer program product for implementing the method are also provided.
218 Citations
25 Claims
-
1. A method for operating a plurality of controllers adapted to transfer data between a data storage system and at least one host computer in response to instruction therefrom, the method comprising the steps of:
-
(a) associating a unique identifier with each controller;
(b) addressing instructions from the host computer to one of said plurality of controllers via a host-side loop using the unique identifier associated with the controller;
(c) detecting a failed controller from among said plurality of connected controllers; and
in response,(d) disabling the failed controller, and (e) a surviving controller, different from said failed controller, responding to instructions addressed to the surviving computer and to instructions addressed to the failed controller via the host-side loop, so that failure of.the failed controller is substantially transparent to the host computer; and
wherein the step of associating a unique identifier with each controller comprises the step of associating a world wide name with each controller. - View Dependent Claims (2, 3)
-
-
4. A method for operating a plurality of controllers adapted to transfer data between a data storage system and at least one host computer in response to instructions therefrom, the method comprising the steps of:
-
(a) associating a different identifier with each controller;
(b) addressing instructions from the host computer to one of said plurality of controllers via a host-side loop using the identifier associated with the controller;
(c) detecting a failed controller from among said plurality of connected controllers; and
in response,(d) disabling the failed controller, and (e) a surviving controller, different from said failed controller, responding to instructions addressed to the surviving computer and to instructions addressed to the failed controller via the host-side loop, so that failure of the failed controller is substantially transparent to the host computer; and
wherein the plurality of controllers comprise a pair of controllers, and wherein the method further comprises the step of communicating the unique identifier of each controller to the other before step (c).
-
-
5. A method for operating a plurality of controllers adapted to transfer data between a data storage system and at least one host computer in response to instructions therefrom, the method comprising the steps of:
-
(a) associating a different identifier with each controller;
(b) addressing instructions from the host computer to one of said plurality of controllers via a host-side loop using the identifier associated with the controller;
(c) detecting a failed controller from among said plurality of connected controllers; and
in response,(d) disabling the failed controller, and (e) a surviving controller, different from said failed controller, responding to instructions addressed to the surviving computer and to instructions addressed to the failed controller via the host-side loop, so that failure of the failed controller is substantially transparent to the host computer; and
wherein each controller has an active port and a failover port coupled to the host computer, and wherein step (e) comprises the step of activating the failover port of the surviving controller.
-
-
6. A method for operating a memory system having a plurality of controllers adapted to transfer data between a data storage system and at least one host computer in response to instructions therefrom, the method comprising the steps of:
-
(a) associating a different identifier with each controller;
(b) addressing instructions from the host computer to one of said plurality of controllers via a host-side loop using the identifier associated with the controller;
(c) detecting a failed controller from among said plurality of connected controllers; and
in response,(d) disabling the failed controller, and (e) a surviving controller, different from said failed controller, responding to instructions addressed to the surviving computer and to instructions addressed to the failed controller via the host-side loop, so that failure of the failed controller is substantially transparent to the host computer; and
replacing the failed controller with a new controller substantially without re-booting the memory system; and
wherein the new controller assumes the identity of the failed controller and responds to instructions addressed to it until the memory system is re-booted.
-
-
7. A memory system for transferring data between a data storage system and at least one host computer in response to instructions therefrom, the memory system comprising a pair of dual-active controllers connected by a host-side loop, wherein each controller has a unique identifier and is adapted to assume the identity of a failed controller and to respond to instructions addressed to it and instructions addressed to the failed controller, so that failure of the failed controller is substantially transparent to the host computer;
- and wherein the unique identifier comprises a world wide name.
- View Dependent Claims (8)
-
9. A memory system for transferring data between a data storage system and at least one host computer in response to instructions therefrom, the memory system comprising a pair of dual-active controllers connected by a host-side loop, wherein each controller has a unique identifier and is adapted to assume the identity of a failed controller and to respond to instructions addressed to it and instructions addressed to the failed controller, so that failure of the failed controller is substantially transparent to the host computer;
- and wherein the unique identifier comprises a loop identifier to each controller.
-
10. A memory system for transferring data between a data storage system and at least one host computer in response to instructions therefrom, the memory system comprising a pair of dual-active controllers connected by a host-side loop, wherein each controller has a unique identifier and is adapted to assume the identity of a failed controller and to respond to instructions addressed to it and instructions addressed to the failed controller, so that failure of the failed controller is substantially transparent to the host computer;
- and wherein each controller comprises a computer readable medium and wherein the unique identifier comprises a machine readable code stored therein.
- View Dependent Claims (11, 12)
-
13. A memory system for transferring data between a data storage system and at least one host computer in response to instructions therefrom, the memory system comprising a pair of dual-active controllers connected by a host-side loop, wherein each controller has a unique identifier and is adapted to assume the identity of a failed controller and to respond to instructions addressed to it and instructions addressed to the failed controller, so that failure of the failed controller is substantially transparent to the host computer;
- and wherein the data storage system comprises a plurality of disk drives coupled to the controllers by disk channels, and wherein the disk channels serve as the communication path.
-
14. A memory system for transferring data between a data storage system and at least one host computer in response to instructions therefrom, the memory system comprising a pair of dual-active controllers connected by a host-side loop, wherein each controller has a unique identifier and is adapted to assume the identity of a failed controller and to respond to instructions addressed to it and instructions addressed to the failed controller, so that failure of the failed controller is substantially transparent to the host computer;
- and wherein each controller has an active port and a failover port coupled to the host computer, and wherein each controller is adapted to activate the failover port upon failure of the other controller.
-
15. A method for operating each of a plurality of storage controllers coupled to a computer via a host-side loop, each of said storage controllers having a different identifier including a world wide name, said computer issuing I/0 instructions to each of said storage controllers, each of said I/O instructions including an I/O command and one of said identifiers to identify the storage controller to execute the respective I/O command, said method performed by each of said storage controllers comprising the steps of:
-
detecting that another of said storage controllers has failed, and in response, sending a disabling command to the failed storage controller, and handling I/O instructions which include the identifier, including the world wide name, of said failed storage controller and handling I/0 instructions which include the identifier, including the world wide name, of said each storage controller, such that the failure of said failed storage controller is transparent to said computer. - View Dependent Claims (16, 17, 18, 19, 20)
-
-
21. A computer program product for operating each of a plurality of storage controllers having an active port and a failover port coupled to a computer via a host-side loop, each of said storage controllers having a different identifier, said computer issuing I/O instructions to each of said storage controllers, each of said I/O instructions including an I/O command and an identifier to identify a storage controller to execute the respective I/O command, said computer program product comprising:
-
a computer readable medium; and
first program instructions to detect that another of said storage controllers has failed, and in response, second program instructions sending a disabling command to the failed storage controller, and third program instructions handling, via said failover port, I/0 instructions which include the identifier of said failed storage controller and handling, via said active port, I/O instructions which include the identifier of said each storage controller, such that the failure of said failed storage controller is transparent to said computer; and
wherein said first, second and third program instructions are stored on said computer readable medium. - View Dependent Claims (22, 23, 24, 25)
-
Specification