The present invention relates generally to storage area networks (SANs), and more particularly to the exchanging of data between independent storage networks connected in the SANs.
The rapid growth in data intensive applications continues to fuel the demand for raw data storage capacity. As a result, there is an ongoing need to add more storage, file servers, and storage services to an increasing number of users. To meet this growing demand, the concept of a storage area network (SAN) was introduced. A SAN is defined as a network having a primary purpose of transferring data between computer systems and storage devices. In a SAN environment, storage devices and servers are generally interconnected via various switches and appliances. This structure generally allows for any server on the SAN to communicate with any storage device and vice versa. It also provides alternative paths from a server to a storage device to ensure that the system is fault tolerant.
To increase the utilizations of SANs, extend the scalability of storage devices, and increase the availability of data, the concept of storage virtualization was recently developed. Storage virtualization offers the ability to isolate a host from changes in the physical placement of storage. The result is a substantial reduction in support effort and end-user impact.
A SAN enabling storage virtualization operation typically includes one or more virtualization switches. A virtualization switch is connected to a plurality of hosts through a network, such as a local area network (LAN) or a wide area network (WAN). The connections formed between the hosts and the virtualization switches can utilize any protocol including, but not limited to, Gigabit Ethernet carrying packets in accordance with the internet small computer systems interface (iSCSI) protocol, Infiniband protocol, and others. A virtualization switch is further connected to a plurality of storage devices through a storage connection, such as Fiber Channel (FC), parallel SCSI (pSCSI), iSCSI, and the likes. A storage device is addressable using a logical unit number (LUN). LUNs are used to identify a virtual volume that is presented by a storage subsystem or network device and specified in a SCSI command and as configured by a user (e.g., a system administrator).
iSCSI allows the execution of SCSI data requests, date transmission and data reception, over internet protocol (IP) network. iSCSI is based on the existing SCSI standards currently used for communication among servers and their attached storage devices.
In a SAN having more than one virtualization switch, storage devices that are connected to a virtualization switch are considered as an independent storage network, i.e., a storage device cannot be connected to two different virtualization switches. The connectivity limitation results from the number of interfaces of each virtualization switch as well as bandwidth limitation. Thus, a host cannot read or write data from two different storage networks in one pass. This significantly limits the performance of the SAN.
Therefore, it would be advantageous to provide a method that allows the exchange of data between independent storage networks connected to independent virtualization switches. It would be further advantageous if the provided method operates without transferring data between the virtualization switches connected to those storage networks.
The present invention discloses a method for sharing data between independent clusters of virtualization switches. The method allows an initiator host to read data directly through a single virtualization switch without transferring data between independent virtualization switches.
Referring to
Other topologies of SAN 200 may be recognized by a person skilled in the art. For example, virtualization switches 210, connected to LANs, may be geographically distributed. As for another example, virtualization switches 210 may be connected to a storage network through an IP-SAN or FC-SAN.
Each virtualization switch 210 includes a mapping table that allows data sharing among independent storage networks 240. The mapping table includes mapping information specifying virtualization address spaces accessed by each virtualization switch 210 connected in SAN 200. The mapping information allows hosts 220 request for data, transmission and reception from storage networks 240-1 through 240-M via a single virtualization switch 210. Moreover, the mapping information allows host 220 to treat all storage devices 245, connected in SAN, as a single storage network 240. The content of the mapping table is preconfigured and updated automatically.
Referring to
If host 320 initiates a request to read the entire content of virtual volume 390, then a read SCSI command is sent to virtualization switch 330. The read SCSI command includes the LUN (i.e., the logical number of LU 390), an initiator tag, and the expected data to be transferred. Subsequently, virtualization switch 330 parses the command and retrieves the data resided in LU 360 i.e., data resided in the virtual address space 0-500. To retrieve the data stored in LU 370, virtualization switch 330 searches in the mapping table for a virtualization switch that has access to LU 370, i.e., virtualization switch 340. Virtualization switch 340 retrieves the data from LU 370 and transfers the retrieved data to host 320. The data transmission must be transparent to the initiator host 320, That is, host 320 should not actualize that part of the data was transferred from LU 370 via virtualization switch 340. If this requirement is not served, then the operation may fail.
A straightforward approach is to transfer the data through virtualization switch 330. This approach takes the following steps:
This approach is inefficient, since significant latency is added when data travels through two virtualization switches.
In one embodiment the disclosed invention provides an efficient method for data transmissions without transferring data between independent virtualization switches, i.e., between independent switches 330 and 340. In this embodiment a first virtualization switch (e.g., virtualization switch 330) provides a second virtualization switch (e.g., virtualization switch 340) with the list of headers to be included in the transmitted packets. The second virtualization switch, retrieves the data from the designated LUs, reconstructs data packets, i.e., adds the data to the headers and sends the data packets directly to the initiator host.
Referring to
At step S545, a virtualization switch 210-j, found in the AVSL, retrieves the requited data blocks from the target LU. At step S550, for each data block a corresponding group of headers in the HDS, for example, one of headers 600-1 through 600-n, is added.
It should be noted that if data has to be read through multiple virtualization switches in the AVSL, the target virtualization switch 210-i sends a request to prepare the required data to each of those virtualization switches simultaneously. However, the target virtualization switch 210-i instructs (by sending the sequence numbers) each time a single virtualization switch in the AVSL to send the data to the initiator host. Once the entire requested data was read, a response command is sent to the initiator host. In the response command the target virtualization switch returns the final status of the operation including any errors if such have occurred.
Referring to
At step S710, a target virtualization switch 210-i receives a SCSI WRITE command sent from an initiator host (e.g., one of hosts 220). A target virtualization switch is defined as the virtualization switch that receives the incoming SCSI command. The target virtualization switch 210-i parses the incoming SCSI command to determine the type of the command, the validation of the command, the target LU, and the number of bytes to be written. At step S715, a check is performed to determine if the data requested to be written, has to be transferred through virtualization switches other than the target virtualization switch 210-i. If step S715 yields a ‘no’ answer, then execution continues with step S720 where the data is sent directly from the initiator host to the designated LU through the target virtualization switch 210-i; otherwise, execution continues with step S730. At step S730, the target virtualization switch 210-i searches the mapping table for a list of virtualization switches 210 (i.e., the AVSL) that have access to LUs in which part, or the entire data, has to be written. At step S735, the target virtualization switch 210-i sends a control message to the redirection means, and to each of virtualization switches 210 in the AVSL. This control message instructs the redirection means to redirect all data PDUs, received from the initiator host, that have an ID name that equals the target task tag (TTT) assigned to the redirection means. The control message further informs virtualization switch 210-j, found in the AVSL, to be ready to receive the Data PDUs. Generally, the TTT is a field in a ready-to-transfer (R2T) message. The R2T is an iSCSI message sent by the target that informs the initiator that it is allowed to send data, within data PDUs, for an ongoing SCSI WRITE command. The R2T includes the logical offset, from the beginning of the command, and the length that the initiator should send. The TTT is a 32-bit value that the target places in the R2T message. The initiator attaches the TTT value in every data PDU sent for this R2T. At step S740, for each virtualization switch in the AVSL, the target virtualization switch 210-i sends a R2T message to the initiator host. The TTT in the R2T is the ID name of the redirection means. At step S745, data PDUs are sent to virtualization switch 210-i with the TTT included in the R2T are intercepted by the redirection means. At step S750, the redirection means redirects the data PDUs to virtualization switch 210-j. In addition, the redirection means forwards to the target virtualization switch 210-i only the headers of the PDUs. This is performed as virtualization switch 210-i may receive multiple PDUs on this TCP connection and may consider the initiator host as faulty due to missing PDUs and TCP sequence number gaps. At step S755, virtualization switch 210-j writes the data to the target LU and then, at step S760, sends to virtualization switch 210-i the TCP sequence numbers that were received as part of the PDUs. At step S765, virtualization switch 210-i acknowledges the TCP sequence numbers to the initiator host and the redirection means, i.e., acknowledges the writing of PDUs related to receive TCP sequence numbers. As a result, the redirection means removes the redirection rule associated with the current SCSI WRITE command. At step S770, once the entire data is written to all virtualization switches 210 designated in the AVSL, the target virtualization switch 210-i sends a SCSI response to the initiator host. It should be noted that writing data to multiple virtualization switches in the AVSL (i.e., steps S750 through S765) is performed in parallel.
In an embodiment of this invention the redirection means mentioned above can replaced by the Ethernet switches in the SAN. In such a configuration the redirection means further serves as an Ethernet switch for all the virtualization switches in the SAN. Such configuration also allows for easy scaling of the SAN system. An example for a scalable topology is shown in
Redirection means 810-1 redirects the data PDUs when the initiator host 830 writes to a storage location handled by virtualization switches 820-1 and 820-2. Similary, redirection means 810-2 redirects the data PDUs when initiator host 830 writes to a storage location handled by virtualization switches 820-3 and 810-4.
In another embodiment of the invention the redirection means is embedded in the virtualization switch. In this configureation, a network processor unit (NPU) operates in conjunction with the virtulization switch, processing Ethernet frames as these frames flow through the switch.
The present application claims the benefit under 35 U.S.C. § 119(e) of U.S. Provisional Application No. 60/531,228, filed on Dec. 19, 2003.
Number | Date | Country | |
---|---|---|---|
60531228 | Dec 2003 | US |