High-resolution tape directory for tape-based storage
Storing HRTDs in off-tape non-volatile memory and validating their integrity addresses slow seek times in LTO and similar tape drives, matching TS11xx speeds and optimizing storage usage.
Patent Information
- Application Number
- JP2023530247
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-11-24
- Filing Date
- 2021-11-03
- Publication Date
- 2025-08-18
- Estimated Expiration
- 2041-11-03
AI Technical Summary
Tape drives like LTO and IBM Enterprise Tape Drives face slow seek times due to the discarding of High Resolution Tape Directories (HRTDs) when tape cartridges are removed, as they cannot store HRTDs in non-volatile memory, unlike TS11xx drives.
Implement methods and systems to store HRTDs in off-tape non-volatile memory, allowing retention and retrieval when the tape cartridge is reinserted, and include verification mechanisms to ensure HRTD validity.
Enhances seek speeds in LTO and similar drives to match TS11xx performance by retaining HRTDs, freeing up storage space, and ensuring data integrity through validation.
Smart Images

Figure 0007724858000001 
Figure 0007724858000002 
Figure 0007724858000003
Abstract
Description
[Technical Field]
[0001] The present invention relates generally to tape-based data storage, and more particularly to a High Resolution Tape Directory (HRTD) for tape-based data storage. [Background technology]
[0002] Linear tape open (LTO) tape drives and IBM Enterprise Tape Drives (TS11xx) are called linear tape drives. Linear tape drives allocate data longitudinally on the tape, record the data from the beginning to the end of the tape, then shift the tape slightly laterally, and then record the data on the tape in the opposite longitudinal direction. Linear tape drives repeat this back-and-forth motion multiple times, shifting the tape laterally.
[0003] When a seek command is received, it is not a simple process for a tape drive to move to the physical location of the target record. For example, if 10 TB of data is stored as 128 KB records, 40,000,000 records would be required, and it would be impossible to record the physical location of every record. In addition, unlike hard disk drives (HDDs), tape devices generally allow the length of each record to be modified. For this reason, determining the physical location cannot be done using a simple formula.
[0004] A seek operation involves moving the tape to the beginning of the region where the target record resides, and then reading the record from the beginning of the region until the target record is reached. Information about the region read during the seek operation is stored in the tape drive's volatile memory. This region information table is called the High Resolution Tape Directory (HRTD). The HRTD can be used to improve seek times for records contained in the HRTD. Summary of the Invention
[0005] According to one aspect of the present invention, a method is provided that includes reading a tape directory from a cartridge memory of a tape cartridge in a first tape drive. The method further includes seeking a target record using the tape directory. The physical locations of multiple different records read during the seek are stored as a high-resolution tape directory (HRTD) in volatile memory of the first tape drive. Prior to ejecting the tape cartridge, the HRTD stored in the volatile memory is communicated for storage in off-tape non-volatile memory. In response to loading the tape cartridge into the tape drive, the HRTD is received from the off-tape non-volatile memory. This method allows the HRTD to be retained when it would otherwise be discarded, potentially increasing seek speed.
[0006] Optionally, if the off-tape non-volatile memory is part of a tape library, the method further includes exporting the HRTD from the off-tape non-volatile memory in response to the tape cartridge being removed from the tape library, which may allow the tape library to free up storage space for other uses while retaining the HRTD.
[0007] Optionally, if the off-tape non-volatile memory is part of a tape library, the method further includes discarding the HRTD in the off-tape non-volatile memory based on the tape cartridge being removed from the tape library. This may allow the tape library to free up storage space for other users. Optionally, the discarding is further based on a specified period of time having passed since the tape cartridge was removed from the tape library. This may allow the tape library to free up storage space but still retain the HRTD for a period of time after the tape cartridge is removed.
[0008] Optionally, the method further includes generating a hash code using the tape-specific information, and the hash code is communicated with the HRTD for storage in off-tape non-volatile memory. This may allow the HRTD to be later validated to determine if it is valid for the tape cartridge. Optionally, if the hash code is received with the HRTD from the off-tape non-volatile memory, the method further includes verifying the hash code with the tape-specific information from the tape cartridge. This may prevent an invalid HRTD from being used with a tape cartridge that does not correspond to the HRTD or based on a tape written after the HRTD was created.
[0009] According to another aspect of the present invention, there is provided a tape drive comprising a memory including a volatile memory and a controller coupled to the memory, the controller configured to perform the operations of the above-described method.
[0010] According to another aspect of the present invention, there is provided a system including a memory storing program instructions and a processor coupled to the memory. The processor is configured to execute the instructions to perform operations including: in response to receiving a tape cartridge eject request for a tape cartridge in a tape drive, requesting a high resolution tape directory (HRTD) from a volatile memory of the tape drive; and in response to receiving the HRTD from the tape drive, storing the HRTD in non-volatile memory. The system allows for the retention of the HRTD when the HRTD would otherwise be discarded.
[0011] Optionally, the operations further include receiving a tape cartridge insertion request to insert the tape cartridge into the tape drive and sending the HRTD stored in the non-volatile memory to the tape drive, which may enable the tape drive to perform faster seeks using the HRTD.
[0012] According to another aspect of the present invention, there is provided a tape library comprising: a memory including a non-volatile memory; and a controller coupled to the memory, the controller configured to perform operations including: in response to receiving a tape cartridge eject request for a tape cartridge in a tape drive, requesting a high resolution tape directory (HRTD) from the volatile memory of the tape drive; and in response to receiving the HRTD from the tape drive, storing the HRTD in the non-volatile memory. The tape library allows for the retention of the HRTD when the HRTD would otherwise be discarded.
[0013] Optionally, the operations further include receiving a tape cartridge insertion request to insert the tape cartridge into the tape drive and sending the HRTD stored in the non-volatile memory to the tape drive, which may enable the tape drive to perform faster seeks using the HRTD.
[0014] Optionally, the operations further include discarding the HRTD in response to the tape cartridge being removed from the tape library and determining that the remaining free storage capacity in the non-volatile memory is less than a threshold, which may allow the tape library to retain the HRTD when the tape cartridge is removed while allowing the tape library to free up storage space as needed.
[0015] The above summary is not intended to describe each illustrated embodiment or every implementation of the present disclosure.
[0016] The drawings included in this application are incorporated into and form a part of the specification. The drawings illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the disclosure. The drawings are merely illustrative of particular embodiments and are not intended to limit the disclosure. [Brief explanation of the drawings]
[0017] [Figure 1] FIG. 1 illustrates a tape storage system according to an embodiment of the present disclosure. [Figure 2] FIG. 1 illustrates a second tape storage environment according to an embodiment of the present disclosure. [Figure 3] 1 is a flowchart of a method for processing the insertion of a tape cartridge into a tape drive according to an embodiment of the present disclosure. [Figure 4] 1 is a flowchart of a method for processing a tape ejection request according to an embodiment of the present disclosure. [Figure 5] FIG. 1 illustrates a method for operating a tape drive according to an embodiment of the present disclosure. [Figure 6] FIG. 1 illustrates a high-level block diagram of an exemplary computer system in accordance with an embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0018] While the invention is subject to various modifications and alternative forms, specifics thereof have been shown by way of example in the drawings and will be described in detail. It is to be understood, however, that there is no intention to limit the invention to the particular embodiments described. On the contrary, it is intended to cover all modifications, equivalents, and alternatives falling within the scope of the invention.
[0019] Aspects of the present disclosure relate to improving seek times in tape storage, and more particularly to storing high-resolution tape directories in non-volatile memory. While the present disclosure is not necessarily limited to such applications, various aspects of the present disclosure may be understood through discussion of various examples using this context.
[0020] Linear tape open (LTO) tape drives and IBM Enterprise Tape Drives (TS11xx) are called linear tape drives. Linear tape drives allocate data longitudinally on the tape, record the data from the beginning to the end of the tape, then shift the tape slightly laterally, and then record the data on the tape in the opposite longitudinal direction. Linear tape drives repeat this back-and-forth motion multiple times, shifting the tape laterally. The point at which the entire tape has been written is determined to be the logical end of the tape.
[0021] In this operation, a linear line of data from the beginning to the end of the tape or from the end to the beginning is called a wrap. The number of wraps depends on the cartridge type and cartridge format. For LTO and TS11xx tape drives, the number of wraps ranges from 48 to 208. The data writing area of the tape is divided horizontally into four sections, each containing one-quarter of a wrap. Each section is called a data band. Tape drives are recognized as streaming devices by the computer connected to them and are generally operated using the Small Computer System Interface (SCSI) command set.
[0022] Data on a tape drive is logically classified into actual data (records) and separators (file marks, or FMs). The tape drive assigns numbers sequentially to the logical data (records and FMs) written from the beginning. The tape drive maintains current position information, which can be obtained using the ReadPosition command. The tape drive provides commands (seek commands) to change the current position. The current position can be changed using the Locate, Space, and Rewind commands. Upon receiving a seek command, LTO and TS11xx tape drives wind the tape so that the tape drive head is positioned at the position on the tape where recording has been performed. Upon receiving a Read command, the tape drive reads the logical data at the current position, sends the data to the computer, and then increments the current position. Upon receiving a Write command, the tape drive writes the logical data received from the computer to the current position, increments the current position, and then sets the current position as the logical end of data (EOD). In other words, upon receiving a Write command, the tape drive writes the logical data received from the computer to the current position, increments the current position by one, and then invalidates any data following the incremented current position.
[0023] In response to receiving a seek command, a tape drive cannot simply move to the physical location of the target record. For example, storing 10 TB of data as 128 KB records would require 40,000,000 records, and it would be impossible to record the physical location of every record. In addition, unlike hard disk drives (HDDs), tape devices generally allow the length of each record to be modified. For this reason, the physical location cannot be determined by a simple formula.
[0024] LTO drives implement a standardized mechanism called a tape directory (TD) that allows for estimation of physical location, and write the TD to non-volatile memory within the cartridge as needed. In the case of LTO, the TD stores the number of records and FMs written in the first half of each wrap, as well as the number of records and FMs written in the second half of each wrap. In the case of TS11xx, the TD stores the number of records and FMs written in each wrap. By examining the TD, it is possible to determine the wrap and the area where the target record resides.
[0025] A seek operation involves moving the tape to the beginning of the area where the target record is located, and then reading the record from the beginning of the area until the target record is reached. Information about the area read during the seek operation is stored in the tape drive's volatile memory. The area information stored during this operation consists of the number of records written in the area, obtained by dividing each wrap by a number between 32 and 128, and the number of FMs. This area information table is called the High Resolution Tape Directory (HRTD).
[0026] TS11xx drives store the HRTD in the tape's control area when writing a record. However, LTO drives are not permitted to store the HRTD on the tape because the use of the tape's control area is strictly regulated by the LTO format specification. Therefore, LTO drives discard the HRTD in the drive's volatile memory when the tape cartridge is removed. For this reason, LTO tape drives are generally slower to seek records that have not been accessed since the cartridge was inserted than TS11xx tape drives.
[0027] Described herein are methods, systems, and computer program products for storing HRTD data in off-tape nonvolatile memory when a tape cartridge is removed from a tape drive. In embodiments, a host computing device or tape library reads and stores the HRTD from a tape drive before removing the tape cartridge. Then, when the tape cartridge is later inserted into the tape drive, the host computing device or tape library transmits the stored HRTD to the tape drive, allowing the tape drive to use the pre-generated HRTD data for subsequent seeks. Thus, embodiments may be particularly beneficial for tape drives, such as LTO tape drives, which typically discard the HRTD when the tape cartridge is removed from the tape drive and therefore would otherwise be inaccessible. For example, an LTO drive may be provided with the ability to seek to records that have not been accessed since the tape cartridge was inserted at speeds comparable to TS11xx drives. Additionally, embodiments may also benefit other types of tape drives by providing an alternative storage location for the HRTD, freeing up storage space for other uses.
[0028] Commands for retrieving an HRTD from a tape drive and for sending a stored HRTD to a tape drive may be provided. In some embodiments, these commands may be provided by defining new pages in existing SCSI commands, such as ModeSense and ModeSelect, or commands like ReadBuffer and WriteBuffer. Alternatively, these commands may be provided by defining new vendor-specific commands. In this disclosure, a command called GET_HRTD is used to refer to a command for retrieving an HRTD from a tape drive, and a command called SET_HRTD is used to refer to a command for sending a stored HRTD to a tape drive.
[0029] The HRTD for a tape cartridge may become invalid if the tape is later altered and the HRTD is not updated. In some embodiments, when a tape drive provides an HRTD, it additionally provides verification data based on tape-specific information that can be used to verify that the HRTD is valid. For example, the tape drive may generate a hash code using the tape-specific information and provide the hash code along with the HRTD. The tape-specific information may include information stored in the tape cartridge's non-volatile memory that describes the tape. For example, the tape-specific information may include an identifier, such as a tape serial number created by the manufacturer, and a write pass value that indicates the number of writes that have been attempted to the tape.
[0030] The hash code may be generated using any suitable hashing algorithm. The verification data may be used to prevent an incorrect HRTD from being used if the tape has been altered since the HRTD was created. In some embodiments, the host computing device or tape library may provide the verification data along with the HRTD to the tape drive, and the tape drive may verify the verification data against the tape-specific information of the installed tape cartridge. For example, the tape drive may calculate a new hash code based on the tape-specific information (tape serial, write pass) and compare the new hash code with the hash code received from the host computing device or tape library. If the tape serial number does not match, or if the tape has been written by another application, increasing the number of write passes, the hash codes will not match, indicating an invalid HRTD.
[0031] In embodiments where HRTDs are stored by a tape library, the HRTDs may be retained as long as the corresponding tape cartridge remains in the tape library. However, storage space in a tape library may be limited, and therefore HRTD data may need to be discarded at some point to free up storage space. When a tape cartridge is removed from the tape library, the tape library may be configured to handle the corresponding HRTD differently.
[0032] In some embodiments, an HRTD is retained for a period of time after the corresponding tape cartridge is removed from the tape library. For example, a tape library may discard an HRTD a specified period of time after the corresponding tape cartridge is removed from the tape library. Alternatively, a tape library may discard an HRTD based on the remaining free storage capacity in non-volatile memory. For example, a tape library may discard an HRTD if the corresponding tape cartridge is removed from the tape library and the remaining free storage capacity is below a threshold. In some embodiments, a combination of the time elapsed since the corresponding tape cartridge was removed and the remaining storage capacity may be used. For example, a tape library may discard an HRTD if the remaining free storage capacity is below a threshold and a specified period of time has elapsed since the corresponding tape cartridge was removed. To determine the period of time since a tape cartridge was removed, a tape library may generate a time stamp when the tape cartridge is removed and store it in association with the corresponding HRTD.
[0033] In some embodiments, a tape library may export an HRTD when a corresponding tape cartridge is removed from the tape library. For example, the tape library may be configured to communicate the HRTD to a host computing device in communication with the tape library. The tape library may further be configured to import the HRTD when a corresponding tape cartridge is later inserted. For example, the tape library may communicate a request for the HRTD to the host computing device when a corresponding tape cartridge is inserted into the tape library.
[0034] In some embodiments, a tape library may simply discard an HRTD when the corresponding tape cartridge is removed, which frees up storage space on the tape library, but the benefit of retaining the HRTD may be lost if the corresponding tape cartridge is later inserted into the tape library.
[0035] 1, a tape storage system 100 according to an embodiment of the present disclosure is shown. The tape storage system 100 includes a host computing device 110 and a tape drive 120. The host computing device 110 may be communicatively coupled to the tape drive 120 via one or more interfaces. In some embodiments, the host computing device 110 may communicate with the tape drive 120 via one or more networks.
[0036] The host computing device 110 may be any suitable computing device, such as, for example, the computer system 601 described with respect to FIG. 6 . The host computing device 110 includes a tape storage module 114 and a non-volatile memory 118. The tape storage module 114 may be any combination of hardware and software components configured to communicate with the tape drive 120. For example, the tape storage module 114 may include processor-executable program instructions for communicating commands to the tape drive 120 and processing information received from the tape drive 120. The host computing device 110 further includes a non-volatile memory 118. The non-volatile memory 118 may be any suitable non-volatile memory component that retains information after a power cycle. As described herein, the non-volatile memory 118 may store HRTD data received from the tape drive 120.
[0037] The tape drive 120 may be any type of suitable tape drive. As previously mentioned, aspects of the present disclosure may be particularly useful for tape drives, such as LTO tape drives, that are configured to discard HRTD data when the tape cartridge is ejected without storing the HRTD data in non-volatile memory. The tape drive 120 may include a controller 124. The controller 124 may be or include a processor and / or any logic for controlling any subsystem of the tape drive 120. For example, the controller 124 typically controls head functions such as servo tracking, data writing, data reading, etc. In various embodiments, the controller 124 may operate under logic known in the art and any logic disclosed herein and, therefore, may be considered a processor for purposes of any of the tape drive descriptions contained herein. The controller 124 may be coupled to a memory 126 of any known type that may store instructions executable by the controller 124. Additionally, controller 124 may be configured to execute or control some or all of the methodologies presented herein, and / or may be programmable. Thus, controller 124 may be considered to be configured to perform various operations through logic programmed into one or more chips, modules, or blocks, or a combination thereof, software, firmware, or other instructions available to one or more processors, or a combination thereof, and the like.
[0038] The memory 126 may be a combination of one or more memory devices. The memory 126 includes a volatile memory 128. The controller 124 may be configured to store information in the volatile memory 128 associated with a tape cartridge loaded in the tape drive 120. For example, the controller may read a TD from the cartridge memory of the loaded tape cartridge and store the TD in the volatile memory 128. Further, the controller may execute a seek command using the TD in the volatile memory 128 and store the physical location of the record as an HRTD in the volatile memory 128. In addition, the controller may read tape-specific information from the cartridge memory and use the information to generate verification data, as described herein.
[0039] 2, a second tape storage environment 200 according to an embodiment of the present disclosure is shown. The environment 200 includes a host computing device 210 and a tape library 220. The host computing device 210 may be communicatively coupled to the tape library 220 via one or more interfaces. In some embodiments, the host computing device 210 may communicate with the tape library 220 via one or more networks.
[0040] The host computing device 210 may be any suitable computing device, such as, for example, the computer system 601 described with respect to FIG. 6 . The host computing device 210 includes a tape library storage module 214 and a non-volatile memory 218. The tape library storage module 214 may be any combination of hardware and software components configured to communicate with the tape library 220. For example, the tape library storage module 214 may include processor-executable program instructions for communicating commands to the tape library 220 and processing information received from the tape library 220. The host computing device 210 further includes a non-volatile memory 218. The non-volatile memory 218 may be any suitable non-volatile memory component that retains information after a power cycle. As described herein, the non-volatile memory 218 may store HRTD data exported from the tape library 220.
[0041] The tape library 220 includes a controller 224, a memory 226, tape cartridge slots 230, and tape drives 240. The controller 224 may be or include a processor and / or any logic for controlling any subsystem of the tape library 220. For example, the controller 224 may control the transfer of tape cartridges between the tape cartridge slots 230 and the tape drives 240. In various embodiments, the controller 224 may operate under any logic known in the art and disclosed herein and, therefore, may be considered a processor for purposes of any of the tape drive descriptions contained herein. The controller 224 may be coupled to any known type of memory 226 that may store instructions executable by the controller 224. Additionally, the controller 224 may be configured to execute or control some or all of the methodologies presented herein and / or may be programmable. Thus, controller 224 may be considered to be configured to perform various operations through logic programmed into one or more chips, modules, or blocks, or a combination thereof, software, firmware, or other instructions available to one or more processors, or a combination thereof, and the like.
[0042] The memory 226 includes a non-volatile memory 228. The non-volatile memory 228 may be any suitable non-volatile memory component that retains information after a power cycle. As described herein, the non-volatile memory 228 may store HRTD data received from the tape drive 240.
[0043] Tape cartridge slots 230 may include any number of slots for holding tape cartridges within tape library 220. Tape library 220 may be configured to automatically remove a tape cartridge from one of tape cartridge slots 230 and insert it into tape drive 240. Tape library 220 may further be configured to eject a tape cartridge from tape drive 240 and insert it into one of tape cartridge slots 230.
[0044] The tape drive 240 may include a controller 244. The controller 244 may be or include a processor and / or any logic for controlling any subsystem of the tape drive 240. For example, the controller 244 typically controls head functions such as servo tracking, data writing, data reading, etc. In various embodiments, the controller 244 may operate under any logic known in the art and disclosed herein and, therefore, may be considered a processor for purposes of any of the tape drive descriptions contained herein. The controller 244 may be coupled to any known type of memory 246 that may store instructions executable by the controller 244. Additionally, the controller 244 may be configured to perform or control some or all of the methodologies presented herein, and / or may be programmable. Thus, the controller 244 may be considered to be configured to perform various operations via one or more chips, modules, or blocks, or a combination thereof, software, firmware, or other instructions available to one or more processors, and / or a combination thereof, programmed logic.
[0045] The memory 246 may be a combination of one or more memory devices. The memory 246 includes a volatile memory 248. The controller 244 may be configured to store information in the volatile memory 248 associated with a tape cartridge loaded in the tape drive 240. For example, the controller may read a TD from the cartridge memory of the loaded tape cartridge and store the TD in the volatile memory 248. Further, the controller may execute a seek command using the TD in the volatile memory 248 and store the physical location of the record as an HRTD in the volatile memory 248. In addition, the controller may read tape-specific information from the cartridge memory and use that information to generate verification data, as described herein. Although the tape library 220 is shown as having a single tape drive, a tape library may have any number of tape drives.
[0046] Referring now to FIG. 3 , a flowchart of a method 300 for processing the insertion of a tape cartridge into a tape drive is shown, in accordance with an embodiment of the present disclosure. Portions or all of method 300 may be performed by a host computing device. For example, method 300 may be performed by tape storage module 114 of host computing device 110 described with reference to FIG. 1 or tape library storage module 214 of host computing device 210 described with reference to FIG. 1. Although FIG. 3 is described herein as being performed by a host computing device, in some embodiments, portions or all of method 300 may be performed by tape library 220. For example, program instructions for performing method 300 may be included in memory 246 for execution by controller 224 in tape library 220.
[0047] In operation 310, a tape cartridge insertion request is received by a host computing device. For example, the host computing device may be notified that a tape cartridge has been inserted into a tape drive. The tape cartridge insertion request may occur in response to a user manually inserting a tape cartridge into a tape drive or through an automated process in a tape library. In operation 320, the host computing device determines whether an HRTD corresponding to the tape cartridge is stored in non-volatile memory. In some embodiments, the host computing device uses the tape cartridge identifier to search for HRTD data in non-volatile memory on the host computing device. The HRTD data may include multiple HRTDs corresponding to multiple tape drives. The host computing device may identify the corresponding HRTD using a tape identifier, such as a serial number. In some embodiments, the host computing device searches for HRTD data stored in non-volatile memory in a tape library that holds the tape drive.
[0048] If an HRTD corresponding to the tape cartridge is available in operation 320, the HRTD is sent to the tape drive in operation 330. For example, the host computing device may read the HRTD from non-volatile memory and communicate the HRTD to the tape drive using a SET_HRTD command to store the HRTD in volatile memory of the tape drive.
[0049] After sending the HRTD to the tape drive in operation 330, or after determining in operation 320 that an HRTD corresponding to the tape cartridge is not available, in operation 340 the tape cartridge insertion is complete and commands can be executed on the tape.
[0050] Referring now to FIG. 4 , a flowchart of a method 400 for processing a tape ejection request is shown, according to an embodiment of the present disclosure. Portions or all of method 400 may be performed by a host computing device. For example, method 400 may be performed by tape storage module 114 of host computing device 110 described with reference to FIG. 1 or tape library storage module 214 of host computing device 210 described with reference to FIG. 1. Although FIG. 4 is described herein as being performed by a host computing device, in some embodiments, portions or all of method 400 may be performed by tape library 220. For example, program instructions for performing method 400 may be included in memory 246 for execution by controller 224 in tape library 220.
[0051] In operation 410, a tape cartridge eject request is received by a host computing device. The eject request may occur in response to a manual action by a user or an automatic action by a tape library. In operation 420, the host computing device requests the HRTD corresponding to the tape cartridge from the tape drive. For example, the host computing device may issue a GET_HRTD command to the tape drive. In response to this request, the tape drive may read the HRTD from its volatile memory and communicate it to the host computing device or the tape library.
[0052] In operation 430, the host computing device stores the HRTD received from the tape drive in non-volatile memory. In some embodiments, the non-volatile memory is on the host computing device. In some embodiments, the non-volatile memory is on a tape library that holds the tape drive. The non-volatile memory may store HRTDs for multiple different tape cartridges. The HRTD may be stored with an identifier, such as a tape serial number, to identify the corresponding tape cartridge. In some embodiments, the HRTD is stored with verification data received from the tape drive or generated by the host computing device. In operation 440, the host computing device issues an eject command to the tape drive.
[0053] 5, a method 500 for operating a tape drive according to an embodiment of the present disclosure is shown. Method 500 may be performed by a controller of a tape drive, such as controller 124 of tape drive 120 described with reference to FIG. 1 or controller 244 of tape drive 240 described with reference to FIG. 2.
[0054] In operation 510, a tape drive receives a tape cartridge. For example, the tape cartridge may be manually inserted into the tape drive by a user, or the tape cartridge may be automatically inserted by a tape library. The tape drive may be configured to read a tape cartridge identifier, such as a serial number, from a cartridge memory of the tape cartridge and communicate the identifier to a host computing device. In operation 520, the tape drive reads a tape directory from the cartridge memory of the tape drive. The tape drive may store the tape directory in its volatile memory.
[0055] In operation 530, the HRTD is received by the tape drive and stored in its volatile memory. The HRTD may be communicated to the tape drive from non-volatile memory in a host computing device or tape library, for example, using a SET_HRTD command. In some embodiments, the received HRTD is accompanied by verification data, such as a hash code generated using tape-specific information. The tape drive may be configured to verify the hash code using tape-specific information from the tape cartridge. For example, the tape drive may calculate a new hash code and determine whether it matches the received hash code. If the hash code does not verify, the HRTD may be discarded by the tape drive. If an HRTD has not been previously generated for the tape cartridge, operation 530 may not be performed.
[0056] In operation 540, the tape drive seeks to the target record using the tape directory and / or the HRTD. Operation 540 may be performed in response to receiving a seek command from a host computing device or a tape library. The seek operation may include moving the tape to the beginning of an area where the target record resides based on the tape directory and reading records from the beginning of the area until the target record is reached.
[0057] In operation 550, the HRTD data is stored in volatile memory of the tape drive using the physical location of the record identified during the seek in operation 540. If an HRTD does not already exist for the tape cartridge, a new HRTD may be created, or the HRTD data may be added to an existing HRTD.
[0058] The tape drive receives a request for an HRTD in operation 560. For example, the tape drive may receive a GET_HRTD command from a host computing device in response to a request to remove a tape cartridge from the tape drive.
[0059] The tape drive transmits the HRTD to a host computing device or tape library for storage in non-volatile memory in operation 570. In some embodiments, the tape drive may generate verification data, such as a hash code, using tape-specific information (e.g., tape serial, write path) and transmit the hash code along with the HRTD.
[0060] In operation 580, a tape cartridge eject command is received by the tape drive. In operation 590, the tape cartridge is ejected from the tape drive.
[0061] 6, there is shown a high-level block diagram of an exemplary computer system 601 that may be used to implement one or more of the methods, apparatus, and modules described herein, and any associated functionality (e.g., using one or more processor circuits of a computer or computer processor), according to embodiments of the present disclosure. In some embodiments, the major components of computer system 601 may include one or more CPUs 602, a memory subsystem 604, a terminal interface 612, a storage interface 616, an I / O (input / output) device interface 614, and a network interface 618, all of which may be communicatively coupled, directly or indirectly, for inter-component communication via a memory bus 603, an I / O bus 608, and an I / O bus interface unit 610.
[0062] Computer system 601 may include one or more general-purpose programmable central processing units (CPUs) 602A, 602B, 602C, and 602D, collectively referred to herein as CPUs 602. In some embodiments, computer system 601 may include multiple processors typical of relatively large systems, although in other embodiments, computer system 601 may alternatively be a single-CPU system. Each CPU 602 may execute instructions stored in memory subsystem 604 and may include one or more levels of on-board cache.
[0063] System memory 604 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 622 or cache memory 624. Computer system 601 may further include other removable / non-removable / volatile / non-volatile computer system storage media. By way of example only, storage system 626 may be provided for reading from and writing to non-removable, non-volatile magnetic media, such as a "hard drive." Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), or an optical disk drive may be provided for reading from and writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media. Additionally, memory 604 may include flash memory, such as a flash memory stick drive or flash drive. Memory devices may be connected to memory bus 603 by one or more data media interfaces. The memory 604 may include at least one program product having a set (eg, at least one) program module configured to implement the functionality of various embodiments.
[0064] One or more programs / utilities 628, each having at least one set of program modules 630, may be stored in memory 604. The programs / utilities 628 may include a hypervisor (also referred to as a virtual machine monitor), one or more operating systems, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or any combination thereof, may include an implementation of a network environment. The program modules 630 generally perform the functions or methodologies of various embodiments.
[0065] While memory bus 603 is depicted in FIG. 6 as a single bus structure providing a direct communication path between CPU 602, memory subsystem 604, and I / O bus interface 610, memory bus 603, in some embodiments, may include multiple distinct buses or communication paths that may be arranged in any of a variety of forms, such as point-to-point links in a hierarchical, star, or web configuration, multiple hierarchical buses, parallel and redundant paths, or any other suitable type of configuration. Additionally, while I / O bus interface 610 and I / O bus 608 are each depicted as single units, computer system 601, in some embodiments, may include multiple I / O bus interface units 610, multiple I / O buses 608, or both. Additionally, while multiple I / O interface units are depicted separating I / O bus 608 from the various communication paths extending to the various I / O devices, in other embodiments, some or all of the I / O devices may be directly connected to one or more system I / O buses.
[0066] In some embodiments, computer system 601 may be a multi-user mainframe computer system, a single-user system, or a server computer or similar device that has few or no direct user interfaces but receives requests from other computer systems (clients). Further, in some embodiments, computer system 601 may be implemented as a desktop computer, a portable computer, a laptop or notebook computer, a tablet computer, a pocket computer, a telephone, a smart phone, a network switch or router, or any other suitable type of electronic device.
[0067] It should be noted that Figure 6 is intended to illustrate representative major components of an exemplary computer system 601. However, in some embodiments, individual components may have greater or less complexity than those shown in Figure 6, components other than or in addition to those shown in Figure 6 may be present, and the number, type, and arrangement of such components may vary.
[0068] In some embodiments, a method includes reading a tape directory from a cartridge memory of a tape cartridge in a first tape drive, seeking a target record using the tape directory, storing physical locations of a plurality of different records read during the seek as a high resolution tape directory (HRTD) in a volatile memory of the first tape drive, communicating to store the HRTD stored in the volatile memory in an off-tape non-volatile memory before removing the tape cartridge, and receiving the HRTD from the off-tape non-volatile memory to a second tape drive in response to the tape cartridge being loaded into the tape drive.
[0069] In some embodiments of the method, the off-tape non-volatile memory is part of a tape library. In some embodiments, the method further includes exporting the HRTD from the off-tape non-volatile memory in response to the tape cartridge being removed from the tape library. In some embodiments, the method further includes discarding the HRTD in the off-tape non-volatile memory based on the tape cartridge being removed from the tape library. In some embodiments, the discarding is further based on a specified period of time having elapsed since the tape cartridge was removed from the tape library.
[0070] In some embodiments, the off-tape non-volatile memory is part of the host computing device.
[0071] In some embodiments, the method further includes generating a hash code using the tape-specific information, the hash code being communicated with the HRTD for storage in off-tape non-volatile memory. In some embodiments, the hash code is received with the HRTD from the off-tape non-volatile memory, and the method further includes verifying the hash code with the tape-specific information from the tape cartridge.
[0072] In some embodiments, the tape drive comprises a memory including a volatile memory; and a controller coupled to the memory, the controller configured to perform operations including reading a tape directory from a cartridge memory of a tape in a first tape drive, seeking a target record using the tape directory, storing physical locations of a plurality of different records read during the seek as a high resolution tape directory (HRTD) in the volatile memory, storing the HRTD stored in the volatile memory in an off-tape non-volatile memory, and transmitting the HRTD from the off-tape non-volatile memory to the second tape drive in response to the tape being loaded into the second tape drive.
[0073] In some embodiments, the operations further include generating a hash code using the tape-specific information, the hash code being communicated with the HRTD for storage in off-tape non-volatile memory. In some embodiments, the hash code is received with the HRTD from off-tape non-volatile storage, and the operations further include verifying the hash code with the tape-specific information from the tape cartridge.
[0074] In some embodiments, a system includes a memory storing program instructions and a processor coupled to the memory, the processor configured to execute the instructions to perform operations including: requesting a high resolution tape directory (HRTD) from volatile memory of the tape drive in response to receiving a tape cartridge ejection request for a tape cartridge in the tape drive; and storing the HRTD in non-volatile memory in response to receiving the HRTD from the tape drive. In some embodiments, the operations further include receiving a tape cartridge insertion request for inserting the tape cartridge into the tape drive and sending the HRTD stored in the non-volatile memory to the tape drive. In some embodiments, a hash code is received from the tape drive along with the HRTD, and the hash code is stored in non-volatile memory along with the hash code.
[0075] In some embodiments, a tape library comprises a memory including a non-volatile memory; and a controller coupled to the memory, the controller configured to perform operations including, in response to receiving a tape cartridge eject request for a tape cartridge in a tape drive, requesting a high resolution tape directory (HRTD) from the volatile memory of the tape drive, and in response to receiving the HRTD from the tape drive, storing the HRTD in the non-volatile memory.
[0076] In some embodiments, the operations further include receiving a tape cartridge insertion request to insert the tape cartridge into the tape drive and sending the HRTD stored in the non-volatile memory to the tape drive.
[0077] In some embodiments, a hash code is received from the tape drive along with the HRTD, and the hash code is stored in non-volatile memory along with the hash code.
[0078] In some embodiments, the operations further include discarding the HRTD from the non-volatile memory in response to the tape cartridge being removed from the tape library.
[0079] In some embodiments, the operations further include discarding the HRTD from the non-volatile memory in response to determining that a specified period of time has elapsed since the tape cartridge was removed from the tape library.
[0080] In some embodiments, the operations further include discarding the HRTD in response to removing the tape cartridge from the tape library and determining that the remaining free storage capacity in the non-volatile memory is less than a threshold value.
[0081] In addition to the above-described embodiments, other embodiments having fewer, more, or different operational steps are contemplated. Also, some embodiments may perform some or all of the above operational steps in a different order. The modules are listed and described illustratively according to one embodiment and are not intended to indicate the necessity of any particular module or the exclusion of other potential modules (or functions / purposes applicable to any particular module).
[0082] In the above, reference has been made to various embodiments. However, it should be understood that the present disclosure is not limited to the specifically described embodiments. Instead, any combination of the described features and elements, whether related to different embodiments or not, is contemplated as implementing and practicing the present disclosure. Numerous modifications and variations may become apparent to those skilled in the art without departing from the scope of the described embodiments. Moreover, while embodiments of the present disclosure may realize advantages over other possible solutions or prior art, whether or not a particular advantage is realized by a given embodiment does not limit the present disclosure. Thus, the described aspects, features, embodiments, and advantages are merely exemplary and are not considered elements or limitations of the appended claims unless expressly recited in the claims.
[0083] The present invention may be a system, a method, and / or a computer program product, which may include a computer-readable storage medium (or media) having computer-readable program instructions for causing a processor to implement aspects of the present invention.
[0084] A computer-readable storage medium may be a tangible device capable of retaining and storing instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanical coding devices such as punch cards or ridge-in-groove structures having instructions recorded thereon, and any suitable combination of the above. As used herein, a computer-readable storage medium should not be construed as being a transitory signal per se, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse passing through a fiber optic cable), or an electrical signal transmitted over an electrical wire.
[0085] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions to a computer-readable storage medium within the respective computing / processing device for storage.
[0086] Computer-readable program instructions for implementing the operations of the present invention may be source or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Java®, Smalltalk®, C++, etc., and conventional procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry to perform aspects of the present invention.
[0087] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0088] These computer-readable program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, form means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may be stored on a computer-readable storage medium that can direct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular way, such that the computer-readable storage medium having the instructions stored thereon comprises an article of manufacture containing instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0089] The computer-readable program instructions may be loaded into a computer, other programmable data processing apparatus, or other device such that the instructions, which execute on the computer, other programmable apparatus, or other device, perform the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams, thereby causing a series of operational steps to be performed on the computer, other programmable apparatus, or other device to create a computer-implemented process.
[0090] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing specified logical functions. In some alternative implementations, the functions noted in the blocks may occur in an order other than that noted in the figures. For example, two blocks shown in succession may actually be implemented as a single step, executed simultaneously, substantially simultaneously, partially, or fully overlapping in time, or the blocks may possibly be executed in reverse order, depending on the functionality involved. It should also be noted that each block in the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by special-purpose hardware-based systems that perform the specified functions or operations or implement a combination of special-purpose hardware and computer instructions.
[0091] While the foregoing is directed to exemplary embodiments, other and further embodiments of the present invention may be devised without departing from its basic scope, which is determined by the appended claims. The description of various embodiments of the present disclosure has been presented for illustrative purposes and is not intended to be exhaustive or limited to the disclosed embodiments. Numerous modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used herein are chosen to explain the principles of the embodiments, practical applications, or technical improvements to technology found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
[0092] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of various embodiments. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms unless the context clearly indicates otherwise. The words "set," "group," "collection," and the like are intended to include one or more. Furthermore, it will be understood that the terms "includes" and / or "including," as used herein, indicate the presence of stated features, integers, steps, operations, elements, or components, or combinations thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups or combinations thereof. In the foregoing detailed description of exemplary embodiments of various embodiments, reference has been made to the accompanying drawings, which form a part hereof, and in which like numerals represent like elements, and in which specific exemplary embodiments in which the various embodiments may be practiced are shown by way of illustration. Although these embodiments have been described in sufficient detail to enable those skilled in the art to practice the embodiments, other embodiments may be used, and logical, mechanical, electrical, and other changes may be made without departing from the scope of the various embodiments. In the foregoing description, numerous specific details are set forth to provide a thorough understanding of the various embodiments. However, various embodiments may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail so as not to obscure the embodiments.
[0093] The description of various embodiments of the present disclosure is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Numerous modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used in this specification are chosen to explain the principles of the embodiments, practical applications, or technical improvements to technologies found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
Claims
1. 1. A system comprising: a memory for storing program instructions; a processor, coupled to the memory, In response to receiving a tape cartridge eject request for a tape cartridge in a tape drive, requesting a high resolution tape directory "HRTD" from a volatile memory of said tape drive; storing the HRTD in non-volatile memory in response to receiving the HRTD from the tape drive; the processor configured to execute instructions to perform operations including: A system comprising:
2. The operation is receiving a tape cartridge insertion request to insert the tape cartridge into the tape drive; transmitting the HRTD stored in the non-volatile memory to the tape drive; The system of claim 1 further comprising:
3. 2. The system of claim 1, wherein a hash code is received from the tape drive along with the HRTD, and the hash code is stored in the non-volatile memory along with the hash code.
4. 1. A tape library comprising: a memory including a non-volatile memory; a controller coupled to the memory, In response to receiving a tape cartridge eject request for a tape cartridge in a tape drive, requesting a high resolution tape directory (HRTD) from a volatile memory of the tape drive; storing the HRTD in the non-volatile memory in response to receiving the HRTD from the tape drive; the controller configured to perform operations including A tape library comprising:
5. The operation is receiving a tape cartridge insertion request to insert the tape cartridge into the tape drive; transmitting the HRTD stored in the non-volatile memory to the tape drive; 5. The tape library of claim 4, further comprising:
6. 5. The tape library of claim 4, wherein a hash code is received from the tape drive along with the HRTD, and the hash code is stored in the non-volatile memory along with the hash code.
7. The operation is discarding the HRTD from the non-volatile memory in response to the tape cartridge being removed from the tape library.
5. The tape library of claim 4, further comprising:
8. The operation is discarding the HRTD from the non-volatile memory in response to determining that a specified period of time has elapsed since the tape cartridge was removed from the tape library.
5. The tape library of claim 4, further comprising:
9. The operation is discarding the HRTD in response to removing the tape cartridge from the tape library and determining that the remaining free storage capacity in the non-volatile memory is less than a threshold.
5. The tape library of claim 4, further comprising:
Citation Information
Patent Citations
Information processor and information processing method, program, and recording medium
JP2006190391A
Storage device for eliminating overlapping of written record, and writing method thereof
JP2012094220A
Data writing device
JP2013058133A
Methods, systems, and programs for reducing total seek time on tape media.
JP2013538399A
Tape drive, method and program capable of using high resolution tape directory (HRTD) stored in end of data in index partition
JP2014081988A