Patent ID: 8447860

Claim:
A storage server for providing access to a partitioned resource comprising: a plurality of client communication connections to at least one client device; a server communication connection to two or more other storage servers, such that the storage server and the other storage servers form a server group; a storage device for storing only a portion of the partitioned resource thereon, such that only a first portion of the partitioned resource is stored on the storage server, and such that other portions of the partitioned resource are stored on the other storage servers; a request handler, for receiving requests for access to the partitioned resource via one of the client communication connections, and determining which portions of the partitioned resource are stored on the storage device, and which portions of the partitioned resource are stored on one or more of the other storage servers in the server group, and for retrieving at least some portions of the partitioned resource from at least one of the other servers over the server communication connection; a load monitor, for: determining a local load placed on the storage server; receiving information via the server communication connections concerning a load placed on the other servers; and generating a measure of load from both the local load and the load on the other servers; and a request load distributor, responsive to the load monitor, for reallocating the first portion of the partitioned resource from the storage server to at least one of the other storage server when the measure of load indicates the storage server is over utilized; the request handler further comprising: a connection load balancer for, upon receipt of a request for access to the partitioned resource from a client data processor having multiple path input/output (MPIO) functionality, and the client providing, with the request, information concerning resource objects that use the MPIO functionality determining which servers in the server group are holding one or more parts of the requested resource; determining, of those servers, which servers have two or more available connections for providing access to the partitioned resource by the client; and returning a list of such available connections that the client device may use to obtain access to the partitioned resource, and such that all of the servers in the server group do not subsequently establish connections with the client device.