Accelerating internet small computer system interface (iSCSI) proxy input/output (I/O)
First Claim
1. A method for accelerating proxy Input/Output (proxy I/O), comprising:
- receiving a command at a primary target storage system included in a plurality of storage systems of a target-based block storage cluster, the primary target storage system comprising a CPU, a first I/O controller communicatively coupled to an initiator system, and a second I/O controller communicatively coupled to a proxy target storage system, the command being transmitted by the initiator system to the primary target storage system via a storage area network, the command including a request for data;
forwarding the command to a session layer of the primary target storage system;
when a virtualization layer of the primary target storage system determines that a portion of the data requested in the data request is not stored by the primary target storage system, but is stored by the proxy target storage system included in the plurality of storage systems, the proxy target storage system comprising a CPU and an I/O controller for the proxy target storage system, providing a proxyIO request to a proxy initiator of the primary target storage system;
based on the proxyIO request, generating a proxyDataIn request and providing the proxyDataIn request from the session layer of the primary target storage system to the second I/O controller;
based on the proxyDataIn request, creating a command context via the second I/O controller, said command context being indexed by proxy task ID;
requesting said portion of the data from the proxy target storage system; and
providing, to the initiator system, a received response to the requesting, wherein the providing includes routing the response from the second I/O controller to the first I/O controller by a connection layer command.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention is a method for accelerating proxy Input/Output (proxy I/O). The method includes the step of receiving a command at a primary target storage system. The primary target storage system may be part of a clustered storage array. The command may be a command which was transmitted by an initiator system via a storage area network, and may include a request for data. The method further includes the step of forwarding the command to a session layer of the primary target storage system. Further, when a virtualization layer of the primary target storage system determines that a portion of the data requested in the data request is not stored by the primary target storage system, but is stored by a proxy target storage system included in the plurality of storage systems, the method further includes providing a proxyIO request to a proxy initiator of the primary target storage system. Further, the method may further include, based on the proxyIO request, generating a proxyDataIn request and providing the proxyDataIn request to an I/O controller for the primary target storage system.
48 Citations
20 Claims
-
1. A method for accelerating proxy Input/Output (proxy I/O), comprising:
-
receiving a command at a primary target storage system included in a plurality of storage systems of a target-based block storage cluster, the primary target storage system comprising a CPU, a first I/O controller communicatively coupled to an initiator system, and a second I/O controller communicatively coupled to a proxy target storage system, the command being transmitted by the initiator system to the primary target storage system via a storage area network, the command including a request for data; forwarding the command to a session layer of the primary target storage system; when a virtualization layer of the primary target storage system determines that a portion of the data requested in the data request is not stored by the primary target storage system, but is stored by the proxy target storage system included in the plurality of storage systems, the proxy target storage system comprising a CPU and an I/O controller for the proxy target storage system, providing a proxyIO request to a proxy initiator of the primary target storage system; based on the proxyIO request, generating a proxyDataIn request and providing the proxyDataIn request from the session layer of the primary target storage system to the second I/O controller; based on the proxyDataIn request, creating a command context via the second I/O controller, said command context being indexed by proxy task ID; requesting said portion of the data from the proxy target storage system; and providing, to the initiator system, a received response to the requesting, wherein the providing includes routing the response from the second I/O controller to the first I/O controller by a connection layer command. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20)
-
-
18. A non-transitory computer-readable medium having computer-executable instructions for performing a method for accelerating proxy Input/Output (proxy I/O), said method comprising:
-
receiving a command at a primary target storage system included in a plurality of storage systems of a target-based block storage cluster, the primary target storage system comprising a CPU, a first I/O controller communicatively coupled to an initiator system, and a second I/O controller communicatively coupled to a proxy target storage system, the command being transmitted by the initiator system to the primary target storage system via a storage area network, the command including a request for data; forwarding the command to a session layer of the primary target storage system; when a virtualization layer of the primary target storage system determines that a portion of the data requested in the data request is not stored by the primary target storage system, but is stored by the proxy target storage system included in the plurality of storage systems, the proxy target storage system comprising a CPU and an I/O controller for the proxy target storage system, providing a proxyIO request to a proxy initiator of the primary target storage system; based on the proxyIO request, generating a proxyDataIn request and providing the proxyDataIn request from the session layer of the primary target storage system to the second I/O controller; based on the proxyDataIn request, creating a command context via the second I/O controller, said command context being indexed by proxy task ID; requesting said portion of the data from the proxy target storage system; and providing, to the initiator system, a received response to the requesting, wherein the providing includes routing the response from the second I/O controller to the first I/O controller by a connection layer command.
-
-
19. A storage system of a target-based block storage cluster communicatively coupled to an initiator system and to a target storage system, the storage system comprising:
-
a first input/output (I/O) controller communicatively coupled to the initiator system via a storage area network and operable to communicate with the initiator using at least an iSCSI protocol; a first processor associated with the first I/O controller; a second input/output (I/O) controller communicatively coupled to the target storage system and operable to communicate with the target storage system using at least an iSCSI protocol; and a second processor associated with the second I/O controller, wherein the storage system is operable to, upon determining that a first request received from the initiator system involves data stored by the target storage system; provide, to the second I/O controller, information identifying a session between the initiator system and the first I/O controller; create, by the second I/O controller, a second request for the data stored by the target storage system; create, by the second I/O controller, a command context relating the second request to the session; and forward a response to the second request received from the target storage system to the initiator system by modifying the response according to the command context, providing the modified response from the second I/O controller to the first I/O controller via a connection layer command, and providing the modified response from the first I/O controller to the initiator system via the session.
-
Specification