TECHNICAL FIELDThe present invention relates to systems and methods for emulating tape storage.[0001]
BACKGROUNDData backup is an essential element of the data protection process in every organization. Historically it has involved sending a backup copy of the data to a tape storage device. Exponential data growth, a shrinking backup window, heterogeneous platforms and applications (an open systems environment), and rising downtime costs are some of the data storage challenges facing IT administrators today. As a result, data backup is now typically the number one storage problem for IT administrators.[0002]
A traditional[0003]backup system architecture10, shown in FIG. 1, has a backup application residing on abackup server14 and acting as the point of management and control for both the backup process and associated tape hardware.Backup server14 is typically disposed on a local area network (LAN)16, where it is connected to a plurality of local hosts (e.g., PC's and other servers (not shown) requiring data backup) and to atape library18. However, a variety of different backup applications are now available from various vendors, each compatible with different operating systems, storage systems and applications. Integrating these various backup applications into an open systems environment, with heterogeneous hosts and heterogeneous tape storage systems, is a significant challenge.
Apart from the difficulties of integrating the different systems, backup and recovery from tape is itself an inherently labor-intensive, complex and error prone process. The success rate for tape backup varies between 95 and 99%; for tape recovery, a less frequent but very critical operation, it is even lower. The operational costs related to tape backup and recovery management keep rising as the complexity of the system and the amount of data increase.[0004]
As a result of these problems, new data protection schemes have been proposed. One approach is to integrate disk-based cache (an expensive form of temporary storage typically used for application data) to improve backup performance and reduce recovery time. Another approach is to utilize disk-based library storage for data backup, this too being a more expensive alternative than tape storage. Some systems emulate a tape storage device with a disk storage device. In one such emulation system, commonly used in a mainframe (dedicated host and storage device) environment, tape requests are intercepted in the host server and converted to disk requests so that an unmodified magnetic disk storage device can emulate (act as a virtual) magnetic tape storage device.[0005]
While solving some of the problems of traditional tape-based backup and recovery methods, these new approaches have generated problems of their own. Many of these new approaches do not integrate seamlessly into the variety of existing backup applications and procedures of open systems environments. Some approaches require new systems hardware, as well as software. Others are too expensive, requiring additional disk space in primary (expensive, high performance) storage disk arrays. Furthermore, many of these approaches do not consolidate the backup data procedures, but rather are niche solutions suited to only a portion of the data handled by a data center.[0006]
Whereas tape storage has been central to data backup, disk storage has been central to applications storage (i.e., primary storage), which requires more immediate access to data. Thus, traditional disk arrays have been optimized for application storage performance. These storage arrays include RAID architectures for data availability, redundant support systems for reliability of the full data array, wide band channels to support high throughput, and caching to reduce input/output (I/O) latency. Because of their criticality to systems operation, applications storage arrays are also designed with redundant components (including the disks themselves) that can be removed and replaced without interrupting systems operation (referred to as “hot swap” capability). As a result of their increased complexity, application storage arrays typically cost at least ten times the amount of raw disk space.[0007]
For most data protection applications, and specifically for backup, many of these design complexities are not required. Additionally, while application storage systems must be designed so that the full data array is available at all times, most data protection applications require only a small fraction (e.g., ten percent or less) of the data to be active at any time.[0008]
FIG. 2 illustrates an enhanced[0009]backup architecture20 which includes both disk and tape storage. In this schematic drawing, a plurality of hosts21 (e.g., computers) are connected by aLAN22. A plurality ofservers24, e.g.,application server25,e-mail server26,web server27, andbackup server28 on whichbackup application29 resides, are connected by a Storage Area Network (SAN)30, and toLAN22.Data paths32,34,35 exist betweenbackup server28 and each ofdisk library38, which serves as a target for backup data, andtape library36, which serves as a target for archive data. Systems of this type have been implemented ad hoc to reduce backup times and/or to increase the confidence and completion (success rate) of backup within a given backup window. However, the ability to scale such an architecture is limited, particularly in open systems environments which include a variety of different vendors' equipment.
Thus, there is a need to provide a backup data protection system having a more cost-effective combination of some (and preferably all) of the following characteristics: capacity; performance; availability; cost; compatibility; simplicity; and scalability.[0010]
SUMMARYVarious system and method implementations consistent with the invention, a virtual tape storage computer (a VT server) residing on a network has a front end connectable to a plurality of hosts, on which data storage backup application(s) reside, and a back end connectable to one or more disk storage devices. The VT server is operable in an open systems environment which allows, as described herein, simultaneous connectivity to multiple heterogeneous backup hosts, e.g., with different operating systems and/or backup applications. The hosts initiate data backup commands intended for tape storage devices, which commands are received by the VT server. The VT server responds as if it were the intended tape storage device and then emulates the desired tape storage activity on the one or more disk storage devices.[0011]
In one such implementation, a computer-implemented virtual tape storage system includes: a scalable front end connectible to a variable number of heterogeneous hosts in an open systems environment; a scalable back end connectible to a variable number of disk storage devices; and a target emulator and command converter which together accept tape storage commands from the hosts and implement the tape storage commands by emulating tape storage devices identified in the commands with the one or more of the disk storage devices.[0012]
In another implementation, a VT server receives and implements data storage commands and data sent by an initiator host; the commands and data are intended for a target tape storage device and are sent over a link or channel, such as a Fibre Channel (FC) connection. A VT program residing on the VT server includes a device driver which transparently accepts initiator storage commands (e.g., SCSI commands) intended for specific target tape storage devices (e.g., identified by a logical address). The VT program further includes a target emulator and a command converter which together confirm the validity of such storage commands and convert them to disk storage commands. Finally, the backup data (from the initiator host) and data describing the emulated tape device are stored in the one or more disk storage devices.[0013]
In another implementation, a system is provided for data backup including: a backup server and a virtual tape (VT) server connected in an open systems environment; the backup server including a backup application providing a single point of management and control for backup operations; and the VT server accepting and implementing backup commands received from the backup server, which implementation includes emulating one or more tape storage devices with one or more disk storage devices.[0014]
In another implementation, a method is provided for performing backup operations including: providing a backup server and a virtual tape (VT) server in an open systems environment, the VT server receiving from the backup server commands for tape storage and the VT server responding by emulating the requested tape storage with storage on one or more physical disk storage devices; and providing streaming of data intended for tape storage directly from one or more hosts to the one or more physical disk storage devices without storing the data in an intermediate cache disk storage device.[0015]
In another implementation, a method of emulating a tape storage device includes: sending a backup command for a designated tape storage device from a host to a virtual tape server over a network channel in an open systems environment; the server accepting the command as if it were the designated tape storage device and translating the command into a command for a disk storage device; storing/retrieving a data component of the command on/from the disk storage device; and recording the storage location for the stored data as an emulated tape storage device.[0016]
In another implementation, a method is provided for emulating tape storage including steps of: transparently accepting SCSI backup tape storage commands for designated tape storage devices from heterogeneous hosts over a network connection; storing data associated with the command(s) on a disk storage device; and recording a storage location for such data as an emulated tape storage device.[0017]
In another implementation, an apparatus is provided for emulating tape storage including at least one memory having program instructions, and at least one processor configured to execute the program instructions to perform the operations of: transparently accepting SCSI backup tape storage commands for designated tape storage devices from heterogeneous hosts over a network connection; storing data associated with the commands on a disk storage device; and recording a storage location for such data as an emulated tape storage device.[0018]
In another implementation, an apparatus is provided for emulating tape storage including: means for transparently accepting SCSI backup tape storage commands for designated tape storage devices from heterogeneous hosts over a network connection; means for storing data associated with the command(s) on a disk storage device; and means for recording a storage location for such data as an emulated tape storage device.[0019]
In another implementation, a computer-readable medium is provided containing instructions for controlling a computer system to perform a method for emulating tape storage, the method including: transparently accepting SCSI backup tape storage commands from heterogeneous hosts over a network connection; storing data associated with the command(s) on a disk storage device, and recording a storage location for such data as an emulated tape storage device.[0020]
In another implementation, a computer program is provided with instructions for implementing a method, the method including: accepting initiator commands from heterogeneous hosts in an open systems environment for backing up and restoring data; and implementing as a target the initiator commands by emulating one or more tape devices with one or more disk storage devices.[0021]
In the various implementations described in this application, the order of method steps or arrangement of apparatus elements provided is not limiting unless specifically designated as such.[0022]
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a schematic diagram of a prior art backup system architecture including a backup application residing on a backup server;[0023]
FIG. 2 is a schematic diagram of a more elaborate prior art backup architecture which includes both disk and tape storage devices;[0024]
FIG. 3 is a schematic diagram of an implementation consistent with the invention which provides a virtual storage pool;[0025]
FIG. 4 is a schematic diagram of a network architecture for an implementation consistent with the invention, including a Virtual Tape Library (VTL) server and Disk Library Unit (DLU);[0026]
FIG. 5 is a schematic illustration of a network architecture for another implementation, having multiple Disk Library Units (DLUs);[0027]
FIG. 6 is a schematic diagram of a network architecture for another implementation, having both multiple VTL servers and multiple DLUs;[0028]
FIG. 7 is a schematic diagram of a network architecture for another implementation, including a local backup data site and an offsite archiving site;[0029]
FIG. 8 is a schematic diagram of a network architecture for another implementation, including a local site for storing backup data and a disaster recovery site for remote mirroring;[0030]
FIG. 9 is a schematic illustration of the hardware components of a VTL server according to an implementation consistent with the invention;[0031]
FIG. 10 is a corresponding software block diagram for the VTL server of FIG. 9;[0032]
FIG. 11 is a schematic illustration of a DLU system architecture for an implementation consistent with the invention;[0033]
FIG. 12 is an example of a DLU database device data structure according to one implementation consistent with the invention;[0034]
FIG. 13 is an example of a DLU cartridge device database structure according to one implementation consistent with the invention;[0035]
FIG. 14 illustrates a command sequence for a SCSI read command; and[0036]
FIG. 15 illustrates a command sequence for a SCSI write command.[0037]
DETAILED DESCRIPTIONVarious implementations consistent with the invention will now be described. These methods and systems, which illustrate the invention, provide different combinations of benefits, for example in regard to capacity, performance, availability, cost, compatibility, simplicity and scalability.[0038]
According to one implementation, FIG. 3 shows an open systems environment including a[0039]LAN network40 connecting a plurality of mixed Unix and NT computer hosts41,42,43,44. These hosts are also connected to a Storage Area Network (SAN)46, which comprises a shared network of storage devices. The SAN is connected to what is shown schematically as a “virtual storage pool”48. This virtual storage pool includes disk-based storage devices and a system for utilizing the disk storage to emulate tape storage. The pool can be integrated seamlessly into an open systems backup and recovery environment. By “integrated seamlessly” it is meant that no significant changes (special software or configuration) are required to the host backup applications, drivers or other components of the IT infrastructure, including the disk-based storage devices.
The virtual storage pool can be implemented (in one example) with at least one Virtual Tape Library (VTL) server, described below, which receives backup tape commands from heterogeneous hosts and is connectable to one or more disk storage devices for transparently creating virtual pools of tape storage in disparate systems. It allows users to emulate various vendors' tape devices in the same storage pool. As used herein, tape device means a tape storage device such as a tape library, tape drive, or other tape-based storage apparatus. Specific examples include a Quantum™ DLT7000 tape drive, and an ATL P3000 automated tape library.[0040]
The VTL server allows multiple heterogeneous hosts, running different operating systems and different backup applications, to simultaneously connect to various vendors' disk devices. Disk device means a disk storage device such as a disk drive or disk array. Such disk devices are available from EMC™, HP™, IBM™, etc., including ATA-based disk arrays (a new low-cost disk technology). A specific example of a disk array is the EMC Symmetrix™ 5.5.[0041]
When a backup application host sends a backup command, addressed to a specific tape storage device, the VTL server replies to the host as though it (the VTL server) were the addressed tape storage device, and then emulates the requested tape operation with one or more of the disk devices. Based on communications with the VTL server, the host believes that the backup transaction has taken place on the addressed tape storage device.[0042]
In this open systems environment, multiple hosts may be running multiple vendors' operating systems (e.g., UNIX, Windows NT). The hosts may also be running multiple vendors' backup applications (e.g., ArcServe™, NetBackup™, Networker™, TSM™). As used herein, a backup application provides tape management for backup and recovery functions.[0043]
A more specific implementation of the virtual storage pool is illustrated in FIG. 4. FIG. 4 shows a plurality of[0044]hosts50 connected by a Fibre Channel (FC)fabric52 to aVTL server54; the VTL server is in turn connected by Fibre Channel (FC) link56 to an associated Disk Library Unit (DLU)58. The “front end”53 of the VTL server, which is connected by theFibre Channel fabric52 to the plurality ofhosts50, provides scalable connectivity to a plurality of host backup applications. The “back end”55 of the VTL server is connected toDLU58, which includes a plurality of disk-based storage devices orarrays59.
In another implementation, illustrated in FIG. 5, a plurality of[0045]hosts70 are again connected by aFC fabric72 to aVTL server74, but here the VTL server is connected on the back end by a plurality ofFibre Channels76 and78 to a plurality ofDLUs80,82 (here two). In this example, theback end75 ofVTL Server74 provides scalable connectivity and can utilize several DLU disk arrays in parallel.
In yet a further implementation, shown in FIG. 6, a plurality of[0046]hosts90 are connected byFC fabric92 to a plurality ofVTL servers94,98,102 (here three), which in turn are connected byFC fabric106 to a plurality ofdisk library units108,110 (here two). In this example, scalable connectivity is provided at both the front ends93,97,101 of each respective VTL server to the plurality ofhosts90, and at the back ends95,99,103 of each respective VTL server to the plurality ofDLUs108,110.
These implementations illustrate what may be referred to as “virtual tape data storage”, among a variety of different hosts and a variety of different disk storage devices. This eliminates the need for dedicated drives, e.g. where a specific disk drive is allocated to a specific backup application host. In this example, data from one or more hosts can be simultaneously streamed to one or more VTL servers, and on to one or more disk devices emulating one or more tape devices.[0047]
In these examples, the VTL server provides a “virtual image” of a compatible tape storage device on its front end to the host(s). The VTL server also appears to be a compatible host on its back end to the disk storage device(s).[0048]
In these examples, data can be streamed directly from one or more hosts to the one or more physical storage disk drives or disk libraries. By “directly”, it is meant that there is no intermediate hard disk array staging area, which additional storage system and step would tend to increase the cost and/or complexity of the system. Furthermore, there is no intermediate or second point of management and control added for backup operations. Rather, the backup application from the host continues to serve as a single point of management and control for backup operations. As used herein, backup operations includes both backup and recovery operations.[0049]
Furthermore, the implementations described above do not require additional disk space in primary (expensive, high performance) storage disk arrays.[0050]
Another benefit is that the VTL server can run on a standard off-the-shelf server, such as an Intel™-based Linux or UNIX server, e.g. Del™ 4600, and Sun™ Solaris 5.8 servers.[0051]
The implementations described above are distinguishable from the prior art which utilizes hard disk array staging areas to improve backup performance and reduce time to data recovery. These prior art systems offload the actual backup transaction from the tape libraries onto the staging area, placing the backup data in, for example, RAID cache, to be transferred over to a tape library at a later specified time. Thus, instead of writing the data directly from the host to the storage device, they write the data to a high-speed RAID cache disk, wherein the data can later be written to another storage device at a time completely independent of the data being backed up, i.e., not within the backup window.[0052]
Also distinguishable are virtual tape servers used in the mainframe environment, sold for example by IBM™ and StorageTek™, which do not replace the tape library storage but enhance their functionality by providing intermediate disk cache acting as buffer to the tape drives and providing additional management capability for the tape library storage systems.[0053]
Instead, in one implementation consistent with the invention, the tape libraries are replaced by a Virtual Tape Library (VTL) unit which has a configurable number of virtual tape drives and virtual tape cartridges. The system can emulate both a Tape Library Unit (TLU) robotics and a configurable number of tape drive devices. It is configurable to meet a customer's needs, for example in regard to the number of virtual tape cartridges, virtual cartridge size, and protection level (RAID).[0054]
Furthermore, the VTL system includes a VTL server which emulates the tape drives and tape library units transparently. The VTL virtual tape drives can self identify, through a SCSI command (described in further detail below), as a SCSI tape drive device (e.g., whose vendor ID is Quantum and product ID is DLT7000). Similarly, the VTL virtual tape library unit can self identify through a SCSI command as a SCSI tape library unit (e.g., whose vendor ID is Quantum and product ID is ATL P3000). Thus, the VTL server appears to the host as the designated physical tape storage device.[0055]
Other implementations are illustrated in FIGS. 7 and 8. In both of these implementations, a local site includes a[0056]VTL server124,146, respectively, and a disk library unit (DLU)128,150, respectively, which serve as a primary (although virtual) library for active backup data. In both cases, a plurality ofhosts120,142 are connected by aFC fabric122,144 to theVTL servers124,146 (respectively), and theVTL servers124,146 are connected via aFC126,148 to theDLUs128,150 (respectively). Where they differ is that in FIG. 7, a physical tape library unit (TLU)130 is also connected viaFC fabric122 and functions as a data import/export device to allow off-site archiving of data (see arrow134). A backup application121 inhost120 initiates and controls media duplication (seearrows135,136) of data stored in the DLU128 (the virtual storage pool) which is then sent to theTLU130 for archiving. Theindividual tape cartridges131 in the TLU can then be physically removed (by robotics arm133) and transported to an off-site location for off-site archiving (arrow134). Duplication is a common feature in open systems backup applications, such as Veritas™ NetBackup, Legato™ NetWorker, etc.
In FIG. 8, a[0057]local site140 includesVTL server146 andDLU150 as the primary (virtual) library for active backup data. At a remote disaster recovery site160, there is provided anotherVTL server166 connected byFC fabric164 to a plurality of hosts162, and by FC link167 toDLU168. Remote mirroring between the local and remote DLUs168 and150 (see arrow170) is used to recover data from the disaster recovery site160 that has been lost at thelocal site140.
FIGS.[0058]9-10 illustrate a specific implementation of a VTL server acting as a disk-basedtape emulation system180 in an open systems environment, consistent with the invention. FIG. 9 is a schematic illustration of the hardware components, while FIG. 10 is a schematic illustration of the software components.
As shown in FIG. 9, an NT (or Unix)[0059]host182 is connected viaFibre Channel184 to afront end186 of aVTL server188. Aback end192 ofVTL server188 is connected by aFibre Channel194 to aDisk Library Unit196.Host182 includes abackup application183 which acts as an “initiator” in issuing a command to a “target” tape storage device. This implementation utilizes the Fibre Channel Protocol (FCP) for SCSI, second version (hereinafter FCP-2), a draft proposed by the American National Standards Technical Committee T10, Project 1144D, Revision 8, Sep. 23, 2002 (available at www.t10.org). This standard describes a frame format and protocol for transferring commands and data between a SCSI (Small Computer System Interface) initiator and target using the FC (Fibre Channel) transmission standards. Before discussing further the implementation of FIGS.9-10, a short summary of the SCSI and FC standards is provided.
The Small Computer System Interface (SCSI) command set is widely used today for a variety of device types. The transmission of SCSI commands across Fibre Channel links allows the large body of SCSI application and driver software to be used in the Fibre Channel (FC) environment.[0060]
FCP-2 is part of the SCSI family of standards developed by T10 to facilitate the use of SCSI command sets for many different types of devices across many different types of physical interconnects. The architectural model for the family of standards is set forth in NCITS Project[0061]11570, Information Technology—SCSI Architecture Model-2 (SAM 2).
Fibre Channel (FC) is implemented as a high-speed serial architecture that allows either optical or electrical connections at data rates from 265 Mbits up to 4 Gbits per second. Topologies supported by Fibre Channeling include point-to-point, fabric switched, and arbitrated loop. All FC connections use the same standard frame format and standard hierarchy of transmission units to transmit Information Units (lUs) that carry SCSI information.[0062]
Fibre Channel (FC) is logically a point-to-point serial data channel. The architecture may be implemented with high-performance hardware that requires little real-time software management. The FC protocol utilizes the multiplexing and shared bandwidth capabilities provided by various FC classes of service and provides options for reliable error detection and error recovery independent of the class of service.[0063]
FCP-2 defines a Fibre Channel mapping layer (FC-4) that uses the services defined by NCITS Project 1311D, “Fibre Channel Framing And Signaling Interface (FC-FS)”, to transmit SCSI command, data, and status information between a SCSI initiator and a SCSI target. The following definitions from FCP-2 are relevant:[0064]
3.1.6 application client: An object that is the source of SCSI commands.[0065]
3.1.9 command: A request describing a unit of work to be performed by a device server.[0066]
3.1.12 data in delivery service: A confirmed service used by the device server to request the transfer of data to the application client.[0067]
3.1.13 data out delivery service: A confirmed service used by the device server to request the transfer of data from the application client.[0068]
3.1.16 device server: An object within the logical unit that executes SCSI tasks and enforces the rules for task management.[0069]
3.1.20 FCP Exchange: A SCSI I/O Operation for the Fibre Channel FC-2 layer. The SCSI I/O Operation for Fibre Channel is contained in a Fibre Channel Exchange.[0070]
3.1.21 FCP I/O operation: A SCSI I/O Operation for the Fibre Channel FC-4 layer, as defined in FCP-2.[0071]
3.1.22 FCP Port: An N Port or NL Port that supports the SCSI Fibre Channel Protocol.[0072]
3.1.27 Information Unit: An organized collection of data specified by the Fibre Channel protocol to be transferred as a single Sequence by the Fibre Channel service interface.[0073]
3.1.28 initiator: A SCSI device containing application clients that originate device service requests and task management functions to be processed by a target SCSI device. In this standard, the word “initiator” also refers to an FCP_Port using the Fibre Channel protocol to perform the SCSI initiator functions defined by SAM-2.[0074]
3.1.31 logical unit: A target resident entity that implements a device model and processes SCSI commands sent by an application client.[0075]
3.1.32 logical unit number: An encoded 64-bit identifier for a logical unit.[0076]
3.1.54 SCSI device: A device that originates or services SCSI commands.[0077]
3.1.55 SCSI I/O operation: An operation defined by a SCSI command, a series of linked SCSI commands or a task management function.[0078]
3.1.58 target: A SCSI device that receives SCSI commands and directs such commands to one or more logical units for execution. In this standard, the word “target” also refers to an FCP_Port using the Fibre Channel protocol to perform the SCSI target functions defined by SAM-2.[0079]
3.1.60 task: An object within the logical unit representing the work associated with a command or group of linked commands.[0080]
The Fibre Channel physical layer (FG-2 layer) described by FC-FS performs those functions required to transfer data from one port to another (referred to as FCP_Ports). A switching fabric allows communication among more than two FCP_Ports. An arbitrated loop (FC-AL) is an alternative multiple port topology that allows communication between two ports on the loop, or between a port on the loop and a port on a switching fabric attached to the loop.[0081]
The FCP device and task management protocols define the mapping of SCSI functions, defined in SCSI Architecture Model-2 (SAM-2), to the Fibre Channel interface defined by FC-FS. The I/O operation defined by SAM-2 is mapped into a Fibre Channel exchange. A Fibre Channel exchange carrying information for a SCSI I/O operation is an FCP exchange. The request and response primitives of an I/O operation are mapped into Information Units (lUs) as shown in Table 1.
[0082]| TABLE 1 |
|
|
| SCSI and Fibre Channel protocol functions |
| SCSI function | FCP equivalent |
|
| I/O operation | Exchange |
| Protocol Service Request and Response | Sequence |
| Send SCSI Command Request | Unsolicited command IU |
| (FCP_CMND) |
| Data delivery request | Data descriptor IU |
| (FCP_XFER_RDY) |
| Data delivery action | Solicited data IU (FCP_DATA) |
| Send Command Complete Response | Command status IU (FCP_RSP) |
| REQ/ACK for Command Complete | Confirmation IU (FCP_CONF) |
|
An application client begins an FCP I/O operation by invoking an Execute Command remote procedure call (see SAM-2). The Execute Command call conveys a single request or a list of linked requests from the application client to the FCP service delivery subsystem. Each request contains all the information necessary for the execution of one SCSI command, including the local storage address and characteristics of data to be transferred by the command. The FCP then performs the following actions using FC-FS services to perform the SCSI command.[0083]
The FCP_Port that is the initiator for the command starts an Exchange by sending an unsolicited command IU containing the FCP_CMND IU payload, including some command controls, addressing information, and the SCSI command descriptor block (CDB).[0084]
When the device server for the command has completed the interpretation of the command, has determined that a write data transfer is required, and is prepared to request the data delivery service, it sends a data descriptor IU containing the FCP_XFER_RDY IU payload to the initiator to indicate which portion of the data is to be transferred. The FCP_Port that is the initiator then transmits a solicited data IU to the target containing the FCP_DATA IU payload requested by the FCP_XFER_RDY IU. The data delivery request and returning payloads continue until the data transfer requested by the SCSI command is complete.[0085]
Alternatively, when the device server for the command has completed the interpretation of the command and has determined that a read data transfer is required, the FCP_Port that is the target transmits a solicited data IU to the initiator containing the FCP_DATA IU payload. Data deliveries containing payloads continue until all data described by the SCSI command is transferred.[0086]
After all the data has been transferred, the device server transmits the Send Command Complete protocol service response (see SAM-2) by requesting the transmission of an IU containing the FCP_RSP IU payload. That payload contains the SCSI status and, if the SCSI status is CHECK CONDITION, the autosense data describing the condition. The FCP_RSP IU indicates completion of the SCSI command. If no command linking, error recovery or confirmed completion is requested, the FCP_RSP IU is the final sequence of the Exchange. Other details of the protocol are available at www.t10.org.[0087]
Referring back again to FIG. 9, at the[0088]front end186 ofVTL server188 there is adevice driver200 which acts as a SCSI target and accepts the host (initiator) request (command). Thus,driver200 receives Fibre Channel frames containing an SCSI over FC (FCP) command (the FCP_CMND Information set).Driver200 stores the frames inmemory201 inVTL server188. Thendriver200 forwards the frames (containing the FCP command) to atarget emulator204.
The[0089]target emulator204 receives the host request (command) and identifies itself as either a tape drive (SCSI stream device) or a tape library unit robotics (SCSI medium changer). The target emulator software understands the content of and processes FCP commands. For this purpose, it needs to understand four fields in the FCP command, namely:
Opcode[0090]
Logical Unit Number (LUN)[0091]
Read/Write (here in the target emulator read and write mean “data in delivery service” or “data out delivery service”)[0092]
Command/Task Management[0093]
In this context a SCSI command is addressed to a specific LUN (e.g., a specific tape device—tape drive or TLU robotics). The target (e.g., a TLU) may be the front end for a plurality of LUNs. In contrast, a SCSI task management command is intended for the entire target. The[0094]target emulator204 checks to see if the tape device identified by the LUN in the command, exists. Thetarget emulator204 also checks the command's write field, and if flagged, checks whether a buffer is available to hold data. If it is, theemulator204 sends a transfer ready signal back to the host. It adds FCP details to the response, without specifying what type of storage is attached.
More specifically,[0095]emulator204, being aware of the format of the FCP_CMND information set, can access thememory201 in which the command is stored and proceed to analyze it:
It checks the “SCSI CDB opcode” and verifies that it is a valid opcode.[0096]
It checks the LUN (which identifies a specific virtual tape drive device or a virtual tape library robotics) and verifies that it exists.[0097]
If the opcode is illegal, or there is no virtual device (tape drive or robotics) associated with the LUN,[0098]emulator204 rejects the command by sending back (through driver200) a response to thehost182 with an appropriate error code (this response is called FCP_RSP).
If the opcode is legal, and there is a virtual device associated with the command:[0099]
If the command is a “data-out” command, meaning the hosts are sending (writing) data to the VTL server,[0100]emulator204 starts the data transfer (i.e., notifieshost182 thatVTL server188 is ready and the host can start sending the data to the VTL server). The data is transferred to a specific buffer inmemory201 of the VTL server (there are two buffers assigned to each VTL virtual tape drive for this purpose).
If it is not a “data-out” command, or if it is a “data-out” command and all of the data has already been transferred to the VTL, emulator[0101]204 (through a queue) forwards the FCP_CMD (and the buffer containing the data, if it was a “data-out” command) to tape/disk command converter206.
Thus, the command is next sent to[0102]converter206 which converts the tape command to a disk command and creates a disk storage model. The converter software knows how to store the data to disk, how to catalog what data is written where, and how to manage the disk.
[0103]Converter206 will check the SCSI CDB opcode and execute the specific action/operation required by the opcode.Converter206 executes the action/operation either on its own, or by calling a function of theDLU196. TheDLU196 is responsible for storing data to the disks and managing the status of the virtual tape library. Each emulated tape drive and tape robotics will correspond with a different LUN. Thus, the LUN in the address field of the FCP_CMD can be either for a stream device (tape drive) or a medium changer (tape robotics).Converter206 knows how to send commands to the disk in either tape device or robotics formats.
Once the required action/operation is complete,[0104]converter206 sends a response viaemulator204 to thehost182 indicating the completion status (FCP_RSP).
FIG. 10 is the corresponding schematic software block diagram for[0105]VTL server188 of FIG. 9. A first block, connected to inputFC link184, is anFC driver block220 which corresponds todevice driver200 in FIG. 9. A second block is a FC-SCSI port block222, which provides the functionality oftarget emulator204. A third block provides an emulated SCSI tape storage device224. Block224 may include several instances (oneinstance226 per virtual tape drive or virtual robot) of VTL tape and robot objects, each having a different LUN, and comprises the tape storage model; it further includes aset228 of associated DLU tape and robot objects, comprising the disk storage model. EachVTL tape object227 has a correspondingDLU tape object229 in thedisk storage model228. Similarly, eachVTL robot object230 has a correspondingDLU robot object231 in the disk storage model. The objects in thedisk storage model228 correspond to data which is then stored in thedisk library unit196.DLU196 holds both the data received fromhost182, and the data describing the emulated tape device (see e.g., FIG. 11). The lafter may comprise a database, such as relational table, stored in the DLU. A more detailed description of one particular DLU system architecture follows.
A more specific implementation of a DLU system architecture for emulating a tape library unit (TLU) is shown in FIG. 11. This figure also illustrates the correlation of[0106]LUN identifiers317 with VTL devices (tape drives319 and TLU robotics315).
A[0107]VTL310 server (shown schematically) has two front-end ports, front-end port0 (312) and front-end port1 (314).VTL server310 has two back-end ports316,318 connected byFC fabric320 toDLU disk array322.Disk array322 includes aDLU database device324 and multipleDLU cartridge devices326.
[0108]VTL server310 has residing thereonVTL software311 with a DLU model313 of the emulated tape devices—virtual tape drives319 andvirtual TLU robotics315. DLU model313 manages the DLU disk array persistent storage, which includes:
DLU cartridges; and[0109]
DLU robotics, bins, import/export slots, and tape drives.[0110]DLU322 emulates the TLU robotics and a configurable number of tape drive devices; the DLU virtual tape drives provide “sequential access” to random access devices (DLU cartridge devices326).
[0111]DLU database device324 contains configuration information for all elements in the virtual tape library emulated by the DLU. It further contains the status of all such elements in the virtual tape library, namely:
robot;[0112]
bins (slots that hold the virtual cartridges);[0113]
tape drives;[0114]
import/export slots; and[0115]
shared boxes, which allow two or more VTL servers to be attached to the same DLU disk array.[0116]
The information in[0117]DLU database device324 is updated each time there is a command that changes the status of one or more elements in the virtual tape library. For example, an SCSI Move command sent to the DLU robot (315 in DLU model313) asks the robot to move a cartridge from a bin to a tape drive (319 in DLU model313); this changes the status of the respective bin and the status of the respective tape drive, which status changes will be made in theDLU database device324.
[0118]DLU database device324 of this example has adata structure330 illustrated in FIG. 12, with the following fields:
[0119]configuration information332, which includes: number of robots;
number of bins; number of tape drives; number of import/export slots; number of shared boxes; virtual cartridges information;[0120]
[0121]robot mailbox334, which contains the information and status of the robot; there is one entry for each configured robot (normally, there is only one configured robot);
[0122]bin mailbox336, which contains the information and status of the bin; for example, the bin may be full or empty; if full, the label of the virtual cartridge that occupies the bin is provided; there are as many entries as there are configured bins;
[0123]tape mailbox338, contains the information and status of the tape drive; for example, the tape drive may be full or empty; if full, the label of the virtual cartridge that occupies the tape drive is provided; there are as many entries as configured tape drives;
import/[0124]export mailbox340, which contains the information and status of the import/export slot; there are as many entries as configured slots;
[0125]share mailbox342, which contains the information of the VTL server connected to the DLU disk array; there is one entry for each VTL server attached to the DLU disk array.
DLU disk array[0126]322 (see FIG. 11) includes one or more DLUvirtual cartridges326. Each virtual cartridge contains:
some configuration information, such as the virtual cartridge label, the virtual cartridge barcode, etc.;[0127]
the data written by the user;[0128]
the cartridge directory that describes the data that has been written to the cartridge and the current position of the cartridge.[0129]
DLU cartridge device[0130]326 (see FIG. 11) of this example has a data structure350 illustrated in FIG. 13, with the following fields:
DLU[0131]virtual cartridge352, which contains configuration information such as the label, barcode, etc.;
DLU[0132]virtual cartridge directory354;
DLU virtual[0133]cartridge user data356;
[0134]early warning indication358;
end of[0135]media indication360.
The[0136]current directory position353 infield354 and thecurrent data position355 infield356 record the current status of the cartridge and provide a sequential access method to theDLU cartridge device326.
For example, a 32K SCSI Write command may be implemented as follows:[0137]
the DLU will add an entry to the[0138]cartridge directory354 in the position pointed to by the “current directory position”353. This entry will state the size of the IO (e.g., 32K);
the “current directory position”[0139]353 will be moved forward by one entry;
the DLU will write the 32K data sent in the Write command to the position pointed to by the “current data position”[0140]355;
the “current data position”[0141]355 will be moved forward by 32K;
if the “early warning indication”[0142]358 or the “end of media indication”360 are reached while writing the data, the respective indication is sent back in the response to the write command (in the FCP_RSP).
As another example, a SCSI Space command (“space backwards one block”), may be implemented as follows:[0143]
the “current directory position”[0144]353 is moved back one entry;
the content of the entry pointed to by the “current directory position”[0145]353 is read (e.g., 32K);
the “current data position”[0146]353 is moved back according to the value read in the directory entry (32K).
FIG. 11 also illustrates the assignment of one VTL front-end FC port ([0147]312,314) to one or more VTL devices (VTL tape319 and/or VTL robot315). It further illustrates “visible LUNs”317 associated with each VTL device (e.g., LUN0 and LUN1 associated withport0, and LUN4 and LUN1 associated with port1).
Front-[0148]end ports312,314 andvisible LUNs317 are defined in a VTL configuration file: vtl.cfg. Almost all SCSI commands are addressed to a specific LUN. Commands that are not addressed to a specific LUN are handled by the front-end port itself (“target collector”); an example is a report LUN. SCSI commands can be classified as: data-in commands (e.g., read); data-out commands (e.g., write); and no data commands (e.g., rewind).
FIG. 14 illustrates a timing sequence for forwarding and execution of a SCSI data-in command for the read operation. The host sends a FCP_CMD command to the target collector ([0149]222 in FIG. 10); it is forwarded to the VTL device (226 in FIG. 10), and then to the DLU device (228 in FIG. 10).DLU device228 executes the command, by reading data from the physical DLU disk array (196 in FIG. 10). The read data is transmitted back toVTL device226, and is included in a FCP_DATA response generated byVTL device226 and forwarded viatarget collector222 back to the host.VTL device226 also generates a FCP_RSP response which is sent back to the host.
FIG. 15 illustrates a timing sequence for a SCSI write command. The host issues a FCP_CMD (a SCSI write) command, followed by FCP_DATA (the data transfer), which are sent to target[0150]collector222 of the VTL server. The target collector forwards the data toVTL device226, which in reply sends a FCP_RSP response back to the host.VTL device226 forwards the data toDLU device228, which in turn forwards the data to physicalDLU disk array196.
FIG. 15 further illustrates a dual buffer mechanism which enables the VTL software to manage commands on both its front-end (connected to the hosts) and back-end (connected to disk storage) simultaneously. While the back-end is busy writing to the disk, the front-end can process the next write command (see dotted arrow with FCP_CMD command in FIG. 15).[0151]
Other implementations consistent with the invention will be apparent to those skilled in the art from consideration of the specification and practice of the implementations disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope of the invention being indicated by the following claims.[0152]