|Publication number||US7644318 B2|
|Application number||US 10/984,282|
|Publication date||Jan 5, 2010|
|Priority date||Jul 14, 2004|
|Also published as||US20060015770|
|Publication number||10984282, 984282, US 7644318 B2, US 7644318B2, US-B2-7644318, US7644318 B2, US7644318B2|
|Inventors||Jeffrey Dicorpo, Stanley S. Feather, Douglas W. Rauenzahn|
|Original Assignee||Hewlett-Packard Development Company, L.P.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (16), Referenced by (4), Classifications (10), Legal Events (3)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Application Ser. No. 60/587,694, filed Jul. 14, 2004, which is hereby incorporated by reference.
Storage area networks are used to store data from multiple host computer systems, such as servers. A storage area network includes a network of storage systems that are capable of storing a relatively large amount of data. Examples of storage systems include tape libraries, disk array systems, and other types systems.
A tape library is basically a storage system that includes multiple tape cartridges or cassettes that are selectively accessed (for reading and writing) in response to access requests from computer systems. If a data path in the storage area network between a host computer system and the tape library fails during a data transfer operation, typically the entire data transfer operation fails. As a result, the failed data transfer operation must be restarted from the beginning, which is a time consuming procedure. To restart the data transfer operation, an operator has to manually configure a second data path through the storage area network from the host computer system to the tape library. The operator then manually restarts the failed data transfer operation using the second path. Also, the operator has to reposition the storage medium (tape cartridge or cassette) to the original starting position.
The manual restarting of a data transfer operation is thus both time consuming and labor intensive. Furthermore, a data transfer operation, such as a tape backup operation, is usually performed during a relatively limited time window each day (such as after work hours). Therefore, if a backup operation fails, then an operator has to wait until the next available period (usually a day later) before the backup operation can be restarted. This delay in performing the backup increases the risk that data may be lost due to equipment failure.
The tape library 116 includes a tape drive 118 (or multiple tape drives). A picker or robot in the tape library 116 picks a selected one of the tape cartridges or cassettes to transport to the tape drive 118 for performing read and write operations. In other implementations of the storage area network, rather than the tape library 116, another type of tape storage system is used. A “tape storage system” is any storage system that stores data on tape, such as in one or plural tape cartridges or tape cassettes.
Multiple communications paths in the storage area network are present between the server 102 and the tape library 116. For example, a first communications path includes server path 1 (104), fabric 1 (108), and device path 1 (112). A second communications path includes server path 2 (106), fabric 2 (110), and device path 2 (114). Each of the fabrics 108 and 110 includes one or multiple switches for coupling different paths of the storage area network. Although shown as being two separate fabrics, in an alternative embodiment, a single fabric (with one or multiple switches) can be employed. The paths 104, 106, 112, and 114 can include fiber optic links or other forms of communications links. In one example implementation, the fiber optic link can use the Fibre Channel technology. Fibre Channel is a communications link technology governed by standard protocol that operates over a fiber optic or copper cable.
In an alternative embodiment, the communications paths between the server 102 and the tape library 116 can be direct paths without fabrics. Also, although only one server 102 is depicted in
The server 102 and tape library 116 include control modules, according to some embodiments, for handling failures of communications paths between the server 102 and the tape library 116. The term “control module” refers to either a software module, a hardware module, or a combination of both. Also, the term “control module” can refer to a collection of multiple software and/or hardware components.
The server 102 is able to detect failure of one of the communications paths (e.g., a primary communications path) between the server 102 and tape library 116. In response to detection of the failure of the primary communications path, the server 102 performs a failover procedure to cause access commands that were previously sent over the failed primary communications path to be sent over another communications path (the alternate or failover communications path). In accordance with some embodiments of the invention, the access commands that are sent over the failover communications path as a result of a failover procedure contains a special message or instruction. This instruction, for example, can be a header (such as a flag or other indicator) to indicate that the access commands are associated with a failover operation. In one example implementation, the special header is referred to as a RECOVERY prefix.
In response to receiving an access command that contains the RECOVERY prefix, the tape library 116 checks to determine whether the access command with the RECOVERY prefix is a repeat of a previous command received by the tape library 116. For example, the server 102 may have already sent an access command over the primary communications path prior to failure of the primary communications path. Processing of the command with the RECOVERY prefix is performed based on whether the command is a repeat of a previous command, and based upon a state of processing of the previous command by the tape library 116.
Tape storage systems are accessed using a sequential access technique. A sequence of read and write commands causes a tape storage medium (in tape cartridges or cassettes) to sequentially advance. In other words, each time an access command is submitted to the tape storage system, the tape storage medium is moved by some amount. A subsequent access command starts at a location on the tape storage medium from where the previous access command finished. Because of the sequential nature of tape access, an access command cannot be repeated. For example, submitting the same write command twice to the tape storage system will cause the same data to be written twice onto different locations of the tape storage medium.
A sequential access technique performed with tape storage systems is distinguished from access methods in disk-based storage systems, in which access commands are repeatable. For example, submitting the same write command twice to a disk-based system will cause data written by the write command the first time to be overwritten by the second write command.
Failover processing has to take into account the sequential nature of tape storage systems. Conventionally, if a data transfer operation involving a tape storage system fails due to a failed communications path, a user has to manually restart the data transfer operation from the beginning and manually reposition the tape storage medium to its original position. However, in accordance with some embodiments of the invention, failover processing is made transparent to software applications (such as backup software applications) and users. A failover mechanism (implemented in the server 102 and tape library 116) automatically identifies (in a transparent manner) a failover communications path upon detecting a failed primary communications path. The failover mechanism at the server side then sends commands over the failover communications path. At the tape library side, the failover mechanism is able to check whether commands received over the failover communications path are duplicates of previously received commands. This checking enables the tape library 116 to avoid submitting the same access command more than once to the tape drive(s) 118.
A tape driver 208 in the server 102 is the device driver that manages access of the tape library 116 over a fabric (or plural fabrics) 230, which in one example includes fabrics 108 and 110 in
The server 102 also includes a host bus adapter (HBA) driver 212 that links a host computer system (such as server 102) to communications paths such as those provided by the fabric(s) 230. The HBA driver 212, according to one implementation, is a dual HBA driver that works with two host bus adapters, one for each of the server paths 104 and 106. In one example, each host bus adapter can be a Fibre Channel adapter. The server 102 also includes one or multiple central processing units (CPUs) 214 that are coupled to memory devices 216. The software in the server 102 (such as backup software 204, failover configuration tool 206, tape driver 208, and HBA driver 212) are executable on the CPU(s) 214.
The other server 103, in the example implementation of
The tape library 116 is coupled over device paths 112 and 114 to the fabric(s) 230. The tape library 116 includes front-end firmware 232, which in one example implementation includes a Fibre Channel-to-SCSI bridge (or bridges). The tape library 116 also includes an interface controller 236 to perform library management tasks. Alternatively, the front-end firmware 232 can be part of the interface controller 236. The front-end firmware 232 (or alternatively the interface controller 236) includes a tape library failover module 234 for handling receipt of access commands with a RECOVERY prefix. As used here, a “tape library failover module” refers to a failover module that is executable in a tape storage system (such as the tape library 116). The tape library failover module can be implemented in the front-end firmware and/or the interface controller or as a stand-alone control module.
The tape driver 208 in the server 102 “wraps” commands with a header to indicate that the command is either recoverable or to indicate that a recovery attempt is in progress. The term “wrap” or “wrapping” refers to embedding or encapsulating a command in a message having a header field to indicate a type of the command. The header field can include either a RECOVERABLE prefix or a RECOVERY prefix. A command that is a non-repeatable tape drive command is prefixed with the RECOVERABLE prefix. A non-repeatable command is an access command that cannot be repeated. Examples of non-repeatable commands include read and write commands, among others. For example, in a write operation, data is sequentially written onto tape of the tape drive. If the write is repeated, then the write would start at a different position on the tape; therefore, the write is not repeated to the same position on tape. This non-repeatable characteristic is also true of a read command. A first read command issued to a tape drive causes data to be read from a first position of the tape. A subsequent identical read command would cause data to be retrieved from a different position on tape, since the tape storage medium has already moved by a certain amount in response to the first read command. The interface controller 236 processes commands with the RECOVERABLE prefix differently than commands without the RECOVERABLE prefix.
For example, in response to receiving a write command with the RECOVERABLE prefix, the interface controller 236 waits until all write data has been received and cached (in a cache 238) before the write command is issued to the tape drive(s) 118. Waiting until all write data has been received and cached before proceeding with the write ensures that the write can be properly completed in a failover procedure.
For a non-repeatable read command, the response data is stored in the cache 238 so that the response data for the read command can be retrieved over a failover communications path after failure of an original communications path over which the read command was received. Storing the response data in the cache 238 enables the response data to be retrieved without having to repeat the read command (which would have involved a time-consuming repositioning of the tape storage medium). The responses for other non-repeatable commands are similarly cached in the cache 238 for later retrieval should path failure occur.
The response and any data for other types of non-repeatable commands (such as a read command, load/unload command, and so forth) are stored in the cache 238 (
If the received command (402) has a RECOVERY prefix, then the tape library failover module 234 (
However, if the command ID of the received command matches the command ID of a previous command, then the tape library failover module 234 determines (at 410) the status of the previous command. If the previous command is queued, but not yet sent to the tape drive(s) 118 (
If the tape library failover module 234 determines (at 410) that the previous command has been sent to the tape drive(s) 118 but has not yet completed, the interface controller 236 receives but discards the duplicate command (at 416). The previous command in progress is then allowed to finish (at 418).
If the tape library failover module 234 determines (at 410) that the previous command has been sent to the tape drive and the operation has completed, the interface controller receives but discards the duplicate command (at 420). The data and response are then retrieved (at 422) by the interface controller 236 from cache in the tape library 116 (
Following processing of either the currently received command or the previous command, the result of the operation in response to the access command is reported back to the server 102 from the tape library 116. Also, any pending deferred errors are reported (at 424) over the failover communications path back to the server 102. The ability to report pending deferred errors allows the tape library 116 (
By employing the failover mechanism according to some embodiments, failover operation from a failed communications path to a failover communications path between a host computer system and a tape storage system can be achieved without having to restart a data transfer operation previously submitted to the tape storage system but not yet completed. The failover procedure can also be performed without having to reposition tape storage media. Moreover, the failover procedure, which is transparent both to backup software applications and users, can be performed without manual user intervention, which enhances reliability and reduces involvement of personnel. For example, during a backup operation of data on a server to a tape storage system (which usually occurs after work hours), a failed communications path can be automatically detected by the failover mechanism according to some embodiments. The failover mechanism then identifies a failover communications path and re-submits all uncompleted commands. A failover module in the tape storage system checks the re-submitted commands to ensure that duplicate commands are not submitted to the tape storage device.
Instructions of the various software routines or modules discussed herein (such as the host failover module 210 (
Data and instructions (of the various software routines or modules), in the form of computer program code, are stored on one or more machine-readable storage media. The storage media may include different forms of memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; and optical media such as compact disks (CDs) or digital video disks (DVDs).
The instructions of the software routines or modules are loaded or transported to a system in one of many different ways. For example, code segments including instructions stored on floppy disks, CD or DVD media, a hard disk, or transported through a network interface card, modem, or other interface device are loaded into the system and executed as corresponding software modules or layers. In the loading or transport process, data signals that are embodied in carrier waves (transmitted over telephone lines, network lines, wireless links, cables, and the like) communicate the code segments, including instructions, to the system. Such carrier waves are in the form of electrical, optical, acoustical, electromagnetic, or other types of signals.
In the foregoing description, numerous details are set forth to provide an understanding of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these details. While the invention has been disclosed with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover such modifications and variations as fall within the true spirit and scope of the invention.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US6601195 *||Sep 9, 1999||Jul 29, 2003||International Business Machines Corporation||Switch adapter testing|
|US6625747||Jun 30, 2000||Sep 23, 2003||Dell Products L.P.||Computer storage system and failover method|
|US6681339||Jan 16, 2001||Jan 20, 2004||International Business Machines Corporation||System and method for efficient failover/failback techniques for fault-tolerant data storage system|
|US6715031||Dec 28, 2001||Mar 30, 2004||Hewlett-Packard Development Company, L.P.||System and method for partitioning a storage area network associated data library|
|US6725394||Oct 2, 2000||Apr 20, 2004||Quantum Corporation||Media library with failover capability|
|US6779057 *||Apr 18, 2001||Aug 17, 2004||International Business Machines Corporation||Method, system, and program for indicating data transmitted to an input/output device as committed|
|US20010019536 *||Mar 5, 2001||Sep 6, 2001||Hiroyuki Suzuki||Line restoring method and packet transmission equipment|
|US20020129312 *||Jul 25, 2001||Sep 12, 2002||Jussi Sipola||Signalling method in an incremental redundancy communication system whereby data blocks can be combined|
|US20030126309||Dec 28, 2001||Jul 3, 2003||Camble Peter Thomas||System and method for managing access to multiple devices in a partitioned data library|
|US20030126395||Dec 28, 2001||Jul 3, 2003||Camble Peter Thomas||System and method for partitioning a storage area network associated data library employing element addresses|
|US20030187987||Mar 29, 2002||Oct 2, 2003||Messick Randall E.||Storage area network with multiple pathways for command paths|
|US20030200247||Jan 29, 2003||Oct 23, 2003||International Business Machines Corporation||Server computer and a method for accessing resources from virtual machines of a server computer via a fibre channel|
|US20030200477 *||Apr 17, 2002||Oct 23, 2003||International Business Machines Corporation||Method, system, and program for selecting a path to a device to use when sending data requests to the device|
|US20040078632||Oct 21, 2002||Apr 22, 2004||Infante Jon L.||System with multiple path fail over, fail back and load balancing|
|US20050081080 *||Oct 14, 2003||Apr 14, 2005||International Business Machines Corporation||Error recovery for data processing systems transferring message packets through communications adapters|
|US20050188239 *||Jan 30, 2004||Aug 25, 2005||Dell Products L.P.||Method, software and system for multi-path fail-over recovery in sequential storage systems|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US8042005 *||Oct 18, 2011||Fujitsu Limited||Library apparatus, conveyance controller, and control method thereof|
|US9135124||Apr 30, 2012||Sep 15, 2015||Hewlett-Packard Development Company, L.P.||Sequence indicator for command communicated to a sequential access storage device|
|US9317467||Sep 27, 2012||Apr 19, 2016||Hewlett Packard Enterprise Development Lp||Session key associated with communication path|
|US20090210753 *||Feb 19, 2009||Aug 20, 2009||Fujitsu Limited||Library apparatus, conveyance controller, and control method thereof|
|U.S. Classification||714/43, 714/56|
|Cooperative Classification||G06F11/2053, G06F11/2005, G06F11/2007, G06F11/201|
|European Classification||G06F11/20C4S, G06F11/20C4, G06F11/20S|
|Nov 9, 2004||AS||Assignment|
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DICORPO, JEFFREY;FEATHER, STANLEY S.;RAUENZAHN, DOUGLAS W.;REEL/FRAME:015981/0544;SIGNING DATES FROM 20040709 TO 20040712
|Mar 11, 2013||FPAY||Fee payment|
Year of fee payment: 4
|Nov 9, 2015||AS||Assignment|
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001
Effective date: 20151027