Transparent and dynamic management of redundant physical paths to peripheral devices
First Claim
1. In a computer system, a method of managing command and data flow to peripheral devices, comprising the steps of:
- (a) determining the number of a plurality of independent physical paths to at least one peripheral device connected to the computer system;
(b) resolving all of the plurality of independent physical paths to the at least one peripheral device into one logical path;
(c) presenting the one logical path to any components of the computer system that originates or preprocesses a command destined for the at least one peripheral device;
(d) receiving the command destined for the at least one peripheral device from the originating and/or preprocessing components; and
(e) for each received command, selecting one of the plurality of independent physical paths on which to route the received command to the at least one peripheral device.
1 Assignment
0 Petitions
Accused Products
Abstract
A redundancy manager preferably in an I/O adapter has been disclosed to manage commands to peripheral devices in a computer system. These peripheral devices have multiple ports and may have a different bus associated with each port. The buses, referred to as independent pathways, moreover, need not have the same protocol. The redundancy manager determines the number of independent pathways connected to the peripheral device, presents only one logical device to the operating system and any device driver and any other command or device processing logic in the command path before the redundancy manager. For each incoming command, the redundancy manager determines which pathways are properly functioning and selects the best pathway for the command based on load balancing considerations and any ordering semantics that must be preserved in the incoming command and any outstanding commands and associated data that have not yet executed. The redundancy manager further reroutes the command to an alternate path and resets the device for the alternate path if the selected path failed. Thus, a dynamic mechanism and method to manage multiple pathways to I/O devices such as storage disks do not require the intervention of either the operating system of the computer or any device driver associated with the device or the interconnecting bus.
-
Citations
35 Claims
-
1. In a computer system, a method of managing command and data flow to peripheral devices, comprising the steps of:
-
(a) determining the number of a plurality of independent physical paths to at least one peripheral device connected to the computer system;
(b) resolving all of the plurality of independent physical paths to the at least one peripheral device into one logical path;
(c) presenting the one logical path to any components of the computer system that originates or preprocesses a command destined for the at least one peripheral device;
(d) receiving the command destined for the at least one peripheral device from the originating and/or preprocessing components; and
(e) for each received command, selecting one of the plurality of independent physical paths on which to route the received command to the at least one peripheral device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
(a) preserving protocol requirements of the selected physical path.
-
-
6. The method of claim 1, wherein said step of selecting one of the plurality of independent physical paths on which to route the command to the at least one peripheral device further comprises determining the number of functional physical paths to the at least one peripheral device.
-
7. The method of claim 6, further comprising:
-
(a) determining the number of outstanding commands to the at least one peripheral device; and
(b) determining if any outstanding command and/or the received command has any required execution attributes.
-
-
8. The method of claim 7, further comprising honoring any required execution attributes of the received command and/or of any outstanding commands destined for the at least one peripheral device.
-
9. The method of claim 8, wherein the step of honoring any required execution attributes of the received command and/or of any outstanding commands intended for the at least one peripheral device further comprises:
-
(a) if there are outstanding commands, determining if any outstanding command have any required execution attributes;
determining if the received command has any required execution attribute;
determining if there are any outstanding commands to the at least one peripheral device on more than one independent physical path;
(b) if so, waiting until only one independent physical path has any outstanding commands for the peripheral device and selecting the physical path with the outstanding commands for the received command.
-
-
10. The method of claim 6 further comprising reallocating a received command load to the peripheral device on the independent paths.
-
11. The method of claim 10, wherein said step of balancing a command load to the peripheral device on the independent paths further comprises:
-
(a) for each independent physical path, summing the product of a plurality of load balancing factors and the weight given each factor; and
(b) selecting the independent physical path having the lowest sum.
-
-
12. The method of claim 11, wherein one of the plurality of load balancing factors comprises the number of outstanding commands to the at least one peripheral device.
-
13. The method of claim 11, wherein one of the plurality of load balancing factors comprises the number of outstanding commands on a physical path to all devices.
-
14. The method of claim 11, wherein one of the plurality of load balancing factors comprises the amount of data associated with an outstanding command on a physical path to the at least one peripheral device.
-
15. The method of claim 11, wherein one of the plurality of load balancing factors comprises the expected latency of outstanding commands on a physical path to the at least one device.
-
16. The method of claim 11, wherein one of the plurality of load balancing factors comprises the expected latency of outstanding commands on a physical path to all devices.
-
17. The method of claim 11, wherein one of the plurality of load balancing factors comprises the latency of a physical path to the at least one device.
-
18. The method of claim 1, wherein said step of determining the number of a plurality of independent physical paths to the at least one peripheral device further comprises:
-
(a) detecting that at least one of the plurality of independent physical paths to the at least one peripheral device has failed;
(b) rerouting the received command to a functional physical path;
(c) ensuring the at least one peripheral device is in a state ready to accept the rerouted command.
-
-
19. The method of claim 18, further comprising repairing the failed physical path concurrently with rerouting the received command.
-
20. The method of claim 18, further comprising using the failed path after its repair.
-
21. A computer system for transferring commands to a peripheral device, comprising:
-
(a) a central processing unit to execute an operating system and at least one device driver application program applicable to at least one peripheral device;
(b) a main memory connected to the central processing unit with a memory bus;
(c) at least one peripheral device attached to the central processing unit and the main memory;
(d) a plurality of independent physical paths connecting the central processing unit and main memory with the at least one peripheral device;
(e) a redundancy manager connected between the at least one peripheral device and the host system bus to dynamically manage each command to the at least one peripheral device without intervention of the operating system and/or the at least one device driver application program. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. An I/O adapter connected between a central processing unit having an operating system and a plurality of device driver applications and a plurality of external peripheral devices of which at least one of the external peripheral devices has a multiported connection to independent physical paths connected to the I/O adapter, the I/O adapter having a redundancy manager comprising:
-
(a) means to detect the number of independent physical paths to the at least one external peripheral device;
(b) means to resolve more than one independent physical path to the same at least one external peripheral device into one logical pathway;
(c) means to present the one logical pathway to the central processing unit and to any command/data processing prior to the redundancy manager;
(d) means to receive a command/data intended for the at least one peripheral device;
(e) means to dynamically determine the optimum independent physical path for the received command/data to the at least one peripheral device;
(f) means to preserve the protocols and ordering semantics of the independent physical paths to the at least one peripheral device;
(g) means to detect if an independent physical path has failed;
(h) means to reroute a command from the failed independent physical path;
(i) means to detect that the failed independent physical path has recovered; and
(j) means to automatically use the recovered independent physical path.
-
-
32. A program product for use in a computer network for managing multiple independent physical pathways connected to a peripheral device, said computer program product comprising a signal-bearing medium carrying thereon a redundancy manager comprising:
-
(a) a detector of all multiple independent paths connected to the peripheral device;
(b) a resolver to project to the computer network one logical pathway to the peripheral device;
(c) a path calculator which determines an optimum pathway of the multiple independent physical paths for transit of incoming commands/data to the peripheral device;
(d) a deferral agent to defer ordering semantics of the incoming and any outstanding commands/data intended for the peripheral device to a protocol of the multiple independent paths; and
(e) a selector operable for each incoming command/data to determine an appropriate path considering the results of the path calculator and the deferral agent. - View Dependent Claims (33, 34, 35)
-
Specification