Uniform routing of storage access requests through redundant array controllers
First Claim
1. A method for handling access to data storage in a storage system having a plurality of storage arrays and a plurality of input/output (I/O) devices, the storage arrays contain data in a logical volume on behalf of a server, the logical volume is formed a plurality of portions, the portions of the logical volume are contained in the storage arrays, the server sends access requests to the I/O devices for access to the logical volume, the I/O devices distribute the access requests to a plurality of array controllers configured with the storage arrays, the array controllers control access to the storage arrays and the portions of the logical volume, comprising the steps of:
- creating the logical volume with the portions thereof distributed across the storage arrays;
representing the logical volume at the server as a single volume;
representing the logical volume at the I/O devices as a plurality of data volumes corresponding to the portions distributed across storage arrays;
forming an access request at the server for access to the logical volume;
selecting a data transfer path from the server to one of the I/O devices, independently of the array controllers that have control over the portions of the logical volume;
sending the access request through the selected data transfer path to the one I/O device;
selecting at least one of the array controllers to receive the access request, independently of the selected data transfer path from the server to the one I/O device; and
sending the access request from the one I/O device to the selected array controller instructing the selected array controller to respond to the access request.
2 Assignments
0 Petitions
Accused Products
Abstract
Data storage space in a data storage system is represented to the devices that access the data (e.g. “servers”) as a single virtual storage device containing logical volumes of data, even though the storage space is typically formed from several storage devices and possibly from arrays of storage devices containing multiple volumes of data. Therefore, the servers can issue the access requests through any available transfer path from the servers to the virtual storage device. However, I/O (input/output) devices control access between the servers and the devices that control access to the data (e.g. “array controllers”), so that the access requests from the servers are uniformly routed to the preferred array controllers independently of the transfer paths through which the servers issue the access requests.
113 Citations
15 Claims
-
1. A method for handling access to data storage in a storage system having a plurality of storage arrays and a plurality of input/output (I/O) devices, the storage arrays contain data in a logical volume on behalf of a server, the logical volume is formed a plurality of portions, the portions of the logical volume are contained in the storage arrays, the server sends access requests to the I/O devices for access to the logical volume, the I/O devices distribute the access requests to a plurality of array controllers configured with the storage arrays, the array controllers control access to the storage arrays and the portions of the logical volume, comprising the steps of:
-
creating the logical volume with the portions thereof distributed across the storage arrays;
representing the logical volume at the server as a single volume;
representing the logical volume at the I/O devices as a plurality of data volumes corresponding to the portions distributed across storage arrays;
forming an access request at the server for access to the logical volume;
selecting a data transfer path from the server to one of the I/O devices, independently of the array controllers that have control over the portions of the logical volume;
sending the access request through the selected data transfer path to the one I/O device;
selecting at least one of the array controllers to receive the access request, independently of the selected data transfer path from the server to the one I/O device; and
sending the access request from the one I/O device to the selected array controller instructing the selected array controller to respond to the access request. - View Dependent Claims (2, 3)
after creating the logical volume distributed across the storage arrays, controlling each portion of the logical volume by only one of the array controllers at a time.
-
-
3. A method as defined in claim 2 comprising the further step of:
switching control over at least one of the portions of the logical volume between two of the array controllers.
-
4. A method for handling access to data storage in a storage system in which a plurality of storage arrays contain data in a logical volume on behalf of a server, the server sends access requests through a plurality of input/output (I/O) devices to a plurality of array controllers, the array controllers are configured with the storage arrays and have control over the storage arrays and the logical volume, comprising the steps of:
-
forming an access request at the server for access to the logical volume;
selecting a data transfer path from the server to one of the I/O devices independently of the array controllers that have control over the logical volume;
sending the access request through the selected data transfer path to the one I/O device;
selecting array controllers that are to receive portions of the access request, independently of the selected data transfer path from the server to the one I/O device; and
distributing the access request from the one I/O device to the selected array controllers instructing each selected array controller to respond to one of the portions of the access request. - View Dependent Claims (5, 6)
before forming the access request at the server, representing the logical volume at the server as a single volume;
representing the logical volume at the one I/O device as more than one data volume distributed across the storage arrays;
referencing the represented single volume in the access request;
after sending the access request through the selected data transfer path to the one I/O device, converting the access request into a plurality of access commands for access to the more than one data volumes distributed across the storage arrays; and
distributing the access commands from the one I/O device to the selected array controllers instructing each selected array controller to respond to one of the access commands.
-
-
6. A method as defined in claim 5 comprising the further steps of:
-
after distributing the access commands from the one I/O device to the selected array controllers, responding to the access commands by the selected array controllers accessing predetermined portions of the logical volume on the storage arrays;
sending a plurality of responses to the one I/O device from the selected array controllers;
assembling the plurality of responses into a single response at the one I/O device; and
sending the single response from the one I/O device to the server.
-
-
7. A data storage system comprising:
-
a plurality of storage arrays configured to form a logical volume, each of the storage arrays containing a portion of the logical volume, the logical volume containing data and being distributed across more than one of the storage arrays;
a plurality of array controllers configured with and connected to the storage arrays to control access to the storage arrays, each portion of the logical volume and the data, each portion of the logical volume being under control of only one of the array controllers at a time, control of each portion of the logical volume being changeable to another one of the array controllers;
a server from which access requests are sent to the array controllers through multiple transfer paths for access to the logical volume and the data contained on the logical volume, the server containing information that represents the logical volume as a single volume, the server being operative to select one of the transfer paths independently of which array controllers have control over the portions of the logical volume; and
a plurality of input/output (I/O) devices connected between the server and the array controllers and containing information that represents the logical volume as more than one data volume distributed among the plurality of storage arrays, the I/O devices being operative to receive the access requests from the server, to determine which array controllers currently have control over the portions of the logical volume on the storage array and to send the access request to the determined array controller, independently of the transfer path selected by the server.
-
-
8. A data storage system comprising:
-
a plurality of storage arrays configured to form a logical volume, each storage array containing a portion of the logical volume, the logical volume containing data;
a plurality of array controllers configured with and connected to the storage arrays to control access to the storage arrays, each portion of the logical volume and the data, each portion of the logical volume being under control of only one of the array controllers, control of each portion of the logical volume being changeable to another one of the array controllers;
a server from which access requests are sent to the array controllers through multiple transfer paths for access to the logical volume and the data contained on the logical volume, the server being operative to select one of the transfer paths independently of which array controllers have control over the portions of the logical volume; and
a plurality of input/output (I/O) devices connected to the server and the array controllers and being operative to receive the access requests from the server, to determine which array controllers currently have control over the portions of the logical volume on the storage arrays and to distribute the access requests to the determined array controllers, independently of the transfer path selected by the server, instructing each determined array controller to respond to a corresponding portion of the received access request. - View Dependent Claims (9)
the server contains information representing the logical volume as a single volume;
the I/O devices contain information representing the logical volume as more than one data volume distributed among the storage arrays;
the server is further operative to reference the single volume in the access request;
the I/O devices are further operative to generate more than one access command from the received access request and to distribute the access commands to the determined array controllers, each access command being directed to a corresponding one of the data volumes distributed among the storage arrays, the more than one access commands correspond to the portions of the received access request that instruct each determined array controller to respond;
each determined array controller includes programming under which the determined array controller is operative to respond to a corresponding one of the access commands generated from the received access request by accessing the corresponding data volume on the storage arrays and sending one of a plurality of responses to the I/O device that distributed the access commands to the determined array controllers; and
the I/O devices are further operative to assemble the plurality of responses into a single response and to send the single response to the server.
-
-
10. A data storage system, comprising:
-
a plurality of storage arrays configured for storing data in a logical volume having portions distributed among the plurality of storage arrays, wherein each storage array includes a bank of storage devices and a storage array controller configured for controlling access to the storage devices;
a communication fabric through which requests are transferred to the storage array controller of each of the storage arrays, wherein the requests are used to access the logical volume through the storage array controller of each of the storage arrays; and
a plurality of I/O modules communicatively coupled between the communication fabric and the storage array controller of each of the storage arrays and configured for receiving the requests from a host system and configured for distributing the requests to the storage array controllers such that the storage array controller of each of the storage arrays accesses a corresponding portion of the logical volume. - View Dependent Claims (11, 12, 13, 14, 15)
-
Specification