Legal claims defining the scope of protection, as filed with the USPTO.
1. An apparatus comprising: a host device configured to communicate over a network with a storage system comprising a plurality of storage devices; the host device comprising: a set of input-output queues; and a multi-path input-output driver configured to select input-output operations from the set of input-output queues for delivery to the storage system over the network; wherein the multi-path input-output driver is further configured: to determine fabric identifiers for respective ones of a plurality of paths from the host device to the storage system, each of the fabric identifiers being associated with one of a set of multiple switch fabrics interconnecting the host device with the storage system over the network; to monitor performance of the set of multiple switch fabrics; and to select particular ones of the paths for delivery of the input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics; wherein the multi-path input output driver in selecting one of the paths for delivery of a given one of the input-output operations (i) selects a given fabric identifier of a given one of the set of multiple switch fabrics based at least in part on the monitored performance of the set of multiple switch fabrics and (ii) selects a given one of the plurality of paths having the given fabric identifier; wherein the paths are associated with respective initiator-target pairs with the initiators being implemented on the host device and the targets being implemented on the storage system; wherein the initiators of the initiator-target pairs comprise respective host bus adaptors of the host device and the targets of the initiator-target pairs comprise respective storage array ports of the storage system; wherein the given input-output operation comprises a retry of a failed input-output operation on a first one of the multiple switch fabrics between a first host bus adaptor of the host device and a first storage array port of the storage system; wherein the given path selected for the given input-output operation is associated with a second one of the multiple switch fabrics between a second host bus adaptor of the host device and a second storage array port of the storage system; wherein the network comprises a storage area network and the fabric identifiers are associated with respective distinct switch fabrics of the set of multiple switch fabrics interconnecting the host device with the storage system over the storage area network; and wherein the given one of the plurality of paths is associated with only a single one of the multiple switch fabrics interconnecting the host device with the storage system over the storage area network at a given point in time.
2. The apparatus of claim 1 further comprising one or more additional host devices each configured to communicate over the network with the storage system and wherein each additional host device comprises a set of input-output queues and a multi-path input-output driver configured to select input-output operations from the set of input-output queues for delivery to the storage system over the network.
3. The apparatus of claim 1 wherein the multi-path input-output driver in determining the fabric identifiers for respective ones of the plurality of paths from the host device to the storage system is further configured: to send a predetermined command over each of the paths; and to determine the fabric identifiers for the respective paths based at least in part on responses to the predetermined command.
4. The apparatus of claim 3 wherein the predetermined command comprises a Small Computer System Interface (SCSI) command of a particular type.
5. The apparatus of claim 3 wherein the predetermined command comprises at least one of a log sense command, a mode sense command and a vendor unique command.
6. The apparatus of claim 1 wherein the multi-path input-output driver in selecting particular ones of the paths for delivery of the input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics is further configured: to identify a first path that is exhibiting a delayed response time; and to select paths having respective fabric identifiers that are different than the fabric identifier of the first path.
7. The apparatus of claim 1 wherein the multi-path input-output driver in selecting particular ones of the paths for delivery of the input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics is further configured to implement a path selection algorithm that selects particular ones of the paths at least in part as a function of their respective fabric identifiers.
8. The apparatus of claim 7 wherein the path selection algorithm is configured to balance the input-output operations over the set of multiple switch fabrics.
9. The apparatus of claim 1 wherein the given one of the plurality of paths is associated with a first one of the multiple switch fabrics interconnecting the host device with the storage system at a first point in time and is associated with a second one of the multiple switch fabrics interconnecting the host device with the storage system at a second point in time.
10. A method comprising: configuring a multi-path input-output driver of a host device to communicate with a storage system over a network; the multi-path input-output driver: determining fabric identifiers for respective ones of a plurality of paths from the host device to the storage system, each of the fabric identifiers being associated with one of a set of multiple switch fabrics interconnecting the host device with the storage system over the network; monitoring performance of the set of multiple switch fabrics; and selecting particular ones of the paths for delivery of input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics; wherein the multi-path input output driver in selecting one of the paths for delivery of a given one of the input-output operations (i) selects a given fabric identifier of a given one of the set of multiple switch fabrics based at least in part on the monitored performance of the set of multiple switch fabrics and (ii) selects a given one of the plurality of paths having the given fabric identifier; wherein the paths are associated with respective initiator-target pairs with the initiators being implemented on the host device and the targets being implemented on the storage system; wherein the initiators of the initiator-target pairs comprise respective host bus adaptors of the host device and the targets of the initiator-target pairs comprise respective storage array ports of the storage system; wherein the given input-output operation comprises a retry of a failed input-output operation on a first one of the multiple switch fabrics between a first host bus adaptor of the host device and a first storage array port of the storage system; wherein the given path selected for the given input-output operation is associated with a second one of the multiple switch fabrics between a second host bus adaptor of the host device and a second storage array port of the storage system; wherein the network comprises a storage area network and the fabric identifiers are associated with respective distinct switch fabrics of the set of multiple switch fabrics interconnecting the host device with the storage system over the storage area network; and wherein the given one of the plurality of paths is associated with only a single one of the multiple switch fabrics interconnecting the host device with the storage system over the storage area network at a given point in time.
11. The method of claim 10 wherein the multi-path input-output driver determines the fabric identifiers for respective ones of the plurality of paths from the host device to the storage system by: sending a predetermined command over each of the paths; and determining the fabric identifiers for the respective paths based at least in part on responses to the predetermined command.
12. The method of claim 10 wherein the multi-path input-output driver selects particular ones of the paths for delivery of the input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics by: identifying a first path that is exhibiting a delayed response time; and selecting paths having respective fabric identifiers that are different than the fabric identifier of the first path.
13. The method of claim 10 wherein the multi-path input-output driver in selecting particular ones of the paths for delivery of the input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics is further configured to implement a path selection algorithm that selects particular ones of the paths at least in part as a function of their respective fabric identifiers, and wherein the path selection algorithm is configured to balance the input-output operations over the set of multiple switch fabrics.
14. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code, when executed by a host device comprising a multi-path input-output driver, the host device being configured to communicate over a network with a storage system, causes the multi-path input-output driver: to determine fabric identifiers for respective ones of a plurality of paths from the host device to the storage system, each of the fabric identifiers being associated with one of a set of multiple switch fabrics interconnecting the host device with the storage system over the network; to monitor performance of the set of multiple switch fabrics; and to select particular ones of the paths for delivery of the input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics; wherein the multi-path input output driver in selecting one of the paths for delivery of a given one of the input-output operations (i) selects a given fabric identifier of a given one of the set of multiple switch fabrics based at least in part on the monitored performance of the set of multiple switch fabrics and (ii) selects a given one of the plurality of paths having the given fabric identifier; wherein the paths are associated with respective initiator-target pairs with the initiators being implemented on the host device and the targets being implemented on the storage system; wherein the initiators of the initiator-target pairs comprise respective host bus adaptors of the host device and the targets of the initiator-target pairs comprise respective storage array ports of the storage system; wherein the given input-output operation comprises a retry of a failed input-output operation on a first one of the multiple switch fabrics between a first host bus adaptor of the host device and a first storage array port of the storage system; wherein the given path selected for the given input-output operation is associated with a second one of the multiple switch fabrics between a second host bus adaptor of the host device and a second storage array port of the storage system; wherein the network comprises a storage area network and the fabric identifiers are associated with respective distinct switch fabrics of the set of multiple switch fabrics interconnecting the host device with the storage system over the storage area network; and wherein the given one of the plurality of paths is associated with only a single one of the multiple switch fabrics interconnecting the host device with the storage system over the storage area network at a given point in time.
15. The computer program product of claim 14 wherein the multi-path input-output driver determines the fabric identifiers for respective ones of the plurality of paths from the host device to the storage system by: sending a predetermined command over each of the paths; and determining the fabric identifiers for the respective paths based at least in part on responses to the predetermined command.
16. The computer program product of claim 15 wherein the predetermined command comprises a Small Computer System Interface (SCSI) command of a particular type.
17. The computer program product of claim 15 wherein the predetermined command comprises at least one of a log sense command, a mode sense command and a vendor unique command.
18. The computer program product of claim 14 wherein the multi-path input-output driver selects particular ones of the paths for delivery of the input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics by: identifying a first path that is exhibiting a delayed response time; and selecting paths having respective fabric identifiers that are different than the fabric identifier of the first path.
19. The computer program product of claim 14 wherein the multi-path input-output driver in selecting particular ones of the paths for delivery of the input-output operations to the storage system based at least in part on the fabric identifiers and the monitored performance of the set of multiple switch fabrics is further configured to implement a path selection algorithm that selects particular ones of the paths at least in part as a function of their respective fabric identifiers.
20. The computer program product of claim 19 wherein the path selection algorithm is configured to balance the input-output operations over the set of multiple switch fabrics.
Unknown
June 29, 2021
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.