Storage devices such as tape drives are employed to back-up electronic data in network environments. Storage devices have evolved with greater capacity and back-up speeds to keep pace with the ever-growing network data storage needs. Some modern high performance storage devices can record large amounts of data every second. A single data source, however, cannot always transmit data to the storage device as fast as the storage device can record the data. That is to say, the storage device cannot be kept “streaming” by a single data source.
Where multiple data sources are connected over a local area network (LAN), individual data streams may combined and supplied concurrently to a storage device through a single storage server to keep the storage device streaming. A storage server interleaves the data streams to the storage device. LAN based interleaving is implemented through a special interleave back-up application running on the storage server. Where, however, data flow to the storage device is transmitted through a storage area network (SAN), there is no single point through which multiple data streams might be combined and supplied concurrently to a storage device on the SAN.
Embodiments of the invention were developed in an effort to increase the rate of data flow from multiple sources through a storage area network (SAN) to a storage device. Embodiments will be described with reference to a SAN based tape drive back-up for multiple data sources. Embodiments, however, are not limited to use in SAN based tape back-ups but may be used in other applications and/or with other storage devices and mediums. The exemplary embodiments shown in the figures and described below illustrate but do not limit the invention. Other forms, details, and embodiments may be made and implemented. Hence, the following description should not be construed to limit the scope of the invention, which is defined in the claims that follow the description.
ENVIRONMENTS:
Hosts 12, 12′, and 12″ (collectively referred to as hosts 12) are illustrated as network servers. However, hosts 12 represent generally any electronic devices capable of communicating with storage device 20 via SAN 24 and storage router 20 for the purposes of backing up electronic data. Storage device 20 represents generally any device capable of storing electronic data. Storage device 20 may, for example, be a tape drive or a tape library capable of storing electronic data sent from hosts 12. While storage router 22 is shown as a fibre channel to SCSI (Small Computer System Interface) router, storage router 22 represents any device capable of receiving data from hosts 12 and routing instructions to write that data to storage device 20.
As shown, storage router 22 includes storage network interface 26, storage device interface 28, Ethernet interface 30 and telnet interface 32. Storage network interface 26 represents hardware capable of receiving and transmitting data over a network such as SAN 24. In this case, network interface 28 is shown as a fibre channel interface. Storage device interface 28 represent hardware capable of receiving data from and transmitting data to storage device 20. Here, storage device interface is shown as a SCSI interface. Ethernet interface 30 and telnet interface 32 represent hardware capable of transmitting and receiving data related to the configuration of storage router 22. As shown, no devices are connected to interfaces 30 and 32.
COMPONENTS:
Media agents 38, 38′, and 38″ (collectively referred to as media agents 38) represent program instructions capable of sending data blocks from to storage device 20 over SAN 24. Media agents 38 are described in more detail below with respect to
Storage router 22 is responsible for receiving data blocks from media agents 38 and routing instructions to write those data blocks to storage device 20. Storage router 22 is shown to include storage network interface 26, storage device interface 28 both of which were described above with reference to
Assume, for example, that storage router 22 is a fibre channel to SCSI router. In this case, storage network translator 50 would be a fibre channel controller and would be responsible for utilizing storage network interface 50, a fibre channel interface, to receive and place data packets into queue 52—the data packets being sent by one or more of hosts 12. Storage device translator 54 would then be a SCSI controller responsible for accessing queue 52 and using storage device interface 28, a SCSI interface, to route the data packets to storage device 20.
Interleave engine 56 represents program instructions for identifying related data blocks within queue 52. Related data blocks are data bocks to be interleaved and written to storage device 20 in a single session. Related data blocks are data blocks received from related hosts. Related hosts are hosts, such as hosts 12, that have been selected to work together to send data blocks in a single session. Interleave engine 56 is responsible for interleaving the data blocks. In other words, interleave engine 56 is responsible for instructing storage device translator 54 to sequentially write the related data blocks to the storage device as those data blocks are received into queue 52. This may be on a first in first out basis. In other words, interleave engine 56 instructs storage device translator 56 to write the data blocks from queue 52 based on the chronological order on which the data blocks were placed in queue 52.
Status module 62 represents program instructions for requesting information concerning a data block sent to storage device 20. For example, where storage device 20 is a tape library, status module 62 could issue a status request for information from the tape library identifying the position or offset of a data block on a tape medium employed by the tape library. This “offset” information can be used to more quickly locate and retrieve a particular data block or group of data blocks making up a file. Error module 64 represents program instructions for receiving and acting upon error messages from storage router 22 or storage device 20. For example, upon receiving an error message, error module 64 may instruct block module 60 to pause or otherwise halt operation.
When coordinating the functions of media agents 38, storage application 40 may identify, for each media agent 38, a list of files to be backed up from a particular data source such as a mirror or snapshot disk. Referring back to
Session module 70 represents hardware and/or program instructions for interleaving data blocks received from associated hosts—that is—those hosts assigned an address presented by configuration module 68. Session module 70 is responsible for instructing storage device translator 54 to sequentially write data blocks to the storage device as those data blocks are received from associated hosts into queue 52 (
Error module 74 represents program instructions for receiving error messages from storage device 12 related to an instruction to write a particular data block received from a particular host 12. Error module 74 is responsible for instructing storage network translator 50 to route (via an assigned address) an error message to the particular host that sent that data block and to copy (via an assigned address) the error message to the other hosts. In this manner, when storage device 12 encounters a problem, media agents 38 operating on hosts 12 can be instructed to stop sending data blocks and/or informed of the error and its repercussions. Such errors can be fatal read/write errors. Where storage device 12 includes a tape drive, the errors may correspond to a logical end of tape or a physical end of tape.
Status module 76 represents program instructions for acquiring and/or maintaining status information concerning instructions to write one or more blocks to storage device 20; Such status information can include the position a given data block has been written to a storage medium employed by storage device 20. Status module 76 is also responsible for receiving and responding to status requests. For example, a media agent 38 for a particular host 12 may send, via an assigned address, a status request immediately after sending the first data block for a file. That request may be to identify the position on a storage medium to which that data block has been written. In response, status module 76 returns, via the same address, data identifying that position to the particular host.
OPERATION: The operation of embodiments of the present invention will now be described with reference to
A stream of data blocks is received via each address (step 88). Referring to the example of
Data blocks received in step 88 are interleaved (step 90). This, for example, can involve sequentially placing data blocks in queue 52 (
CONCLUSION: The schematic diagrams of
Also, the present invention can be embodied in any computer-readable media for use by or in connection with an instruction execution system such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit) or other system that can fetch or obtain the logic from computer-readable media and execute the instructions contained therein. “Computer-readable media” can be any media that can contain, store, or maintain programs and data for use by or in connection with the instruction execution system. Computer readable media can comprise any one of many physical media such as, for example, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor media. More specific examples of suitable computer-readable media include, but are not limited to, a portable magnetic computer diskette such as floppy diskettes or hard drives, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory, or a portable compact disc.
Although the flow diagram of
The present invention has been shown and described with reference to the foregoing exemplary embodiments. It is to be understood, however, that other forms, details and embodiments may be made without departing from the spirit and scope of the invention that is defined in the following claims.