← Back to Patent Explorer
US6145028A Expired / Lapsed US ⏱️ 0.0 years remaining

Enhanced multi-pathing to an array of storage devices

Assignee: Teradata US Inc
•
Filing: 1997-12-11
•
Granted: 2000-11-07
•
Expires: 2017-12-11
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method, apparatus and article of manufacture for hardware independent system level control of storage units in an array is disclosed. The method comprises the steps of scanning the array of storage devices to find available I/O paths, storing a list of available I/O paths to each storage device in a memory, receiving an I/O request directed at a virtual disk memory location, mapping the virtual disk memory location to a corresponding storage device, selecting an I/O path for the I/O request from the list of available I/O paths in stored in the memory, and transmitting the I/O request to the storage device over the selected I/O path. The apparatus comprises a virtual disk driver functionally coupled between the computer and the disk array with a core driver and a subordinate driver customized for storage device arrays from different hardware vendors. Selection of the subordinate driver is accomplished via a switch table stored in the computer memory.

Inventors

  • 👤 Eric M. Shank
  • 👤 Brian J. Raccuglia

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 17:21
CPC Classifications
G; G06; G06F; G06F3/00; G06F3/06; G06F3/0601; G06F3/0602; G06F3/0604; G06F3/0607; G06F13/00; G06F13/10; G06F13/102; G06F13/12; G06F13/122; G06F3/0628; G06F3/0629; G06F3/0635; G06F3/0668; G06F3/0671; G06F3/0683; G06F3/0689

Claims Analysis

Total Claims: 32
Claim 1
Independent Claim 176 words
A method of storing and retrieving information from an array of storage devices implementing a plurality of virtual disk drives, the storage devices operatively coupled to a computer by a plurality of (I/O) paths, comprising the steps of: scanning the storage devices to find available I/O paths between the computer and each storage device; storing a list of the available I/O paths between the computer and each storage device in a configuration file; receiving an I/O request directed at a virtual disk memory location in a virtual disk driver, the virtual disk driver comprising a core virtual disk driver and a subordinate driver implementing storage array specific functions; associating the core virtual disk driver with the subordinate disk driver in accordance with a switch table stored in a memory of the computer; mapping the virtual disk memory location to a corresponding storage device; selecting an I/O path for the I/O request from the list of available I/O paths in the configuration file; and transmitting the I/O request to the storage device over the selected I/O path.
Claim 2
Independent Claim 176 words
A method of storing and retrieving information from an array of storage devices implementing a plurality of virtual disk drives, the storage devices operatively coupled to a computer by a plurality of (I/O) paths, comprising the steps of: scanning the storage devices to find available I/O paths between the computer and each storage device; storing a list of the available I/O paths between the computer and each storage device in a configuration file; receiving an I/O request directed at a virtual disk memory location in a virtual disk driver, the virtual disk driver comprising a core virtual disk driver and a subordinate driver implementing storage array specific functions; associating the core virtual disk driver with the subordinate disk driver in accordance with a switch table stored in a memory of the computer; mapping the virtual disk memory location to a corresponding storage device; selecting an I/O path for the I/O request from the list of available I/O paths in the configuration file; and transmitting the I/O request to the storage device over the selected I/O path.
Claim 3
Dependent Claim 99 words
The method of claim 1, wherein the step of scanning the storage devices to find all available I/O paths between the computer and each storage device comprises the step of: transmitting an inquiry command from a virtual disk driver to the storage devices on each I/O path; receiving an inquiry command response in the virtual disk driver from each storage device, the inquiry command response comprising an identification unique to the storage device; correlating the inquiry command response with the I/O path used to send the inquiry command; and compiling a list of I/O paths for each storage device.
Claim 4
Dependent Claim 88 words
The method of claim 1, wherein the step of associating the core virtual disk driver with the subordinate disk driver in accordance with the switch table comprises the steps of: sending an inquiry command from the virtual disk driver to the storage device array; receiving inquiry data from the disk array, the inquiry data comprising a storage device array identification; scanning the switch table to identify a subordinate disk driver corresponding to the storage array identification; and associating the core virtual disk driver with the subordinate disk driver.
Claim 5
Dependent Claim 119 words
The method of claim 1, wherein the I/O paths comprise active I/O paths designated for completing I/O requests, and passive I/O paths designated to complete I/O requests only upon an active I/O path failure, and the storage array specific functions comprise: a function for marking an active I/O path as unavailable; a function for marking a passive I/O path as active; a function for marking an unavailable I/O path as available; a function for determining a unique identification for each storage device; a function for selecting an algorithm to select an I/O path for the I/O request from the available I/O paths in the configuration file; and a function for determining a unique identification of the storage device array.
Claim 6
Dependent Claim 21 words
The method of claim 1, wherein the step of selecting an I/O path comprises the step of selecting successive I/O paths.
Claim 7
Dependent Claim 42 words
The method of claim 1, wherein the step of selecting an I/O path comprises the steps of: measuring an I/O path data latency for each I/O path; and selecting the I/O path for the I/O request according to the measured data latency.
Claim 8
Dependent Claim 81 words
The method of claim 6, further comprising the step of receiving an I/O message from the storage device indicating that the I/O request is completed and wherein the step of measuring and storing an I/O path data latency for each I/O path comprises the steps of: measuring the elapsed time between each I/O request and I/O messages from the storage device indicating that the I/O request is completed for each I/O path; and averaging the elapsed time for each I/O path.
Claim 9
Dependent Claim 71 words
The method of claim 1, wherein a pending I/O request is defined by an I/O request for which a message indicating the I/O request is completed has not been received, and wherein the step of selecting an I/O path comprises the steps of: determining the number of pending I/O requests for each I/O path; and selecting the I/O path for the I/O request according to the number of pending I/O requests.
Claim 10
Dependent Claim 49 words
The method of claim 1, wherein a pending I/O request is defined byan I/O request for which a message indicating the I/O request is completed has not been received, and wherein the I/O path is selected according to whether the pending I/O requests are read requests or write requests.
Claim 11
Dependent Claim 69 words
The method of claim 1, wherein a pending I/O request is defined by an I/O request for which a message indicating the I/O request is completed has not been received, and wherein the pending I/O request designates data in the storage devices of a size, and wherein the I/O path is selected according to the size of the data designated by the pending I/O requests on each I/O path.
Claim 12
Dependent Claim 65 words
The method of claim 1, further comprising the steps of: receiving an I/O error message from an adapter driver coupled between the virtual disk driver and the array of storage devices, the I/O error message indicating the I/O paths with errors and an I/O path error type; and modifying the configuration file to remove I/O paths with errors from the list of available I/O paths.
Claim 13
Dependent Claim 41 words
The method of claim 11, wherein the I/O error message indicates an I/O error type, and the configuration file is modified to remove I/O paths with errors from the list of available I/O paths in accordance with the I/O error type.
Claim 14
Independent Claim 206 words
An apparatus for storing and retrieving information from an array of storage devices implementing a plurality of virtual disk drives, the storage devices operatively coupled to a computer by a plurality of I/O paths, the apparatus comprising a virtual disk driver, executing on the computer, comprising: a scanner for finding available I/O paths between the computer and each storage device and for storing a list of the available I/O paths in a configuration file in a memory coupled to the computer; a receiver, for accepting I/O requests directed at a virtual disk memory location from an application executing on the computer; a module for mapping the virtual disk memory location to a corresponding storage device and for selecting an I/O path for the I/O request from the list of available I/O paths in the configuration file; a transmitter for sending the I/O request to the storage device over the selected I/O path; and wherein the virtual disk driver comprises a core virtual disk driver and a subordinate driver implementing storage array-specific functions, and the vitual disk driver further comprises a means for associating the core virtual disk driver with the subordinate disk driver in accordance with a switch table stored in the memory of the computer.
Claim 15
Independent Claim 206 words
An apparatus for storing and retrieving information from an array of storage devices implementing a plurality of virtual disk drives, the storage devices operatively coupled to a computer by a plurality of I/O paths, the apparatus comprising a virtual disk driver, executing on the computer, comprising: a scanner for finding available I/O paths between the computer and each storage device and for storing a list of the available I/O paths in a configuration file in a memory coupled to the computer; a receiver, for accepting I/O requests directed at a virtual disk memory location from an application executing on the computer; a module for mapping the virtual disk memory location to a corresponding storage device and for selecting an I/O path for the I/O request from the list of available I/O paths in the configuration file; a transmitter for sending the I/O request to the storage device over the selected I/O path; and wherein the virtual disk driver comprises a core virtual disk driver and a subordinate driver implementing storage array-specific functions, and the vitual disk driver further comprises a means for associating the core virtual disk driver with the subordinate disk driver in accordance with a switch table stored in the memory of the computer.
Claim 16
Dependent Claim 74 words
The apparatus of claim 13, wherein the scanner comprises: means for transmitting an inquiry command from the virtal disk driver to the storage devices on each I/O path; means for receiving an inquiry command response in the virtal disk driver from each storage device; means for correlating the inquiry command response with the I/O path used to send the inquiry command; and means for compiling a list of I/O paths for each storage device.
Claim 17
Dependent Claim 75 words
The apparatus of claim 13, wherein the associating means comprises: means for sending an inquiry command from the virtual disk driver to the storage device array; means for receiving inquiry data from the disk array, the inquiry data comprising a storage device array identification; means for scanning the switch table to identify a subordinate disk driver corresponding to the storage array identification; means for associating the core virtual disk driver with the subordinate disk driver.
Claim 18
Dependent Claim 15 words
The apparatus of claim 13, wherein the module comprises means for successively selecting I/O paths.
Claim 19
Dependent Claim 38 words
The apparatus of claim 13, wherein the module further comprises a means for measuring an I/O path data latency for each I/O path and selecting the I/O path for the I/O request according to the measured data latency.
Claim 20
Dependent Claim 67 words
The apparatus of claim 13, wherein a pending I/O request is defined by an I/O request for which a message indicating the I/O request is completed has not been received, and wherein the module comprises a means for determining the number of pending I/O requests for each I/O path and for selecting the I/O path for the I/O request according to the number of pending I/O requests.
Claim 21
Dependent Claim 78 words
The apparatus of claim 13, wherein a pending I/O request is defined by an I/O request for which a message indicating the I/O request is completed has not been received, and wherein the pending I/O request designates data in the storage devices of a size, and wherein the module comprises a means for selecting the I/O path for the I/O request according to the size of the data designated by the pending I/O requests on each I/O path.
Claim 22
Dependent Claim 65 words
The apparatus of claim 13, further comprising: means for receiving an I/O error message from an adapter driver coupled between the virtual disk driver and the array of storage devices, the I/O error message indicating the I/O paths with errors and an I/O path type; and means for modifying the configuration file to remove I/O paths with errors from the list of available I/O paths.
Claim 23
Dependent Claim 40 words
The apparatus of claim 20, wherein the I/O error message indicates an I/O error type, and the module further comprises a means for modifying the configuration file to remove I/O paths with errors in accordance with the I/O error type.
Claim 24
Dependent Claim 205 words
A program storage device, readable by a computer having a processor and a memory tangibly embodying one or more programs of instructions executable by the computer to perform method steps of storing and retrieving information from an array of storage devices implementing a plurality of virtual disk drives, the storage devices operatively coupled to the computer by a plurality of (I/O) paths, the method comprising the steps of: scanning the storage devices to find available I/O paths between the computer and each storage device; storing a list of the available I/O paths between the computer and each storage device in a configuration file; receiving an I/O request directed at a virtual disk memory location in a virtual disk driver; the virtual disk driver comprising a core virtual disk driver and a subordinate driver implementing storage array-specific functions; associating the core virtual disk driver with the subordinate disk driver in accordance with a switch table stored in a memory of the computer; mapping the virtual disk memory location to a corresponding storage device; selecting an I/O path for the I/O request from the list of available I/O paths in the configuration file; and transmitting the I/O request to the storage device over the selected I/O path.
Claim 25
Dependent Claim 205 words
A program storage device, readable by a computer having a processor and a memory tangibly embodying one or more programs of instructions executable by the computer to perform method steps of storing and retrieving information from an array of storage devices implementing a plurality of virtual disk drives, the storage devices operatively coupled to the computer by a plurality of (I/O) paths, the method comprising the steps of: scanning the storage devices to find available I/O paths between the computer and each storage device; storing a list of the available I/O paths between the computer and each storage device in a configuration file; receiving an I/O request directed at a virtual disk memory location in a virtual disk driver; the virtual disk driver comprising a core virtual disk driver and a subordinate driver implementing storage array-specific functions; associating the core virtual disk driver with the subordinate disk driver in accordance with a switch table stored in a memory of the computer; mapping the virtual disk memory location to a corresponding storage device; selecting an I/O path for the I/O request from the list of available I/O paths in the configuration file; and transmitting the I/O request to the storage device over the selected I/O path.
Claim 26
Dependent Claim 103 words
The program storage device of claim 22, wherein the method step of scanning the storage devices to find all available I/O paths between the computer and each storage device comprises the method steps of: transmitting an inquiry command from a virtual disk driver to the storage devices on each I/O path; receiving an inquiry command response in the virtual disk driver from each storage device, the inquiry command response comprising an identification unique to the storage device; correlating the inquiry command response with the I/O path used to send the inquiry command; and compiling a list of I/O paths for each storage device.
Claim 27
Dependent Claim 92 words
The program storage device of claim 22, wherein the method step of associating the core virtual disk driver with the subordinate disk driver in accordance with the switch table comprises the method steps of: sending an inquiry command from the virtual disk driver to the storage device array; receiving inquiry data from the disk array, the inquiry data comprising a storage device array identification; scanning the switch table to identify a subordinate disk driver corresponding to the storage array identification; and associating the core virtual disk driver with the subordinate disk driver.
Claim 28
Dependent Claim 25 words
The program storage device of claim 22, wherein the method step of selecting an I/O path comprises the method step of selecting successive I/O paths.
Claim 29
Dependent Claim 46 words
The program storage device of claim 22, wherein the method step of selecting an I/O path comprises the method steps of: measuring an I/O path data latency for each I/O path; and selecting the I/O path for the I/O request according to the measured data latency.
Claim 30
Dependent Claim 88 words
The program storage device of claim 26, wherein the method steps further comprise the step of receiving an I/O message from the storage device indicating that the I/O request is completed and wherein the method step of measuring and storing an I/O path data latency for each I/O path comprises the steps of: measuring the elapsed time between each I/O request and I/O messages from the storage device indicating that the I/O request is completed for each I/O path; and averaging the elapsed time for each I/O path.
Claim 31
Dependent Claim 75 words
The program storage device of claim 26, wherein a pending I/O request is defined by an I/O request for which a message indicating the I/O request is completed has not been received, and wherein the method step of selecting an I/O path comprises the method steps of: determining the number of pending I/O requests for each I/O path; and selecting the I/O path for the I/O request according to the number of pending I/O requests.
Claim 32
Dependent Claim 71 words
The program storage device of claim 26 wherein the method steps further comprise the steps of: receiving an I/O error message from an adapter driver coupled between the virtual disk driver and the array of storage devices, the I/O error message indicating the I/O paths with errors and an I/O path error type; and modifying the configuration file to remove I/O paths with errors from the list of available I/O paths.

References Cited (Backward Citations)

US4435755A Cited
US5119488A Cited
US5404487A Cited
US5388243A Cited
US5345565A Cited
US5428796A Cited
US5940393A Cited
US5937428A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-11-07 2004-05-08 2004-11-07 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-11-07 2008-05-08 2008-11-07 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-11-07 2012-05-08 2012-11-07 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag