Storage Area Network Controller

Abstract
This invention relates to a method, system and computer program product for reading data from a storage controller in storage area network. A read data instruction is received from an application requesting data from the storage controller using a primary data path. If the data on the primary data path is not transferred in a defined time interval using the primary data path, data is requested from the storage controller using one or more alternative data paths. Data is received from the storage controller on one of data paths and into a buffer. When the read instruction has completed and that the data is in the buffer, the application is notified. Each data path is associated with a buffer and the data is received into a buffer associated with the path. The application is informed which buffer holds the data and the application accesses the data from this buffer.
Description

DESCRIPTION OF DRAWINGS

Embodiments of the invention will now be described, by means of example only, with reference to the accompanying drawings in which:



FIG. 1 is a schematic of the preferred embodiment of the invention; and



FIG. 2 is a schematic of the method of the multi-path processor of the preferred embodiment.





DESCRIPTION OF THE EMBODIMENTS

A preferred embodiment shown in FIGS. 1 and 2 and according to the present invention is storage area network (SAN) system (10) comprising: a server (12) linked by multiple paths to a storage controller (14) through a SAN (16). The storage controller (12) has direct access to the storage (18). In one embodiment, the storage (18) is a hard drive.


The SAN (10) links the storage controller (14) to the server (12) along one of a plurality of paths (20A), (20B) (20C) and any one of the paths can be used by the server to read or write data from the storage controller. The paths are though a network of switches, some switches are faster than others and therefore the time taken through the network on different paths will be different.


The storage controller (14) can receive multiple identical read requests arriving via different paths (20A), (20B), and (20C). A first read request will cause the appropriate data to be loaded into the cache in the storage controller (14) and subsequent reads are then satisfied from this cache and will not have significant impact on performance.


The server (12) comprises: an application host (22); multi-path processor (24); and device drivers (26A), (26B) and (26C).


The application host (22) comprises an application (28) and an application buffer (30A). The application host (22) selects any one of the paths (20A), (20B), and (20C) when it needs to do an I/O transaction with the storage controller. This embodiment relates to read transactions.


Each device driver (26A), (26B), (26C) can make an I/O request to the storage controller over a respective path (20A), (20B), (20C), respectively.


The application (28) is a set of instructions for achieving a business purpose such as a transaction retrieval database, using a set of instructions. One or more of these instructions will be a read instruction executed by the application host.


The application buffer (30A) stores data that is received from the storage controller (14). The application host (22) executes the application (28) and in particular when the application (28) requires a read operation the application host (22) will execute this instruction and retrieve the data from the storage controller (14) and place it in the application buffer (30A).


The multi-path processor (24) comprises alternative path buffers (30B) and (30C); a multi-path controller method (200) and a path optimizer method (300).


The alternative path buffers (30B) and (30C) are alternative destinations for data sent from the storage controller (14) along alternative paths to the primary path in the SAN. An alternative path buffer is set up for each alternative path.


The multi-path controller method (200) is shown in detail in FIG. 2 and comprises: the following steps:



Receiving a read data instruction from the application host (22) as instructed by the application (28), step (202).


Selecting a primary path (20A) to a storage controller (14), including linking the primary path (20A) to the primary data buffer (30A) and requesting data from storage controller (14) using the primary data path (20A), step (204).


Waiting for a defined period of time, T1 to allow for a normal transfer of data to take place. In one embodiment, the time period, T1, may be set to five seconds. If a normal transfer of data occurs then the rest of the method is not performed. It is preferable that there is a delay because most transfers will occur without problem. A timer is started to count out the defined normal transfer period (e.g. 5 seconds), step (206).


Selecting an alternative path (20B) to a resource, step (208). This includes linking the alternative path (20B) to an alternative data buffer (30B) and requesting data from the storage controller (14) using the alternative data path (20B). It is preferable to set up one additional path but the same technique could apply to a further additional path (20C) if the alternative path (20B) is delayed past a normal transfer period. In theory this technique could be applied to all available paths.


Receiving data from the resource (18) on the primary path or alternative paths and forwarding the data into the respective buffer (30A), (30B) or (30C), step (210).


Waiting for a ‘complete status’ control signal from one of the paths to indicate a completed transfer when data sent down that path is sent correctly, step (212).


When a completed transfer on one path is indicated then the requests on other paths are optionally aborted, step (214). If neither transfer completes by the time that the timer reaches a further predetermined time, e.g. 30 seconds, then host assumes that the transaction cannot be completed and returns appropriate status, e.g. bad, to the application and does whatever its normal cleanup process is for this scenario.


Notify the application that the read instruction has completed and that the data is in the buffer, step (216). In one embodiment the application is informed which buffer holds the data and the application can use the data directly from this buffer. In an alternative embodiment the data is transferred from an alternative buffer to the primary buffer.


The optimizer method (300) records over more than one retrieval cycle which path is the most successful at receiving the data without delay. The multi-path processor selects the most successful path as the primary path in subsequent retrieval cycles.


For example, a banking application requires a transaction record and makes request for the transaction data.


The multi-path processor (24) receives a read data instruction for the transaction record from the application host.


The multi-path processor selects primary path (20A) as the optimum path and primary data buffer (30A) and makes a request to storage controller (14) using the primary data path (20A).


After 5 seconds, no ‘complete signal’ has been received due to a delay with a switch in the SAN network and the multi-path processor selects an alternative path (20B) and data buffer (30B). A further request transaction data is made to storage controller (14) but this time using the alternative data path (20B).


The transaction data is received from the resource (18) on the alternative path (20B) into the buffer (30B) and a ‘complete status’ control signal indicates that the data has been sent down that path correctly.


The requests on other paths are aborted and the application is notified that the transaction data has completed is in the buffer.


The banking application reads the transaction data and is not aware of delays on the primary path.


In summary there is described a method, system and computer program product for reading data from a storage controller in storage area network comprising: receiving a read data instruction from an application; requesting data from storage controller using the primary data path; further requesting data from the storage controller using one or more alternative data paths if the data is not transferred in a normal transfer time using the primary data path; receiving data from the storage controller on one of paths and into a buffer; and notifying the application that the read instruction has completed and that the data is in the buff wherein each path is associated with a buffer and the data is received into a buffer associated with the path. The application is informed which buffer holds the data and the application accesses the data from this buffer.


It will be clear to one skilled in the art that the method of the present invention may suitably be embodied in a logic apparatus comprising logic means to perform the steps of the method, and that such logic means may comprise hardware components or firmware components.


It will be equally clear to one skilled in the art that the logic arrangement of the present invention may suitably be embodied in a logic apparatus comprising logic means to perform the steps of the method, and that such logic means may comprise components such as logic gates in, for example, a programmable logic array. Such a logic arrangement may further be embodied in enabling means for temporarily or permanently establishing logical structures in such an array using, for example, a virtual hardware descriptor language, which may be stored using fixed or transmittable carrier media.


It will be appreciated that the method described above may also suitably be carried out fully or partially in software running on one or more processors (not shown), and that the software may be provided as a computer program element carried on any suitable data carrier (also not shown) such as a magnetic or optical computer disc. The channels for the transmission of data likewise may include storage media of all descriptions as well as signal carrying media, such as wired or wireless signal media.


The present invention may suitably be embodied as a computer program product for use with a computer system. Such an implementation may comprise a series of computer readable instructions either fixed on a tangible medium, such as a computer readable medium, for example, diskette, CD-ROM, ROM, or hard disk, or transmittable to a computer system, via a modem or other interface device, over either a tangible medium, including but not limited to optical or analogue communications lines, or intangibly using wireless techniques, including but not limited to microwave, infrared or other transmission techniques. The series of computer readable instructions embodies all or part of the functionality previously described herein.


Those skilled in the art will appreciate that such computer readable instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Further, such instructions may be stored using any memory technology, present or future, including but not limited to, semiconductor, magnetic, or optical, or transmitted using any communications technology, present or future, including but not limited to optical, infrared, or microwave. It is contemplated that such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation, for example, shrink-wrapped software, pre-loaded with a computer system, for example, on a system ROM or fixed disk, or distributed from a server or electronic bulletin board over a network, for example, the Internet or World Wide Web.


Advantages Over the Prior Art

This invention improves host performance by detecting read I/Os that are being delayed by an unresponsive network path and submitting these I/Os via alternative paths, before the original I/O has actually timed out. Either the new read I/O will complete in a timely fashion resulting in improved performance, or this new I/O or the original I/O will eventually complete or time out, in which latter case there won't be any performance improvement.


One solution for improving performance associated with a de-allocated buffer is to use a different buffer for each I/O request. When one of the read I/Os completes and the buffer is returned to the application which may want to modify the buffer; data from another read I/O should not be copied into the buffer as this occurs. Many hardware platforms and operating systems cannot cope with two different device drivers transferring to the same memory at the same time. A SCSI device may legitimately transfer bad data to a host and then complete the read I/O indicating a failure has occurred. A single buffer would not distinguish whether the data in the buffer was good or bad if one read returned good data while the other read returned bad data.


Preferably each path is associated with a buffer and the data is received into a buffer associated with the path and advantageously the application is informed which buffer holds the data and the application accesses the data from this buffer. Alternatively the data is transferred from a buffer associated with an alternative path to a buffer associated with the primary path.


The data can be suitably requested from the storage controller using a further alternative data path if the data is not transferred in a normal transfer time using the primary data path or the alternative path.


Advantageously the method waits for a ‘complete status‘ control signal from one of the paths to indicate a completed transfer where data sent down that path is sent correctly.


When a completed transfer on one path is indicated then it is useful that the requests on other paths are aborted.


If a particular alternative path is more successful than the primary path over a number of data requests then that alternative path becomes the primary path.


Alternative Embodiments

It will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without departing from the spirit and scope of the invention. In particular, as described above, the embodiments apply generally to storage area networks, but might be most applicable in the subset of networks that do not notify the application host when a path is lost. In ISCSI networks, there is no State Change Notification mechanism so if a path is actually lost, the application host will only find this out after timing out an I/O sent down that path.


In networks that notify the application host when a path is lost there is then no need to pre-emptively use other paths as the application host will know that the I/O has failed via the original path. For example Fibre Channel networks where the fabric manager sends a State Change Notification message. However, the embodiment would cover the case where the path is still apparently connected but is simply unresponsive.


The embodiment will also help improve the performance when the communication channel between the host and the storage controller can drop data and this can only be detected via a relatively long timeout. Examples of such communications channels are class 3 fibre channel (the most common implementation of fibre channel for disk based storage) and ISCSI. For particularly bad communication channels where a significant percentage of data is being dropped choosing an alternative path to the storage controller is also a much better error recovery procedure than simply retrying the command down the same path.


It will be further appreciated that embodiments of the present invention may be provided in the form of a service deployed on behalf of a customer to offer service on demand.


It will also be appreciated that various further modifications to the preferred embodiment described above will be apparent to a person of ordinary skill in the art.

Claims
  • 1. A method of reading data from a storage controller in a storage area network comprising: receiving a read data instruction requesting data from a storage controller using a primary data path;requesting data from said storage controller using an alternative data path in response to said data not transferring in a normal transfer time using said primary data path;receiving data from said storage controller on one of said paths and into a buffer; andnotifying said application that the read instruction has completed and that the data is in the buffer.
  • 2. The method of claim 1, wherein each path is associated with a buffer and the data is received into a buffer associated with the path.
  • 3. The method of claim 2, wherein the step of notifying includes informing an application which buffer holds the data, and further comprising the application accessing the data from an associated buffer.
  • 4. The method of claim 1, further comprising transferring data from a buffer associated with an alternative path to a buffer associated with the primary path.
  • 5. The method of claim 1, further comprising waiting for a complete status control signal from one of said data paths indicating a completed transfer of data.
  • 6. The method of claim 5, further comprising aborting the data request on one of said paths when a completed transfer on one path is indicated.
  • 7. The method of claim 1, further comprising reassigning a successful alternative data path to become said primary path if said alternative path is more successful than said primary path over a number of data requests.
  • 8. A computer system comprising: first requesting means for requesting data from a storage controller using a primary data path;second requesting means for requesting data from said storage controller using an alternative data path if said data is not transferred in a defined transfer time using said primary data path;a receiving means for receiving data from said storage controller on one of said data paths and into a buffer; andnotifying means for notifying an application that the data is in the buffer.
  • 9. The system of claim 8, wherein each path is associated with a buffer and the data is received into a buffer associated with the path.
  • 10. The system of claim 9, wherein the application is informed which buffer holds the data and an application accesses the data from this buffer.
  • 11. The system of claim 8, wherein the data is transferred from a buffer associated with said alternative path to a buffer associated with the primary data path.
  • 12. The system 8, further comprising a complete status control signal to be communicated from one of said data paths to indicate a completed transfer where data sent down that path is sent correctly.
  • 13. The system of claim 12, wherein when said completed transfer on one path is indicated then the request on said alternative path is aborted.
  • 14. The system of claim 8, wherein if a particular alternative path is more successful than the primary path over a plurality of data requests then that alternative path becomes the primary path.
  • 15. An article comprising: a computer readable media including computer program instructions for requesting data from a storage controller in a storage area network system, comprising: receiving a read data instruction requesting data from a storage controller using a primary data path;requesting data from said storage controller using an alternative data path if the data is not transferred in a defined time interval using said primary data path;receiving data from said storage controller on one of said data paths and into a buffer; andnotifying an application that the read data instruction has completed and that the data is in the buffer.
  • 16. The article of claim 15, wherein each path is associated with a buffer and that data is received into a buffer associated with its path.
  • 17. The article of claim 15, further comprising instructions to transfer data from a buffer associated with said alternative data path to a buffer associated with said primary data path.
  • 18. The article of claim 15, further comprising instructions to wait for a complete status control signal to be communicated from one of said data paths to indicate a completed transfer where data sent down that path is sent correctly, and to optionally abort a data request on another data path upon receipt of said complete status signal.
  • 19. The article of claim 15, further comprising instructions to assign said alternative data path to become said primary data path if said alternative data path is more successful than said primary data path over a number of data requests.
  • 20. An article comprising: a tangible computer readable media including computer program instructions for requesting data from a storage controller in a storage area network system, comprising: receiving a read data instruction requesting data from a storage controller using a primary data path;requesting data from said storage controller using an alternative data path if the data is not transferred in a defined time interval using said primary data path;receiving data from said storage controller on one of said data paths and into a buffer; andnotifying the application that the read data instruction has completed and that the data is in the buffer.
Priority Claims (1)
Number Date Country Kind
0610474.9 May 2006 GB national