High resolution tape catalog for magnetic tape based storage

By transferring the HRTD from volatile memory to non-volatile memory before unloading the tape cartridge, the problem of slow search speed of linear tape drives is solved, achieving faster search speed and more efficient use of storage space.

CN116615782BActive Publication Date: 2026-02-27INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180077780.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-11-24
Filing Date
2021-11-03
Publication Date
2026-02-27
Estimated Expiration
2041-11-03

AI Technical Summary

Technical Problem

Existing linear tape drives are slow when searching for target records because the High Resolution Tape Directory (HRTD) is discarded when the tape cartridge is unloaded and cannot be used in subsequent search operations.

Method used

The HRTD is read from the volatile memory of the tape drive and stored in non-volatile memory before the tape cartridge is unloaded, ensuring that it can still be used when the tape cartridge is inserted later.

Benefits of technology

It improves the search speed of tape drives, avoids wasting storage space, and ensures the validity of HRTD through a verification mechanism.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116615782B_ABST
    Figure CN116615782B_ABST
Patent Text Reader

Abstract

Prior to unloading a tape cartridge, a high resolution tape directory (HRTD) stored in volatile memory of a tape drive is transferred for storage in off-tape non-volatile memory. In response to the tape cartridge being loaded into the tape drive, the HRTD is received from the off-tape non-volatile memory.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present invention relates generally to magnetic tape based data storage devices, and more particularly to a high resolution tape directory (HRTD) for a magnetic tape based data storage device. BACKGROUND

[0002] Linear tape open (LTO) tape drives and IBM enterprise tape drives (TS11xx) are referred to as linear tape drives. Linear tape drives allocate data along a longitudinal direction on a tape and record data from the beginning to the end of the tape, then move position slightly along a transverse direction of the tape, and then record data along the opposite longitudinal direction to the tape. Linear tape drives repeat this shuttle operation several times with a shift along the transverse direction of the tape.

[0003] In case a seek command is received, it is not a simple process to move to the physical location of the target record. For example, when 10 TB of data is stored as 128 KB records, 40,000,000 records are needed, and it is not possible to record the physical location of all records. In addition, unlike a hard disk drive (HDD), a tape device can modify the record length of each record in general. For this reason, a simple calculation formula cannot be used to determine the physical location.

[0004] A seek operation includes moving the tape to the beginning of the area where the target record exists, and reading records from the beginning of the area until the target record is reached. Information about the area read during the seek operation is accumulated in a volatile memory of the tape drive. This area information table is referred to as a high resolution tape directory (HRTD). The HRTD can be used to improve the seek time of the records included in the HRTD. SUMMARY

[0005] According to one aspect of the present invention, a method is provided, comprising reading a tape directory from a cartridge memory of a tape cartridge in a first tape drive. The method further comprises using the tape directory to seek a target record. Physical locations of a plurality of different records that have been read during the seek are stored in a volatile memory of the first tape drive as a high resolution tape directory HRTD. Prior to unloading the tape cartridge, the HRTD stored in the volatile memory is transferred for storage in an off-tape non-volatile memory. In response to the tape cartridge being loaded into the tape drive, the HRTD is received from the off-tape non-volatile memory. The method allows the HRTD to be maintained to potentially increase seek speed, which would otherwise be discarded.

[0006] Optionally, when the off-tape non-volatile storage is part of a tape library, the method further comprises: responsive to the tape cartridge being removed from the tape library, exporting the HRTD from the off-tape non-volatile storage. This can allow the tape library to free up storage space for other uses while retaining the HRTD.

[0007] Optionally, when the off-tape non-volatile storage is part of a tape library, the method further comprises: responsive to the tape cartridge being removed from the tape library, discarding the HRTD from the off-tape non-volatile storage. This can allow the tape library to free up storage space for other users. Optionally, the discarding is further based on a specified time period having elapsed since the tape cartridge was removed from the tape library. This can allow the HRTD to be retained for a period of time after the tape cartridge is removed while still allowing the tape library to free up storage space.

[0008] Optionally, the method further comprises: generating a hash code using tape-specific information, wherein the hash code is transmitted with the HRTD for storage in the off-tape non-volatile storage. This can allow the HRTD to be subsequently verified to determine whether it is valid for the tape cartridge. Optionally, when the hash code is received from the off-tape non-volatile storage with the HRTD, the method further comprises: verifying the hash code using tape-specific information from the tape cartridge. This can prevent the use of an invalid HRTD based on a tape cartridge that does not correspond to the HRTD or a tape that has been written to after the HRTD was created.

[0009] According to another aspect of the application, there is provided a tape drive comprising: a memory comprising volatile storage; and a controller coupled to the memory. The controller is configured to perform operations from the above-described method.

[0010] According to another aspect of the application, there is provided a system comprising: a memory containing program instructions; and a processor coupled to the memory. The processor is configured to execute the instructions to perform operations comprising: responsive to receiving a tape cartridge eject request for a tape cartridge in a tape drive, requesting a high resolution tape directory (HRTD) from volatile storage of the tape drive; and responsive to receiving the HRTD from the tape drive, storing the HRTD in non-volatile storage. The system allows the HRTD to be retained in cases where it would otherwise be discarded.

[0011] Optionally, the operations further comprise: receiving a tape cartridge insertion request for inserting the tape cartridge into the tape drive; and sending the HRTD stored in the non-volatile storage to the tape drive. This can allow the tape drive to use the HRTD to perform faster lookups.

[0012] According to another aspect of the present application, there is provided a tape library comprising: a memory comprising a non-volatile memory; and a controller coupled to the memory, the controller configured to perform operations comprising: responsive 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 responsive to receiving the HRTD from the tape drive, storing the HRTD in the non-volatile memory. The tape library allows the HRTD to be maintained in cases where the HRTD would otherwise be discarded.

[0013] Optionally, the operations further comprise: 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. This can allow the tape drive to use the HRTD to perform faster lookups.

[0014] Optionally, the operations further comprise: responsive to the tape cartridge being removed from the tape library, discarding the HRTD, and determining that a remaining free storage capacity in the non-volatile memory is below a threshold. This can allow the tape library to maintain the HRTD when the tape cartridge has been removed, while allowing the tape library to free up storage space when needed.

[0015] The above Summary is not intended to describe each illustrated embodiment or every implementation of the present disclosure. BRIEF DESCRIPTION OF DRAWINGS

[0016] The drawings included in the present application are incorporated into - and make part of - the specification. The drawings illustrate embodiments of the present disclosure and, together with the specification, serve to explain principles of the present disclosure. The drawings are only illustrations of particular embodiments and do not limit the present disclosure.

[0017] Figure 1 depicts a tape storage system according to embodiments of the present disclosure;

[0018] Figure 2 depicts a second tape storage environment according to embodiments of the present disclosure;

[0019] Figure 3 depicts a flowchart of a method for handling tape cartridge insertion into a tape drive according to embodiments of the present disclosure;

[0020] Figure 4 depicts a flowchart of a method for handling tape eject requests according to embodiments of the present disclosure;

[0021] Figure 5 depicts a method for operating a tape drive according to embodiments of the present disclosure;

[0022] Figure 6 A high-level block diagram of an example computer system according to embodiments of the present disclosure is depicted.

[0023] While the invention may have various modifications and substitutions, its details have been shown by way of example in the accompanying drawings and will be described in detail. However, it should be understood that the purpose is not to limit the invention to the specific embodiments described. Rather, the invention covers all modifications, equivalents, and substitutions that fall within its scope. Detailed Implementation

[0024] This disclosure relates to improving seek time in magnetic tape storage devices, and more specifically to storing high-resolution magnetic tape catalogs in non-volatile memory. While this disclosure is not necessarily limited to such applications, various aspects of this disclosure will be understood through the discussion of various examples using this context.

[0025] Linear Magnetic Open (LTO) tape drives and IBM Enterprise Tape Drives (TS11xx) are referred to as linear tape drives. A linear tape drive distributes data on the tape longitudinally, recording data from the beginning to the end of the tape. It then slightly shifts position laterally, and then records data back onto the tape in the opposite longitudinal direction. The linear tape drive repeats this reciprocating operation several times while shifting laterally. The logical end of the tape is determined when all areas of the tape have been written to.

[0026] In this operation, a linear line of data from the beginning to the end or from the end to the beginning of the tape is called a wrap. The number of wraps depends on the type and size of the cartridge. In the case of LTO and TS11xx tape drives, the number of wraps ranges from 48 to 208. The data writing area of ​​the tape is divided into four sections in the horizontal direction, each section comprising a quarter of the wrap. Each of these sections is called a data tape. The tape drive is recognized as a streaming device by the computer connected to it and is typically operated via the Small Computer System Interface (SCSI) command set.

[0027] Data on a tape drive is logically classified roughly into actual data (records) and delimiters (file marks: FMs). The tape drive assigns a number sequentially to logical data (records and FMs) written from the beginning. The tape drive holds current position information, which can be acquired by a Read Position command. The tape drive provides a command (a locate command) for changing the current position. Using Locate, Space, and Rewind commands, the current position can be changed. Upon receiving a locate command, LTO and TS11xx tape drives wrap the tape so as to position the head of the tape drive to the tape position where recording has been performed. Upon receiving a Read command, the tape drive reads 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 logical data received from the computer to the current position, increments the current position, and then sets the current position to the end of logical data (EOD). In other words, upon receiving a Write command, the tape drive writes logical data received from the computer to the current position, increments the current position by 1, and then invalidates data after the incremented current position.

[0028] In response to receiving a locate command, the tape drive cannot simply move to the physical position of a target record. For example, when 10 TB of data is stored as 128 KB records, 40,000,000 records are required, and it is impossible to record the physical positions of all the records. In addition, unlike a hard disk drive (HDD), a tape device can generally modify the record length of each record. For this reason, a physical position cannot be determined with a simple calculation formula.

[0029] An LTO drive implements a standardized mechanism called a tape directory (TD), which allows estimation of a physical position, and writes a TD appropriately to a nonvolatile memory in a cartridge. In the case of LTO, a TD stores the number of records and the number of FMs written in the first half of each volume and the number of records and the number of FMs written in the second half of each volume. In the case of TS11xx, a TD stores the number of records and the number of FMs written in each volume. By referring to a TD, it is possible to know the volume and the area of the volume where a target record is located.

[0030] The seek operation includes moving the tape to the beginning of the area in which the target record resides and reading the records from the beginning of the area until the target record is reached. Information about the area read during the seek operation is accumulated in the volatile memory of the tape drive. The area information accumulated in this operation includes the number of records written into the area obtained by dividing each volume by a number from 32 to 128 and the number of FM. This area information table is referred to as a high resolution tape directory (HRTD).

[0031] TS11xx drives store the HRTD in the management area of the tape when writing records. However, in the case of LTO drives, since the use of the management area of the tape is strictly defined by the LTO format specification, it is not allowed to store the HRTD on the tape. Therefore, when unloading the tape cartridge, the LTO drive discards the HRTD in the volatile memory of the drive. For this reason, LTO tape drives are generally slower in seeking to records that have not been accessed since the tape cartridge has been inserted compared to TS11xx tape drives.

[0032] Methods, systems, and computer program products for storing HRTD data in off-tape non-volatile memory when unloading a tape cartridge from a tape drive are described herein. In embodiments, a host computing device or tape library reads the HRTD from the tape drive and stores the HRTD prior to unloading the tape cartridge. Then, when the tape cartridge is subsequently inserted into the tape drive, the host computing device or tape library sends the stored HRTD to the tape drive to allow the tape drive to use the previously generated HRTD data for subsequent seeks. Thus, embodiments can be particularly beneficial for tape drives such as LTO tape drives that would otherwise not have access to the HRTD due to the HRTD typically being discarded when a tape cartridge is unloaded from the tape drive. For example, the HRTD can provide LTO drives with the ability to seek to records that have not been accessed since the tape cartridge was inserted at speeds equal to that of TS11xx drives. Additionally, embodiments can also provide benefits to other types of tape drives by providing an alternative storage location for the HRTD, thereby freeing up storage space for other uses.

[0033] Commands for retrieving HRTDs from tape drives and commands for sending stored HRTDs to tape drives can be provided. In some embodiments, the commands can be provided by defining new pages in existing SCSI commands, such as Mode Sense and Mode Select, or commands similar to Read Buffer and Write Buffer. Alternatively, the commands can be provided by defining new vendor unique commands. In this disclosure, commands referred to as GET_HRTD are used to refer to commands for retrieving HRTDs from tape drives, and commands referred to as SET_HRTD are used to refer to commands for sending stored HRTDs to tape drives.

[0034] If the tape is subsequently modified and the HRTD is not updated, the HRTD for the tape cartridge can become invalid. In some embodiments, the tape drive also provides verification data based on tape specific information when providing the HRTD, which can be used to verify that the HRTD is valid. For example, the tape drive can generate a hash code using the tape specific information and provide the hash code along with the HRTD. The tape specific information can include information stored in the non-volatile memory of the tape cartridge that describes the tape. For example, the tape specific information can include an identifier such as a tape serial number created by the manufacturer and a write pass value indicating the number of write attempts that have been made on the tape.

[0035] Any suitable hash algorithm can be used to generate the hash code. The verification data can be used to prevent the use of an incorrect HRTD when the tape has been modified since the HRTD was created. In some embodiments, the host computing device or tape library can provide the verification data to the tape drive along with the HRTD, and the tape drive can check the verification data with the tape specific information for the loaded tape cartridge. For example, the tape drive can compute a new hash code based on the tape specific information (tape serial number, write pass) and compare the new hash code to the hash code received from the host computing device or tape library. If the tape serial numbers do not match, or if the tape has been written to by another application such that the write pass count is increased, the hash codes will not match, indicating that the HRTD is invalid.

[0036] In embodiments where the HRTD is stored by the tape library, the HRTD can be maintained as long as the corresponding tape cartridge remains in the tape library. However, storage space in the tape library can be limited, such that at some point it can be necessary to discard HRTD data to free up storage space. When a tape cartridge is removed from the tape library, the tape library can be configured to handle the corresponding HRTD in different ways.

[0037] In some embodiments, the HRTD is saved for a period of time after the corresponding tape cartridge is removed from the tape library. For example, the tape library can discard the HRTD after a specified period of time has elapsed since the corresponding tape cartridge was removed from the tape library. Alternatively, the tape library can discard the HRTD based on the amount of free storage capacity remaining in the non-volatile memory. For example, the tape library can discard the HRTD if the corresponding tape cartridge has been removed from the tape library and the amount of free storage capacity remaining is below a threshold. In some embodiments, a combination of the time elapsed since the corresponding tape cartridge was removed and the amount of storage capacity remaining can be used. For example, the tape library can discard the HRTD if the amount of free storage capacity remaining 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 that has elapsed since the tape cartridge was removed, the tape library can generate a timestamp when the tape cartridge is removed and store the timestamp in association with the corresponding HRTD.

[0038] In some embodiments, the tape library can export the HRTD when the corresponding tape cartridge is removed from the tape library. For example, the tape library can be configured to communicate the HRTD to a host computing device in communication with the tape library. The tape library can also be configured to import the HRTD when the corresponding tape cartridge is subsequently inserted. For example, the tape library can communicate a request for the HRTD to the host computing device when the corresponding tape cartridge is inserted into the tape library.

[0039] In some embodiments, the tape library can simply discard the HRTD when the corresponding tape cartridge is removed. While this frees up storage space on the tape library, the benefits of retaining the HRTD can be lost if the corresponding tape cartridge is subsequently inserted into the tape library.

[0040] Reference is now made to Figure 1 depicts a tape storage system 100 in accordance with embodiments of the present disclosure. The tape storage system 100 includes a host computing device 110 and a tape drive 120. The host computing device 110 can be communicatively coupled to the tape drive 120 via one or more interfaces. In some embodiments, the host computing device 110 can communicate with the tape drive 120 over one or more networks.

[0041] The host computing device 110 can be any suitable computing device, such as described with reference to Figure 6The computer system 601 described herein includes a host computing device 110 comprising a magnetic tape storage module 114 and a non-volatile memory 118. The magnetic tape storage module 114 may be any combination of hardware and software components configured to communicate with a tape drive 120. For example, the magnetic tape storage module 114 may include program instructions executable by a processor to transmit commands to the tape drive 120 and process information received from the tape drive 120. The host computing device 110 also includes the non-volatile memory 118. The non-volatile memory 118 may be any suitable non-volatile storage component that retains information after a power-on restart. As described herein, the non-volatile memory 118 may store HRTD data received from the tape drive 120.

[0042] Tape drive 120 can be any suitable type of tape drive. As previously described, aspects of this disclosure are particularly advantageous for tape drives such as LTO tape drives configured to discard HRTD data upon ejection of the tape cassette without storing the data in non-volatile memory. Tape drive 120 may include controller 124. Controller 124 may be or include a processor and / or any logic for controlling any subsystem of tape drive 120. For example, controller 124 typically controls head functions such as servo follow, data writing, data reading, etc. Controller 124 can operate under logic known in the art and any logic disclosed herein, and therefore can therefore be considered, in various embodiments, a processor for any description of the tape drive included herein. Controller 124 may be coupled to memory 126 of any known type, which may store instructions executable by controller 124. Furthermore, controller 124 may be configured and / or programmable to perform or control some or all of the methods presented herein. Therefore, controller 124 can be considered to be configured to perform various operations by logic, software, firmware, and / or other instructions that are programmed into one or more chips, modules and / or blocks, and combinations thereof.

[0043] Memory 126 may be a combination of one or more storage devices. Memory 126 includes volatile memory 128. Controller 124 may be configured to store information related to the tape cartridge loaded in tape drive 120 in volatile memory 128. For example, the controller may read a TD from the cartridge memory of the loaded tape cartridge and store the TD in volatile memory 128. Furthermore, the controller may use the TD in volatile memory 128 to execute lookup commands and may store the recorded physical location as an HRTD in volatile memory 128. Additionally, the controller may read tape-specific information from the cartridge memory and use that information to generate verification data as described herein.

[0044] Reference is now made to Figure 2 FIG. 2 depicts a second magnetic tape storage environment 200, in accordance with embodiments of the present disclosure. The environment 200 includes a host computing device 210 and a tape library 220. The host computing device 210 can be communicatively coupled to the tape library 220 via one or more interfaces. In some embodiments, the host computing device 210 can communicate with the tape library 220 over one or more networks.

[0045] The host computing device 210 can be any suitable computing device, such as the computer system 601 described with reference to FIG. 1. The host computing device 210 includes a tape library storage module 214 and a non-volatile memory 218. The tape library storage module 214 can be any combination of hardware and software components configured to communicate with the tape library 220. For example, the tape library storage module 214 can include program instructions executable by a processor for communicating commands to the tape library 220 and processing information received from the tape library 220. The host computing device 210 also includes a non-volatile memory 218. The non-volatile memory 218 can be any suitable non-volatile memory component that retains information after a power restart. As described herein, the non-volatile memory 218 can store HRTD data derived from the tape library 220. Figure 6

[0046] The tape library 220 includes a controller 224, a memory 226, tape cartridge slots 230, and tape drives 240. The controller 224 can be or include a processor and / or any logic for controlling any subsystems of the tape library 220. For example, the controller 224 can control the transfer of tape cartridges between the tape cartridge slots 230 and the tape drives 240. The controller 124 can operate under logic known in the art as well as any logic disclosed herein, and thus can be considered in various embodiments to be a processor for any description of a tape drive included herein. The controller 224 can be coupled to any known type of memory 226, which can store instructions executable by the controller 224. Further, the controller 224 can be configured and / or programmable to perform or control some or all of the methods presented herein. Thus, the controller 224 can be considered to be configured to perform various operations by logic programmed into one or more chips, modules, and / or blocks, software, firmware, and / or other instructions available to one or more processors, etc., as well as combinations thereof.

[0047] The memory 226 includes a non-volatile memory 228. The non-volatile memory 228 can be any suitable non-volatile memory component that retains information after a power restart. As described herein, the non-volatile memory 228 can store HRTD data received from the tape drives 240. ​

[0048] The tape cartridge slot 230 can include any number of slots for holding a tape cartridge within the tape library 220. The tape library 220 can be configured to automatically remove a tape cartridge from one of the tape cartridge slots 230 and insert it into the tape drive 240. The tape library 220 can also be configured to eject a tape cartridge from the tape drive 240 and insert it into one of the tape cartridge slots 230.

[0049] The tape drive 240 can include a controller 244. The controller 244 can be or include a processor and / or any logic for controlling any subsystems of the tape drive 240. For example, the controller 244 generally controls head functions such as servo following, data writing, data reading, etc. The controller 244 can operate under logic known in the art as well as any logic disclosed herein, and thus can be considered in various embodiments to be a processor for any description of a tape drive included herein. The controller 244 can be coupled to any known type of memory 246, which can store instructions executable by the controller 244. Further, the controller 244 can be configured and / or programmable to perform or control some or all of the methods presented herein. Thus, the controller 244 can be considered to be configured to perform various operations by logic programmed into one or more chips, modules, and / or blocks, software, firmware, and / or other instructions available to one or more processors, etc., as well as combinations thereof.

[0050] The memory 246 can be a combination of one or more memory devices. The memory 246 includes a volatile memory 248. The controller 244 can be configured to store information related to a tape cartridge loaded in the tape drive 240 in the volatile memory 248. For example, the controller can read a TD from the cartridge memory of the loaded tape cartridge and store the TD in the volatile memory 248. Further, the controller can use the TD in the volatile memory 248 to perform a find command and can store the recorded physical location as an HRTD in the volatile memory 248. Additionally, the controller can read tape specific information from the cartridge memory and use the information to generate verification data as described herein. While the tape library 220 is depicted as having a single tape drive, the tape library can have any number of tape drives.

[0051] Referring now to Figure 3 , a flowchart of a method 300 for processing a tape cartridge insertion into a tape drive according to embodiments of the present disclosure is shown. Some or all of the method 300 can be performed by a host computing device. For example, the method 300 can be performed by the tape storage module 114 of the host computing device 110 described with reference to Figure 1 , a flowchart of a method 300 for processing a tape cartridge insertion into a tape drive according to embodiments of the present disclosure is shown. Some or all of the method 300 can be performed by a host computing device. For example, the method 300 can be performed by the tape storage module 114 of the host computing device 110 described with reference to Figure 1The tape library storage module 214 of the host computing device 210 described herein is executed. Figure 3 This will be described herein as being executed by a host computing device; however, in some embodiments, some or all of method 300 may be executed by tape library 220. For example, program instructions for executing method 300 may be included in memory 246 for execution by controller 224 in tape library 220.

[0052] In operation 310, the host computing device receives a tape cassette insertion request. For example, the host computing device may be notified that a tape cassette has been inserted into a tape drive. A tape cassette insertion request can occur in response to a user manually inserting a tape cassette into a tape drive or an automated process in a tape library. In operation 320, the host computing device determines whether the HRTD is stored in the non-volatile memory corresponding to the tape cassette. In some embodiments, the host computing device uses the tape cassette's identifier to search for HRTD data in the 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 use a tape identifier such as a serial number to identify the corresponding HRTD. In some embodiments, the host computing device searches for HRTD data stored in the non-volatile memory of a tape library housing tape drives.

[0053] If the HRTD corresponding to the tape cartridge is available in operation 320, then in operation 330, the HRTD is sent to the tape drive. For example, the host computing device may read the HRTD from non-volatile memory and use the SET_HRTD command to transfer the HRTD to the tape drive to store the HRTD in the volatile memory of the tape drive.

[0054] After operation 330 sends the HRTD to the tape drive, or after operation 320 determines that the HRTD corresponding to the tape cassette is unavailable, operation 340 completes the tape cassette insertion to allow commands to be executed on the tape.

[0055] Now for reference Figure 4 A flowchart depicts a method 400 for processing a tape ejection request according to embodiments of the present disclosure. Some or all of method 400 may be executed by a host computing device. For example, method 400 may be provided by reference to [reference needed]. Figure 1 The tape storage module 114 of the host computing device 110 described or referenced Figure 1 The tape library storage module 214 of the host computing device 210 described herein is executed. Figure 4It will be described herein as being performed by a host computing device; however, in some embodiments, some or all of the method 400 can be performed by the tape library 220. For example, program instructions for performing the method 400 can be included in the memory 246 for execution by the controller 224 in the tape library 220.

[0056] At operation 410, the host computing device receives a tape cartridge eject request. The eject request can occur in response to a manual action by a user or an automatic action by the tape library. At operation 420, the host computing device requests the HRTD corresponding to the tape cartridge from the tape drive. For example, the host computing device can issue a GET HRTD command to the tape drive. In response to the request, the tape drive can read the HRTD from its volatile memory and transmit the HRTD to the host computing device or the tape library.

[0057] At operation 430, the host computing device saves 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 the tape library that houses the tape drive. The non-volatile memory can store HRTDs for a plurality of different tape cartridges. The HRTDs can 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. At operation 440, the host computing device issues an unload command to the tape drive.

[0058] Reference is now made to Figure 5 , depicting a method 500 for operating a tape drive, in accordance with embodiments of the present disclosure. The method 500 can be performed by a controller of a tape drive, such as the controller 124 of the tape drive 120 described with reference to Figure 1 , or the controller 244 of the tape drive 240 described with reference to Figure 2 .

[0059] At operation 510, the tape drive receives a tape cartridge. For example, a user can manually insert a tape cartridge into the tape drive, or the tape library can automatically insert a tape cartridge. The tape drive can be configured to read a tape cartridge identifier such as a serial number from the cartridge memory of the tape cartridge and transmit the identifier to the host computing device. At operation 520, the tape drive reads the tape directory from the cartridge memory of the tape drive. The tape drive can store the tape directory in its volatile memory.

[0060] At operation 530, the HRTD is received by the tape drive and stored in the volatile memory of the tape drive. The HRTD can be transferred from the host computing device or the non-volatile memory of the tape library to the tape drive using, for example, 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 can be configured to verify the hash code using the tape specific information from the tape cartridge. For example, the tape drive can calculate a new hash code and determine whether it matches the received hash code. If the hash code is not verified, the tape drive can discard the HRTD. If an HRTD for the tape cartridge has not been previously generated, operation 530 can not occur.

[0061] At operation 540, the tape drive locates the target record using the tape directory and / or the HRTD. Operation 540 can occur in response to receiving a locate command from the host computing device or the tape library. The locate operation can include moving the tape to the beginning of the region in which the target record exists based on the tape directory and reading the records from the beginning of the region until the target record is reached.

[0062] At operation 550, the HRTD data is stored in the volatile memory of the tape drive using the physical location of the record identified during the locate in operation 540. If an HRTD does not already exist for the tape cartridge, a new HRTD can be created. Alternatively, the HRTD data can be added to an existing HRTD.

[0063] At operation 560, the tape drive receives a request for the HRTD. For example, the tape drive can receive a GET HRTD command from the host computing device in response to a request to remove the tape cartridge from the tape drive.

[0064] At operation 570, the tape drive sends the HRTD to the host computing device or the tape library for storage in non-volatile memory. In some embodiments, the tape drive can generate verification data, such as a hash code, using tape specific information (e.g., tape serial number, write pass) and send the hash code along with the HRTD.

[0065] At operation 580, the tape drive receives a tape cartridge unload command. At operation 590, the tape cartridge is unloaded from the tape drive.

[0066] Reference is now made to Figure 6FIG. 6 shows a high-level block diagram of an example computer system 601 that can be used to implement one or more of the methods, tools, and modules described herein, as well as any related functionality (e.g., using one or more processor circuits or computer processors of a computer), according to embodiments of the present disclosure. In some embodiments, the primary components of the computer system 601 can 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 can 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.

[0067] The computer system 601 can include one or more general-purpose programmable central processing units (CPUs) 602A, 602B, 602C, and 602D, hereinafter generically referred to as the CPU 602. In some embodiments, the computer system 601 can include multiple processors typical of many- threaded or multi-core processors that are common in current technologies. However, in other embodiments, the computer system 601 can alternatively be a single CPU system. Each CPU 602 can execute instructions stored in the memory subsystem 604 and can include one or more levels of on-board cache.

[0068] The system memory 604 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 622 or cache 624. Computer system 601 can further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, a storage system 626 can be provided for reading from and writing to non-removable, non-volatile magnetic media (e.g., a "hard drive"). Although not explicitly shown, a magnetic disk drive can also be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive can be provided for reading from or writing to a removable, non-volatile optical disk (such as a CD-ROM, DVD-ROM, etc.). Additionally, the memory 604 can include flash memory, such as a flash memory stick drive or flash drive. The storage devices can be connected to the memory bus 603 by one or more data media interfaces. The memory 604 can include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of the different embodiments.

[0069] One or more programs / utilities 628 can be stored in the memory 604, each of the programs / utilities 628 having at least one set of program modules 630. Programs / utilities 628 can include an operating system, one or more applications, other program modules, and program data. Each of the operating system, one or more applications, other program modules, and program data, or some combination thereof, can include an implementation of a networking environment. Program modules 630 generally carry out the functions or methodologies of various embodiments.

[0070] Although the memory bus 603 is shown in Figure 6 as a single bus structure providing a direct communication path between the CPU 602, the memory subsystem 604, and the I / O bus interface 610, in some embodiments the memory bus 603 can comprise multiple different buses or communication paths, which can be arranged in any of various forms, such as a hierarchy of point-to-point links, a star or mesh configuration, multiple layers of buses, parallel and redundant paths, or any other appropriate type of configuration. Moreover, although the I / O bus interface 610 and the I / O bus 608 are shown as separate respective units, in some embodiments the computer system 601 can incorporate multiple I / O bus interface units 610, multiple I / O buses 608, or both. Further, although shown with multiple I / O interface units separating the I / O bus 608 from various communication paths extending to various I / O devices, in other embodiments some or all of the I / O devices can connect directly to one or more of the system I / O buses.

[0071] In some embodiments, the computer system 601 can be a multi-user large

[0072] Note that Figure 6 is intended to depict only a representative Figure 6 of the components of an example computer system 601. In some embodiments, individual components can have greater or lesser complexity than represented in Figure 6 , different names can be assigned to each component or group of components, and the particular number of components and their configuration can vary. For example, in some embodiments, the computer system 601 can include multiple CPUs and / or multiple buses. In some embodiments, the computer system 601 can include a memory hierarchy that includes multiple levels of caches, multiple buses, and a combination of multiple types of memory.

[0073] In some embodiments, a method comprises: reading a tape directory from cartridge memory of a tape cartridge in a first tape drive; using the tape directory to find a target record; storing physical locations of a plurality of different records that have been read during the finding in a volatile memory of the first tape drive as a high resolution tape directory (HRTD); prior to unloading the tape cartridge, transferring the HRTD stored in the volatile memory for storage in off-tape non-volatile memory; and responsive to the tape cartridge being loaded into a second tape drive, receiving the HRTD from the off-tape non-volatile memory to the second tape drive.

[0074] In some embodiments of the method, the off-tape non-volatile memory is part of a tape library. In some embodiments, the method further comprises: responsive to the tape cartridge being removed from the tape library, exporting the HRTD from the off-tape non-volatile memory. In some embodiments, the method further comprises: based on the tape cartridge being removed from the tape library, discarding the HRTD in the off-tape non-volatile memory. 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.

[0075] In some embodiments, the off-tape non-volatile memory is part of a host computing device.

[0076] In some embodiments, the method further comprises: generating a hash code using the tape specific information, wherein the hash code is transferred with the HRTD for storage in the off-tape non-volatile memory. In some embodiments, the hash code is received with the HRTD from the off-tape non-volatile memory, the method further comprising: verifying the hash code using the tape specific information from the tape cartridge.

[0077] In some embodiments, a tape drive comprises: a memory comprising a volatile memory; and a controller coupled to the memory, the controller configured to perform operations comprising: reading a tape directory from cartridge memory of a tape in a first tape drive; using the tape directory to find a target record; storing physical locations of a plurality of different records that have been read during the finding in the volatile memory as a high resolution tape directory (HRTD); storing the HRTD stored in the volatile memory to off-tape non-volatile memory; and responsive to the tape being loaded into a second tape drive, sending the HRTD from the off-tape non-volatile memory to the second tape drive.

[0078] In some embodiments, the operations further include generating a hash code using the tape specific information, wherein the hash code is transmitted with the HRTD for storage in the off-tape non-volatile memory. In some embodiments, the hash code is received with the HRTD from the off-tape non-volatile memory, and wherein the operations further include verifying the hash code using the tape specific information from the tape cartridge.

[0079] In some embodiments, a system includes a memory including program instructions; and a processor coupled to the memory, the processor configured to execute the instructions to perform operations including: responsive 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 responsive to receiving the HRTD from the tape drive, storing the HRTD in a non-volatile memory. 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. In some embodiments, 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.

[0080] In some embodiments, a tape library includes: a memory including a non-volatile memory; and a controller coupled to the memory, the controller configured to perform operations including: responsive 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 responsive to receiving the HRTD from the tape drive, storing the HRTD in the non-volatile memory.

[0081] 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.

[0082] In some embodiments, 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.

[0083] In some embodiments, the operations further include: responsive to the tape cartridge being removed from the tape library, discarding the HRTD from the non-volatile memory.

[0084] In some embodiments, the operations further include: responsive to determining that a specified period of time has passed since the tape cartridge was removed from the tape library, discarding the HRTD from the non-volatile memory.

[0085] In some embodiments, the operations further include discarding the HRTD in response to the tape cartridge being removed from the tape library, and determining that a remaining free storage capacity in the non-volatile memory is below a threshold.

[0086] In addition to the embodiments described above, other embodiments can be conceived with fewer operational steps, more operational steps, or different operational steps. Moreover, some embodiments can perform some or all of the operational steps in a different order. Modules are illustratively listed and described in accordance with embodiments, and are not meant to indicate the necessity of a particular module or exclusivity of other potential modules (or functionality / purpose applied to a particular module).

[0087] In the foregoing, various embodiments have been referenced. It is to be understood, however, that the present disclosure is not limited to the embodiments specifically described. Rather, any combination of the features and elements described is contemplated as implementing and practicing the present disclosure, whether or not involving different embodiments. Numerous modifications and variations are apparent to those of ordinary skill in the art in light of the described embodiments. Moreover, although the embodiments of the present disclosure can achieve advantages over other possible solutions or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of this disclosure. Thus, the described aspects, features, embodiments, and advantages are merely illustrative, and are not considered elements or limitations of the attached claims except as explicitly recited in the claims.

[0088] The present application can be a system, a method, and / or a computer program product. The computer program product can include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present application.

[0089] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium can 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 foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch cards or

[0090] The computer readable program instructions described herein can be downloaded to respective computing / processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and / or a wireless network. The network can comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer readable program instructions from the network and forwards the computer readable program instructions into the computing / processing device for storage in a computer readable storage medium within the respective computing / processing device.

[0091] Computer readable program instructions for carrying out operations of the present application can be assembly instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions can execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection can be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) can execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present application.

[0092] Aspects of the present application 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 application. 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.

[0093] These computer readable program instructions can 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, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks. These computer readable program instructions can also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including

[0094] The computer readable program instructions can also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational acts to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0095] The computer program product of the present application can be a computer program product which implements the methods of the present application. The computer program product can comprise a computer-readable storage medium having stored thereon a computer program of the present application. A computer program can also reside in the memory of one or more computer systems (e.g., one or more computers) during runtime and execute the program. The computer program can also include machine readable instructions for operating a computer system according to the methods of the present application. The instructions can reside in the memory of one or more computer systems (e.g., one or more computers) during runtime and execute the program. The computer program can also include machine readable instructions for operating a computer system according to the methods of the present application. The instructions can reside in the memory of one or more computer systems (e.g., one or more computers) during runtime and execute the program.

[0096] While the foregoing is directed to exemplary embodiments, other and further embodiments of the application can be devised without departing from the basic scope thereof. The description of various embodiments of the present disclosure is presented for purposes of illustration and description, but is not intended to be exhaustive or to limit the present disclosure to the precise embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application, or technical improvement over technologies found in the marketplace, or to enable others skilled in the art to understand the embodiments disclosed herein.

[0097] 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 as well, unless the context clearly indicates otherwise. "One," "a," or "an" are used to mean one or more than one, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and / or "comprising," when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. In the previous detailed description of exemplary embodiments of the various embodiments, reference has been made to the accompanying drawings (where like numerals represent like elements), which form a part of the detailed description, and in which are shown by way of illustration specific exemplary embodiments in which the various embodiments can be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the embodiments, but other embodiments can be utilized and logical, mechanical, electrical, and other changes can be made without departing from the scope of the various embodiments. In the previous description, numerous specific details are set forth in order to provide a thorough understanding of the various embodiments. However, various embodiments can be practiced without the specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the understanding of this description.

[0098] The description of various embodiments of the disclosure has been presented for purposes of illustration but is not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the described embodiments. The terminology used herein was chosen to explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others skilled in the art to understand the embodiments disclosed herein.

Claims

1. A method for use in a tape drive, comprising: reading a tape directory from a cartridge memory of a tape cartridge in a tape drive, wherein the tape drive and a cartridge slot of the tape cartridge are located in a tape library; using the tape directory to locate a target record; storing physical locations of a plurality of different records that have been read during the locating as a high resolution tape directory (HRTD) in a volatile memory of the tape drive; transferring the HRTD stored in the volatile memory to outside of the tape drive and to a non-volatile memory outside of the tape library prior to unloading the tape cartridge; and in response to the tape cartridge being loaded into the tape drive, the tape drive receiving the HRTD from the non-volatile memory.

2. The method of claim 1, further comprising: in response to the tape cartridge being removed from the tape library, the HRTD being exported from the non-volatile memory.

3. The method of claim 1, further comprising: based on the tape cartridge being removed from the tape library, the HRTD in the non-volatile memory being discarded.

4. The method of claim 3, wherein, the discarding being further based on a specified period of time having elapsed since the tape cartridge was removed from the tape library.

5. The method of any one of claims 1-4, wherein, the non-volatile memory is part of a host computing device.

6. The method of claim 1, further comprising: generating a hash code using tape specific information, wherein the hash code is transferred with the HRTD for storage in the non-volatile memory.

7. The method of claim 6, wherein, the hash code is received with the HRTD from the non-volatile memory, the method further comprising verifying the hash code using tape specific information from the tape cartridge.

8. A tape drive, comprising: 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 cartridge in a tape drive, wherein the tape drive and a cartridge slot of the tape cartridge are located in a tape library; using the tape directory to locate a target record; storing physical locations of a plurality of different records that have been read during the locating as a high resolution tape directory (HRTD) in the volatile memory; transferring the HRTD stored in the volatile memory to outside of the tape drive and to a non-volatile memory outside of the tape library prior to unloading the tape cartridge; and in response to the tape cartridge being loaded into the tape drive, the tape drive receiving the HRTD from the non-volatile memory.

9. The magnetic tape drive of claim 8, wherein, the operations further including generating a hash code using tape specific information, wherein the hash code is transferred with the HRTD for storage in the non-volatile memory.

10. The magnetic tape drive of claim 9, wherein, the hash code is received with the HRTD from the non-volatile memory, and wherein the operations further include verifying the hash code using tape specific information from the tape cartridge.

11. A system for use in a tape drive, comprising: a memory containing program instructions; and a processor coupled to the memory, the processor configured to execute the instructions to perform operations including: in response to receiving a cartridge eject request for a cartridge in a tape drive, requesting a high resolution tape directory (HRTD) from a volatile memory of the tape drive, the HRTD including physical locations of a plurality of different records that have been read during a seek of a tape of the cartridge, the tape drive and cartridge slot of the cartridge being located in a tape library; in response to receiving the HRTD from the tape drive, transferring the HRTD out of the tape drive and storing in a non-volatile memory outside of the tape library; receiving a cartridge insert request to insert the cartridge into the tape drive; and sending the HRTD stored in the non-volatile memory to the tape drive.

12. The system of claim 11, wherein, receiving a hash code from the tape drive along with the HRTD, and the hash code being stored in the non-volatile memory along with the hash code.

13. 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 cartridge eject request for a cartridge in a tape drive, requesting a high resolution tape directory (HRTD) from a volatile memory of the tape drive, the HRTD including physical locations of a plurality of different records that have been read during a seek of a tape of the cartridge, the tape drive and cartridge slot of the cartridge being located in a tape library; in response to receiving the HRTD from the tape drive, transferring the HRTD out of the tape drive and storing in the non-volatile memory outside of the tape library; receiving a cartridge insert request to insert the cartridge into the tape drive; and sending the HRTD stored in the non-volatile memory to the tape drive.

14. The magnetic tape library of claim 13, wherein, receiving a hash code from the tape drive along with the HRTD, and the hash code being stored in the non-volatile memory along with the hash code.

15. The magnetic tape library of claim 13, wherein, the operations further including: in response to the cartridge being removed from the tape library, discarding the HRTD from the non-volatile memory.

16. The magnetic tape library of claim 13, wherein, the operations further including: in response to determining that a specified period of time has passed since the cartridge was removed from the tape library, discarding the HRTD from the non-volatile memory.

17. The magnetic tape library of claim 13, wherein, the operations further including: in response to the cartridge being removed from the tape library and determining that a remaining free storage capacity in the non-volatile memory is below a threshold, discarding the HRTD.

Citation Information

Patent Citations

  • Information-processing apparatus, information-processing method, programs and recording mediums

    US20060176602A1

  • Tape library apparatus and information management method

    US20160225402A1