|
|
|
Query augmenting and refining (e.g., inexact access) |
Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement6260120
Abstract
A storage controller for controling access to data storage has a memory and at least one data port for a data network including host processors. The memory is programmed to define a respective specification for each host processor of a respective subset of the data storage to which access by the host processor is restricted, and each specification is associated with a host identifier stored in the memory. When the storage controller receives a data access request from a host processor, it decodes a host identifier from the data access request, and searches the memory for a host identifier matching the host identifier decoded from the request. Upon finding a match, the respective specification of the respective subset for the host processor is accessed to determine whether or not storage specified by the storage access request is contained in the respective subset. If so, then storage access can continue, and otherwise, storage access is denied. Preferably the host identifier decoded from the request is a temporary address assigned by the network, and also stored in the memory in association with each respective specification is a relatively permanent identifier for the host processor.
Claims
What is claimed is:
1. A method of operating a storage controller for controlling access to data storage, the storage controller having at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, said method comprising:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors, and
wherein the associated information identifying said each processor includes a name in addition to a temporary address assigned by the network to said each host processor, and the method includes a system administrator providing to the storage controller a request including a specified name and a specified change in the specification of the respective subset of the data storage to which access by the host processor having the name is restricted, and the storage controller responding by changing the specification of the respective subset of the data storage to which access by the host processor having the specified name is restricted.
2. A method of operating a storage controller for controlling access to data storage, the storage controller having at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, said method comprising:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors, and
wherein the associated information identifying said each host processor includes a relatively permanent identifier for said each host processor in addition to a temporary address assigned by the network to said each host processor, and wherein the method includes the storage controller responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the relatively permanent identifier of said one of the host processors, and in response receiving the relatively permanent identifier of said one of the host processors, and changing in the memory the temporary address of said one of the host processors to the new temporary address.
3. A method of operating a storage controller for controlling access to data storage, the storage controller having at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, said method comprising:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors, and
wherein the associated information identifying said each host processor includes an identifier of circuitry of said each host processor, and wherein the method includes the storage controller responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the identifier of circuitry of said one of the host processors, and in response receiving the identifier of circuitry in said one of the host processors, comparing the received identifier of circuitry in said one of the host processors with the identifier of circuitry of said one of the host processor stored in the memory, and when the received identifier of the circuitry in said one of the host processors is different from the identifier of circuitry of said one of the host processors stored in the memory, indicating an unauthorized change in circuitry of said one of the host processors unless a change in the circuitry of said one of the host processors has been authorized.
4. The method as claimed in claim 3, which includes a system administrator authorizing a change in circuitry of said one of the host processors by setting the identifier of the circuitry of said one of the host processors stored in the memory to a value indicating that a change in circuitry of said one of the host processors has been authorized.
5. A method of operating a storage controller for controlling access to data storage, the storage controller having at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, said method comprising:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access; and
which includes storing in memory locking information for controlling access to a portion of the data storage for which access is shared among the host processors, and storing in memory a respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said each host processor is restricted, and which further includes responding to the request for storage access by said one of the host processors by accessing in memory the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted does not indicate that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the locking information before accessing the specified portion of the data storage to access, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted indicates that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the specified portion of the data storage to access without first accessing the locking information.
6. A method of operating a storage controller for controlling access to data storage, the storage controller having at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, said method comprising:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage; and
which includes a system administrator providing to the storage controller a request including the relatively permanent identifier and a specified change in the specification of the respective subset of the data storage to which access by the host processor having the relatively permanent identifier is restricted, and the storage controller responding by changing the specification of the respective subset of the data storage to which access by the host processor having the specified relatively permanent identifier is restricted.
7. A method of operating a storage controller for controlling access to data storage, the storage controller having at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, said method comprising:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage; and
which includes the storage controller responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the relatively permanent identifier of said one of the host processors, and in response receiving the relatively permanent identifier of said one of the host processors, and changing in the memory the temporary address currently assigned to said one of the host processors to the new temporary address.
8. A method of operating a storage controller for controlling access to data storage, the storage controller having at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, said method comprising:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage; and
wherein the associated information identifying said each host processor includes an identifier of circuitry of said each host processor, and wherein the method includes the storage controller responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the identifier of circuitry of said one of the host processors, and in response receiving the identifier of circuitry in said one of the host processors, comparing the received identifier of circuitry in said one of the host processors with the identifier of circuitry of said one of the host processors stored in the memory, and when the received identifier of the circuitry in said one of the host processors is different from the identifier of circuitry of said one of the host processors stored in the memory, indicating an unauthorized change in circuitry of said one of the host processors unless a change in the circuitry of said one of the host processors has been authorized.
9. The method as claimed in claim 8, which includes a system administrator authorizing a change in circuitry of said one of the host processors by setting the identifier of the circuitry of said one of the host processors stored in the memory to a value indicating that a change in circuitry of said one of the host processors has been authorized.
10. A method of operating a storage controller for controlling access to data storage, the storage controller having at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, said method comprising:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage; and
which includes storing in memory locking information for controlling access to a portion of the data storage for which access is shared among the host processors, and storing in memory a respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said each host processor is restricted, and which further includes responding to the request for storage access by said one of the host processors by accessing in memory the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted does not indicate that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the locking information before accessing the specified portion of the data storage to access, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted indicates that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the specified portion of the data storage to access without first accessing the locking information.
11. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors, and
wherein the associated information identifying said each processor includes a name in addition to a temporary address assigned by the network to said each host processor, and the storage controller is programmed for receiving from a system administrator a request including a specified name and a specified change in the specification of the respective subset of the data storage to which access by the host processor having the name is restricted, and for responding by changing the specification of the respective subset of the data storage to which access by the host processor having the specified name is restricted.
12. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access:
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors, and
wherein the associated information identifying said each host processor includes a relatively permanent identifier for said each host processor in addition to a temporary address assigned by the network to said each host processor, and wherein the storage controller is programmed for responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the relatively permanent identifier of said one of the host processors, and in response receiving the relatively permanent identifier of said one of the host processors, and changing in the memory the temporary address of said one of the host processors to the new temporary address.
13. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors, and
wherein the associated information identifying said each host processor includes an identifier of circuitry of said each host processor, and wherein the storage controller is programmed for responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the identifier of circuitry of said one of the host processors, and in response receiving the identifier of circuitry in said one of the host processors, comparing the received identifier of circuitry in said one of the host processors with the identifier of circuitry of said one of the host processor stored in the memory, and when the received identifier of the circuitry in said one of the host processors is different from the identifier of circuitry of said one of the host processors stored in the memory, indicating an unauthorized change in circuitry of said one of the host processors unless a change in the circuitry of said one of the host processors has been authorized.
14. The data storage subsystem as claimed in claim 13, wherein the storage controller is programmed for responding to an authorization from a system administrator for a change in circuitry of said one of the host processors by setting the identifier of the circuitry of said one of the host processors stored in the memory to a value indicating that a change in circuitry of said one of the host processors has been authorized.
15. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the storage controller is programmed for storing in memory locking information for controlling access to a portion of the data storage for which access is shared among the host processors, and storing in memory a respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said each host processor is restricted, and for responding to the request for storage access by said one of the host processors by accessing in memory the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted does not indicate that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the locking information before accessing the specified portion of the data storage to access, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted indicates that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the specified portion of the data storage to access without first accessing the locking information.
16. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage;
wherein the storage controller is programmed for receiving from a system administrator a request including the relatively permanent identifier and a specified change in the specification of the respective subset of the data storage to which access by the host processor having the relatively permanent identifier is restricted, and for responding by changing the specification of the respective subset of the data storage to which access by the host processor having the specified relatively permanent identifier is restricted.
17. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage;
wherein the storage controller is programmed for responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the relatively permanent identifier of said one of the host processors, and in response receiving the relatively permanent identifier of said one of the host processors, and changing in the memory the temporary address currently assigned to said one of the host processors to the new temporary address.
18. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage; and
wherein the associated information identifying said each host processor includes an identifier of circuitry of said each host processor, and wherein the storage controller is programmed for responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the identifier of circuitry of said one of the host processors, and in response receiving the identifier of circuitry in said one of the host processors, comparing the received identifier of circuitry in said one of the host processors with the identifier of circuitry of said one of the host processors stored in the memory, and when the received identifier of the circuitry in said one of the host processors is different from the identifier of circuitry of said one of the host processors stored in the memory, indicating an unauthorized change in circuitry of said one of the host processors unless a change in the circuitry of said one of the host processors has been authorized.
19. The data storage subsystem as claimed in claim 18, wherein the storage controller is programmed for responding to a system administrator's authorization of a change in circuitry of said one of the host processors by setting the identifier of the circuitry of said one of the host processors stored in the memory to a value indicating that a change in circuitry of said one of the host processors has been authorized.
20. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage; and
wherein the storage controller is programmed for storing in memory locking information for controlling access to a portion of the data storage for which access is shared among the host processors, and storing in memory a respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said each host processor is restricted, and for responding to the request for storage access by said one of the host processors by accessing in memory the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted does not indicate that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the locking information before accessing the specified portion of the data storage to access, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted indicates that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the specified portion of the data storage to access without first accessing the locking information.
21. A data storage subsystem comprising, in combination:
data storage; and
a storage controller coupled to the data storage for controlling access to the data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the storage controller is programmed for:
a) storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage; and
wherein the storage controller includes a cache memory and a plurality of port adapters each having at least one data port for connecting the storage controller to a plurality of the host processors, and each of the port adapters has a respective memory for storing temporary identifiers of hosts having logged in to the port adapters in association with a specification of a respective subset of the data storage to which access through said each of the port adapters by said each of the hosts is restricted, and wherein the cache memory stores the relatively permanent identifiers of the hosts having logged into the port adapters.
22. A machine readable program storage device containing a program for execution by a storage controller to control access to data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the program is executable by the storage controller for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors; and
wherein the associated information identifying said each processor includes a name in addition to a temporary address assigned by the network to said each host processor, and the program is executable by the storage controller for receiving from a system administrator a request including a specified name and a specified change in the specification of the respective subset of the data storage to which access by the host processor having the name is restricted, and for responding by changing the specification of the respective subset of the data storage to which access by the host processor having the specified name is restricted.
23. A machine readable program storage device containing a program for execution by a storage controller to control access to data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the program is executable by the storage controller for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors; and
wherein the associated information identifying said each host processor includes a relatively permanent identifier for said each host processor in addition to a temporary address assigned by the network to said each host processor, and wherein the program is executable by the storage controller for responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the relatively permanent identifier of said one of the host processors, and in response receiving the relatively permanent identifier of said one of the host processors, and changing in the memory the temporary address of said one of the host processors to the new temporary address.
24. A machine readable program storage device containing a program for execution by a storage controller to control access to data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the program is executable by the storage controller for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the identification of said one of the host processors contained in the request includes a temporary address assigned by the network to said one of the host processors, and the associated information identifying the host processor identified by the identification decoded from the request for storage access also includes said temporary address assigned by the network to said one of the host processors; and
wherein the associated information identifying said each host processor includes an identifier of circuitry of said each host processor, and wherein the program is executable by the storage controller for responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the identifier of circuitry of said one of the host processors, and in response receiving the identifier of circuitry in said one of the host processors, comparing the received identifier of circuitry in said one of the host processors with the identifier of circuitry of said one of the host processor stored in the memory, and when the received identifier of the circuitry in said one of the host processors is different from the identifier of circuitry of said one of the host processors stored in the memory, indicating an unauthorized change in circuitry of said one of the host processors unless a change in the circuitry of said one of the host processors has been authorized.
25. The machine readable program storage device as claimed in claim 24, wherein the program is executable by the storage controller for responding to an authorization from a system administrator for a change in circuitry of said one of the host processors by setting the identifier of the circuitry of said one of the host processors stored in the memory to a value indicating that a change in circuitry of said one of the host processors has been authorized.
26. A machine readable program storage device containing a program for execution by a storage controller to control access to data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the program is executable by the storage controller for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing in the memory associated information identifying said each host processor in association with the respective specification for said each host processor;
b) receiving at the data port a request for storage access from one of the host processors, the request from said one of the host processors containing an identification of said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by:
(i) decoding from the request for storage access the identification of said one of the host processors contained in the request for storage access;
(ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and
(iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access;
wherein the storage controller is programmed for storing in memory locking information for controlling access to a portion of the data storage for which access is shared among the host processors, and storing in memory a respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said each host processor is restricted, and for responding to the request for storage access by said one of the host processors by accessing in memory the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted does not indicate that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the locking information before accessing the specified portion of the data storage to access, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted indicates that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the specified portion of the data storage to access without first accessing the locking information.
27. A machine readable program storage device containing a program for execution by a storage controller to control access to data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the program is executable by the storage controller for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage;
wherein the program is executable by the storage controller for receiving from a system administrator a request including the relatively permanent identifier and a specified change in the specification of the respective subset of the data storage to which access by the host processor having the relatively permanent identifier is restricted, and for responding by changing the specification of the respective subset of the data storage to which access by the host processor having the specified relatively permanent identifier is restricted.
28. A machine readable program storage device containing a program for execution by a storage controller to control access to data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the program is executable by the storage controller for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage;
wherein the program is executable by the storage controller for responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the relatively permanent identifier of said one of the host processors, and in response receiving the relatively permanent identifier of said one of the host processors, and changing in the memory the temporary address currently assigned to said one of the host processors to the new temporary address.
29. A machine readable program storage device containing a program for execution by a storage controller to control access to data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the program is executable by the storage controller for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage;
wherein the associated information identifying said each host processor includes an identifier of circuitry of said each host processor, and wherein the program is executable by the storage controller for responding to a new temporary address being assigned to said one of the host processors by sending a request to the new temporary address for the identifier of circuitry of said one of the host processors, and in response receiving the identifier of circuitry in said one of the host processors, comparing the received identifier of circuitry in said one of the host processors with the identifier of circuitry of said one of the host processors stored in the memory, and when the received identifier of the circuitry in said one of the host processors is different from the identifier of circuitry of said one of the host processors stored in the memory, indicating an unauthorized change in circuitry of said one of the host processors unless a change in the circuitry of said one of the host processors has been authorized.
30. The machine readable program storage device as claimed in claim 29, wherein the program is executable by the storage controller for responding to a system administrator's authorization of a change in circuitry of said one of the host processors by setting the identifier of the circuitry of said one of the host processors stored in the memory to a value indicating that a change in circuitry of said one of the host processors has been authorized.
31. A machine readable program storage device containing a program for execution by a storage controller to control access to data storage, the storage controller having memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network, wherein the program is executable by the storage controller for:
a) storing in the memory a respective specification for each host processor of a respective subset of the data storage to which access by said each host processor is restricted, and storing associated information identifying said each host processor in association with the respective specification for said each processor, wherein the data network assigns at least one temporary address to said each host processor, and said each host processor also has a relatively permanent identifier, and the identification of said each host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to said each host processor; and
b) receiving at the data port a request for storage access from one of host processors, the request from said one of the host processors containing a temporary address currently assigned to said one of the host processors and a specification of a portion of the data storage to access, and the storage controller responding to the request for storage access by decoding from the request for storage access the temporary address currently assigned to said one of the host processors contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, and when the specified portion of the data storage to access is determined to be contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access, accessing the specified portion of the data storage;
wherein the program is executable by the storage controller for storing in memory locking information for controlling access to a portion of the data storage for which access is shared among the host processors, and storing in memory a respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said each host processor is restricted, and for responding to the request for storage access by said one of the host processors by accessing in memory the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted does not indicate that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the locking information before accessing the specified portion of the data storage to access, and when the respective indication of whether or not only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted indicates that only private storage is included in the respective subset of the data storage to which access by said one of the host processors is restricted, then accessing the specified portion of the data storage to access without first accessing the locking information.
Description
BACKGROUND OF THE INVENTION
1. Technical Field
The present invention relates generally to data processing networks and data storage subsystems, and more particularly to a data processing network in which a large number of hosts can access volumes of data storage in a data storage subsystem.
2. Description of the Related Art
Due to advances in computer technology, there has been an ever increasing need for data storage in data processing networks. In a typical data processing network, there has been an increase in the number of volumes of data storage and an increase in the number of hosts needing access to the volumes. This has been especially true for networks of workstations. Not only have a greater number of workstations been added to the typical network, but also the increase in data processing capabilities of a typical workstation has required more data storage per workstation for enhanced graphics and video applications.
The increased demand for data storage in a network is typically met by using more storage servers in the network or by using storage servers of increased storage capacity and data transmission bandwidth. From the standpoint of cost of storage, either of these solutions appears to be satisfactory. However, a greater number of storage servers in a network substantially increases the cost of managing the storage. This increased cost of management often appears some time after installation, when one of the servers reaches its capacity and some of its volumes must be reassigned to less heavily loaded servers. Network administrators aware of the cost of storage management realize that network storage should be consolidated to the minimum possible number of servers. The management problem is reduced by reducing the number of objects to be managed.
Due to the storage needs of present networks and the desire to consolidate servers, it is practical to provide a single storage subsystem with up to 20 terabytes (TB) storage, or approximately 4000 logical volumes. It may be possible for any host to have access to any volume in a data storage subsystem to which the host has access. However, it may be desirable to restrict the set of volumes that can be seen by any one host. Restricted access is desirable for security of private data. For example, private volumes should be assigned to each host for storage of private data, and other hosts should not be permitted to see or modify the private volumes of other hosts. Moreover, the "boot" process for a host is slowed down by searching for and reporting all the volumes to which the host has access. Certain operating systems are limited by the number of storage devices that they can manage at a given period of time, and for a host running such an operating system, it is not only desirable but also necessary to limit the number of volumes that the host can access.
It is possible to restrict access of a host to a limited set of logical volumes in the data storage subsystem by restricting the set of logical volumes accessible through a particular port adapter of the storage subsystem and linking the host to only that particular port adapter. For convenience, however, there should not be any restrictions on which logical storage volumes are accessible from each port adapter. Otherwise, during a reconfiguration of the data processing system, it may be necessary to physically switch the links that are connected to the network ports of the hosts or the port adapters, for example by manually disconnecting and reconnecting the links to the ports. Even in the case where the data network has a fabric for automatically establishing a link between any of the hosts and any of the port adapters, the physical possibility of any port adapter to access any logical storage volume provides alternative data paths that could be used in case of port adapter failure or port adapter congestion. For example, if a host sends a data access request to a port adapter and receives a busy response from the port adapter, then the host can send the data access request to another port adapter. Port adapter congestion is likely, for example, if the storage subsystem is a continuous media server, in which video data is often streamed through a single port adapter to a host for a relatively long period of time.
In open network systems, it is known to use authentication and authorization protocols in order to authenticate that a request for access to a specified file originates from a particular host, and once the request for access is authenticated, to check whether the host is authorized to access the specified file. For example, a network server authenticates the request by checking whether a password in the request matches the hosts' password stored in a client directory, and the network server authorizes the request by checking a file directory to determine whether the host is listed in the file directory as having access rights to the specified file. However, the use of high-level authentication and authorization procedures for discriminating among all access requests by the hosts to the logical storage volumes would unduly burden the host and the storage subsystem. What is desired is a method that may be transparent to any high-level file system procedures that may be used by the hosts for managing access to files stored in the logical volumes to which a host is permitted to access. The method should restrict the logical storage volumes seen by the host during a boot operation, and seen by the operating system when the operating system determines what logical volumes are accessible to the host.
SUMMARY OF THE INVENTION
In accordance with one aspect of the invention, there is provided a method of operating a storage controller for controlling access to data storage. The storage controller has at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network. The method includes storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by the host processor is restricted, and storing associated information identifying each host processor in association with the respective specification for the host processor. The method further includes receiving at the data port a request for storage access from one of the host processors. The request from the host processor contains an identification of the host processor and a specification of a portion of the data storage to access. The storage controller responds to the request for storage access by: (i) decoding from the request for storage access the identification of the host processor contained in the request for storage access; (ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and (iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and (iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access.
In accordance with another aspect, the invention provides a method of operating a storage controller for controlling access to data storage. The storage controller has at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network. The method includes storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by the host processor is restricted, and storing associated information identifying the host processor in association with the respective specification for the host processor. The data network assigns temporary addresses to each host processor, and each host processor also has a relatively permanent identifier. The identification of the host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to the host processor. The method further includes receiving at the data port a request for storage access from one of the host processors. The request for storage access from one of the host processors contains the temporary address of the host processor and a specification of a portion of the data storage to access. The storage controller responds to the request for storage access by decoding from the request for storage access the temporary address of the host processor contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access. When the specified portion of the data storage to access is determined to be contained in the respective subset, the specified portion of the data storage is accessed.
In accordance with yet another aspect, the invention provides a data storage subsystem including data storage; and a storage controller coupled to the data storage for controlling access to the data storage. The storage controller has a memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network. The storage controller is programmed for storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by the host processor is restricted, and storing associated information identifying each host processor in association with the respective specification for the host processor. The storage controller is further programmed for receiving at the data port a request for storage access from one of the host processors. The request from the host processor contains an identification of the host processor and a specification of a portion of the data storage to access. The storage controller is programmed for responding to the request for storage access by: (i) decoding from the request for storage access the identification of the host processor contained in the request for storage access; (ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and (iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and (iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access.
In accordance with another aspect, the invention provides a data storage subsystem including data storage; and a storage controller coupled to the data storage for controlling access to the data storage. The storage controller has a memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network. The storage controller is programmed for storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by the host processor is restricted, and storing associated information identifying the host processor in association with the respective specification for the host processor. The data network assigns temporary addresses to each host processor, and each host processor also has a relatively permanent identifier. The identification of the host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to the host processor. The storage controller is further programmed for receiving at the data port a request for storage access from one of the host processors. The request for storage access from the host processor contains the temporary address of the host processor and a specification of a portion of the data storage to access. The storage controller is programmed for responding to the request for storage access by decoding from the request for storage access the temporary address of the host processor contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access. When the specified portion of the data storage to access is determined to be contained in the respective subset, the specified portion of the data storage is accessed.
In accordance with still another aspect, the invention provides a machine readable program storage device for execution by a storage controller to control access to data storage. The storage controller has a memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network. The program is executable by the storage controller for storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by the host processor is restricted, and for storing associated information identifying each host processor in association with the respective specification for the host processor. The program is further executable by the storage controller for receiving at the data port a request for storage access from one of the host processors. The request from the host processor contains an identification of the host processor and a specification of a portion of the data storage to access. The program is executable by the storage controller for responding to the request for storage access by: (i) decoding from the request for storage access the identification of the host processor contained in the request for storage access; (ii) searching the memory to find associated information identifying the host processor identified by the identification decoded from the request for storage access, and (iii) upon finding associated information identifying the host processor identified by the identification decoded from the request for storage access, accessing in the memory the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, in order to determine whether or not the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access, and (iv) accessing the specified portion of the data storage upon finding that the portion of the data storage specified by the request for storage access is contained in the respective subset of the data storage specified by the respective specification which is associated with the associated information identifying the host processor identified by the identification decoded from the request for storage access.
In accordance with a final aspect, the invention provides a machine readable program storage device for execution by a storage controller to control access to data storage. The storage controller has a memory and at least one data port for connecting the storage controller into a data network for data transmission between the data storage and host processors in the data network. The program is executable by the storage controller for storing in memory a respective specification for each host processor of a respective subset of the data storage to which access by the host processor is restricted, and storing associated information identifying the host processor in association with the respective specification for the host processor. The data network assigns temporary addresses to each host processor, and each host processor also has a relatively permanent identifier. The identification of the host processor stored in memory includes the relatively permanent identifier and any temporary address currently assigned to the host processor. The program is further executable by the storage controller for receiving at the data port a request for storage access from one of the host processors. The request for storage access from the host processor contains the temporary address of the host processor and a specification of a portion of the data storage to access. The program is executable by the storage controller for responding to the request for storage access by decoding from the request for storage access the temporary address of the host processor contained in the request for storage access, and using the temporary address decoded from the request for storage access in order to access the memory to determine whether or not the specified portion of the data storage to access is contained in the respective subset of the data storage to which access is permitted by the host processor having the temporary address decoded from the request for storage access. When the specified portion of the data storage to access is determined to be contained in the respective subset, the specified portion of the data storage is accessed.
BRIEF DESCRIPTION OF THE DRAWINGS
Other objects and advantages of the invention will become apparent upon reading the following detailed description with reference to the accompanying drawings wherein:
FIG. 1 is a block diagram of a data processing system including a cached storage subsystem linked by a data network to a multiplicity of host processors;
FIG. 2 is a block diagram of the data processing system of FIG. 1 further showing a typical fault-tolerant implementation for the data network;
FIG. 3 is a generalized block diagram of a node linked to the data network of FIG. 1;
FIG. 4 is a block diagram of the data processing system of FIG. 1 showing a port adapter in the cached storage subsystem using a volume access table for assignment of logical storage volumes to respective host controller ports;
FIG. 5 is a diagram showing a simplified construction that could be used for the volume access table introduced in FIG. 4;
FIG. 6 is a diagram of a volume list entry defining a vector of logical storage volumes in a disk spread;
FIG. 7 is a block diagram of the cached storage subsystem showing further data structures used with the volume access table stored in port adapter memory;
FIG. 8 is a diagram showing a preferred construction for a volume access table stored in the cache memory as introduced in FIG. 7;
FIG. 9 is a diagram showing a preferred construction for the volume access table stored in port adapter memory;
FIG. 10 is a diagram of a directory for searching the volume table of FIG. 9;
FIG. 11 is a flowchart of a microcode routine executed by a port adapter of the cached storage subsystem of FIG. 1 when using the volume access table of FIG. 5 or FIG. 9 in response to a "Report LUNs" or access request by a host processor;
FIG. 12 is a flowchart of a microcode routine executed by a port adapter of the cached storage subsystem of FIG. 1 when converting the vector representation of FIG. 6 to a list of logical storage volume numbers;
FIG. 13 is a flowchart of a microcode routine executed by a port adapter of the cached storage subsystem of FIG. 1 when determining whether a specified logical storage volume is included in a disk spread defined by the vector representation of FIG. 6;
FIG. 14 is a graphical display of disk spreads in a two-dimensional volume space;
FIG. 15 is a graphical display of disk spreads in a three-dimensional volume space;
FIG. 16 is a flowchart of a microcode routine executed by a port adapter of the cached storage subsystem of FIG. 1 for volume configuration when installing the storage subsystem into the data processing system of FIG. 1;
FIG. 17 is a flowchart of a microcode routine executed by a port adapter of the cached storage subsystem of FIG. 1 when notified of a network state change such as a host controller boot;
FIG. 18 is a flowchart of a procedure performed by a system administrator during host controller replacement;
FIG. 19 is a diagram of a volume list that comprises a mapping table for mapping logical unit numbers (LUNs) to logical storage volume numbers;
FIG. 20 is a diagram of a volume list that comprises a mapping table for mapping ranges of LUNs to vectors of logical storage volume numbers;
FIG. 21 is a schematic diagram of the data processing system of FIG. 1 showing one of the port adapters programmed to provide virtual ports for access to respective groups of logical storage volumes;
FIG. 22 is a schematic diagram of a data processing system in which port adapters are programmed to permit a host to access the same virtual ports through the physical ports of more than one of the port adapters.
FIG. 23 is block diagram of data structures of volume access and mapping information stored in memory of port adapters of the storage subsystem of FIG. 21 or FIG. 22;
FIG. 24 is a diagram of a virtual port host table included in the volume access and mapping information of FIG. 23;
FIG. 25 is a diagram of a virtual port mapping table included in the volume access and mapping information of FIG. 23;
FIG. 26 is a flow chart of a routine performed by a port adapter when reporting the virtual ports accessible to a host controller port;
FIG. 27 is a first sheet of a flow chart of a routine performed by a port adapter when responding to a volume access request or "Report LUNs" request from a host;
FIG. 28 is a second sheet of the flow chart begun in FIG. 27;
FIG. 29 is a diagram of a display generated by a graphical user interface to show a mapping relationship between logical volumes, storage adapter ports, and LUNs at a virtual port;
FIG. 30 is a diagram of a display generated by a graphical user interface to establish a mapping between volumes accessible at a virtual port for a host and the LUNs at the virtual port;
FIG. 31 is a block diagram of a semiconductor integrated circuit chip capable of authenticating itself in a secure fashion;
FIG. 32 is a block diagram showing semiconductor integrated circuit chips in accordance with FIG. 31 being used in the data processing system of FIG. 1 to permit a port adapter to authenticate the identity of host controllers;
FIG. 33 is a flowchart of a "challenge-response" procedure used by the port adapter and host controllers of FIG. 32 to permit the port adapter to authenticate the identity of a host controller;
FIG. 34 is a block diagram showing components of a Fibre Channel Frame;
FIG. 35 is a first sheet of a flowchart of a procedure used by the port adapter and host controllers of FIG. 32 to permit the port adapter to authenticate each message from a host controller;
FIG. 36 is a second sheet of the flowchart begun in FIG. 35;
FIG. 37 is a block diagram of a storage network configuration especially suited for up to 800 workstations;
FIG. 38 is a block diagram of a storage network configuration especially suited for up to 3300 workstations;
FIG. 39 is a block diagram of a storage area network providing fault tolerance and failover capability for hosts and storage subsystems in the network; and
FIG. 40 is a block diagram of a storage area network similar to that shown in FIG. 39 but including additional network loops for higher throughput.
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof have been shown in the drawings and will be described in detail. It should be understood, however, that it is not intended to limit the invention to the particular forms shown, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the scope of the invention as defined by the appended claims.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
With reference to FIG. 1 of the drawings, there is shown a cached storage subsystem 20 connected via a data network 21 to a plurality of hosts 22, 23, 24, 25. The cached storage subsystem 20 includes storage volumes 26 and a storage controller 27 for controlling access of the hosts to the storage volumes. The storage volumes are logical units of storage distributed over one more storage devices 28, 29, 30, and 31. The storage devices are magnetic disk drives, optical disk drives, tape drives, solid-state memory devices, or other storage devices capable of providing nonvolatile data storage. Presently the preferred storage devices are magnetic disk drives each having a storage capacity of at least 46 gigabytes.
The storage controller 27 includes a dual port cache memory 32, a plurality of port adapters 35, 36, and a plurality of storage adapters 37, 38. The cache memory 32 is accessed via any one of two back-plane busses 33, 34. Each of the port adapters 35, 36 link the data network 21 to each of the two back-plane busses 33, 34. Each of the storage adapters 37, 38 links a respective set of the storage devices 28, 29, 30, 31 to each of the two back-plane busses 33, 34. For example, the cached storage subsystem includes up to eight storage adapters and up to eight port adapters, and each port adapter provides two independent data ports to the data network.
When a port adapter 35 or 36 receives a storage access request from one of the hosts 22, 23, 24, 25, the port adapter accesses a directory in the cache memory 32 to determine whether or not the data to be accessed resides in the cache memory. If the data to be accessed resides in the cache memory, then the port adapter accesses the data in the cache memory. If the data to be accessed does not reside in the cache memory, then the port adapter forwards a storage access request to the storage adapters 37, 38. One of the storage adapters 37, 38 responds to the storage access request by performing a logical-to-physical translation to determine where the data to be accessed resides on the storage devices, and reads the data from the storage devices and writes the data to the cache memory, for access by the port adapter. The storage adapters 37, 38 also perform a write-back operation to ensure that that data written to the cache memory 32 by the port adapters eventually becomes written to the storage volumes 26.
The cache memory 32 ensures that data frequently accessed by the hosts is likely to be found in cache in order to avoid the data access time of the storage devices and in order to minimize loading on the storage adapters and the port adapters. Consolidation of network storage into a large cached storage subsystem provides a benefit that cache resources are consolidated into one large cache, which is more efficient than a number of smaller caches having in total the same cache memory capacity. A large cache is more likely to contain the most recently accessed data than the combined cache memory of the smaller caches.
The storage subsystem 20 is constructed for high data availability so that a single high-capacity storage subsystem is at least as fault-tolerant as a local collection of conventional network storage servers. Fault tolerance is ensured by dual, redundant components and busses in the path from any one of the port adapters 35, 36 to any one of the storage devices 28, 29, 30, and 31. Mirroring or RAID (redundant array of inexpensive disks) techniques ensure that the storage adapters 37, 38 can recover data in the event of failure of any one of the storage devices. In a similar fashion, the data network 21 can be made fault tolerant by ensuring that each of the hosts 22, 23, 24, 25 has independent paths through the data network 21 to each of two of the port adapters 35, 36, as will be further described below with reference to FIG. 2.
In a preferred form of construction, the cache memory 32 is composed of dynamic RAM memory cards mounted in a card-cage or main-frame, and the port adapters and storage adapters are programmed micro-processor cards that are also mounted in the card-cage or main-frame. Each port adapter 35, 36 has one or more processors for handling the communication protocol of the data network 21 and communicating with the cache memory busses 33, 34. Each storage adapter 37, 38 has one or more processors for handling the communication protocol of the storage devices and for communicating with the cache memory busses 33, 34. For example, the links between the storage adapters 37 and the storage devices 28, 29, 30, and 31 are FWD (fast, wide, differential) SCSI or Fibre Channel fiber-optic loops. The port adapters 35, 36 can be programmed to communicate with the network via any number of communication and/or network protocols, such as Bus and Tag CKD, ESCON, SCSI, Ethernet, FDDI, ATM, DS1, DS3, T3, TCP, UDP, NFS, SNMP, and Fibre Channel. Further details regarding the preferred construction and operation of the cached storage subsystem 20 are disclosed in Yanai et al., U.S. Pat. No. 5,206,939, issued Apr. 27, 1993; Yanai et al. U.S. Pat. No. 5,335,352, issued Aug. 2, 1994; and Yanai et al. U.S. Pat. No. 5,381,539, issued Jan. 10, 1995; all incorporated herein by reference.
Referring to FIG. 2, there is shown a fault-tolerant way of connecting a large number of hosts 22, 23, 24, 25 to the cached storage subsystem 20. In this example, the data network 21 includes a respective loop 41, 42, 43, 44 connected to each port of the port adapters 35, 36, and each host has at least two ports, each of which is connected to a respective loop connected to the port of a different one of the port adapters. Therefore, if there is a single failure of any one of the loops or a single failure of any one of the port adapters, there will still be an operational path from each host to the internal back-plane busses (33, 34 in FIG. 1) in the cached disk storage subsystem. The loops 41, 42, 43, 44, for example, operate in accordance with the Ethernet or Fibre Channel standards. Each loop could connect up to fifty hosts, for a total of 400 hosts connected via dual-redundant paths from eight port adapters. For workstation hosts where dual-redundant paths would not be needed, only one port of each workstation could be connected to the network 21, so that up to 800 workstations could be connected to the storage subsystem by connecting this single port of each workstation to only one of sixteen loops, as will be further described below with reference to FIG. 37.
It is possible to replace each of the loops 41-44 in FIG. 2 with a switch, or to use switches together with loops for connecting hosts to the storage subsystem, as will be further described below with reference to FIG. 38. In general, for a given number of ports, a loop will be less expensive that a switch, but a switch may provide more bandwidth that a loop. The additional bandwidth of a switch may be needed for ensuring concurrent host access to the storage subsystem or for supporting bandwidth-intensive applications such as interactive video applications.
In general, the data network 21 of FIG. 1 could have various topologies and simultaneously use a number of different communication protocols. For example, the data network 31 could connect ports of various devices by dedicated port-to-port connections (i.e., so-called point-to-point connections), loops, or switches, or combinations of these connections. In addition to switches, the data network 21 could include other connectivity devices such as hubs, bridges and routers. The data network 31 could include additional processors or computers for buffering or streaming data from the cached storage subsystem to hosts or to archival storage such as a tape library. For example, the use of a cached storage subsystem in connection with stream servers, a tape library, and an ATM switch, for continuous-media isochronous data access, and on-line backup storage, is described in Vishlitzky et al., U.S. Pat. No. 5,737,747 issued Apr. 7, 1998.
The data network 21 could also include one or more additional cached storage subsystems, preferably at different geographical locations, to provide redundancy and protection from a catastrophic failure of the cached storage subsystem 20, as will be further described below with reference to FIGS. 39 and 40. The cached storage subsystems could be linked for automatic remote mirroring of data to provide recovery from a disaster, as described in Yanai et al., U.S. Pat. No. 5,544,347 issued Aug. 6, 1996, incorporated herein by reference, and in Yan |