High-resolution tape directory for tape-based storage
Patent Information
- Application Number
- DE112021005198
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-11-24
- Filing Date
- 2021-11-03
- Publication Date
- 2025-03-27
- Estimated Expiration
- 2041-11-03
Smart Images

Figure 00000000_0000_ABST
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
[0002] Linear Tape Open (LTO) tape drives and IBM Enterprise Tape Drives (TS11xx) are referred to as linear tape drives. A linear tape drive arranges data on a tape in a longitudinal direction, recording the data from the beginning of the tape to the end, then shifts the position slightly laterally along the tape, and then records data on the tape in the opposite longitudinal direction. The linear tape drive repeats this back-and-forth operation several times, shifting the data laterally along the tape.
[0003] When a seek command is received, it is not a simple process for the tape drive to locate the physical location of the target record. For example, storing 10 TB of data in 128 KB records requires 40,000,000 records, and it is impossible to record the physical locations of all records. In addition, unlike hard disk drives (HDDs), a tape drive generally allows the length of each record to be changed. Therefore, the physical locations cannot be determined using a simple calculation formula.
[0004] A seek operation involves moving the tape to the beginning of the range containing the target record and reading records from the beginning of the range until the target record is reached. Information about the range read during the seek operation is stored in the tape drive's volatile memory. This range 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.
[0005] US 2009 / 0 109 571 A1 describes a data storage library containing a plurality of tape cartridges, each having an auxiliary radio frequency storage device. The library also includes at least one tape drive capable of determining at least one functional status when loaded with one of the tape cartridges, wherein the at least one tape drive has an auxiliary read / write device capable of transferring information associated with the at least one functional status to and from the auxiliary radio frequency storage device. The tape drive also includes means for transferring the information from the auxiliary radio frequency storage device to a display device viewable by an end user.
[0006] US 2014 / 0 078 609 A1 describes a system with a tape library and a tape drive. The tape library identifies which tapes in the tape library contain one or more migrated tapes. The tape drive enables access to each of the one or more migrated tapes by an original application.
[0007] US 2014 / 0 108 720 A1 describes a tape drive system with a file system suitable for enabling sequential access to data on a tape medium, a file access controller suitable for managing the data, wherein the file access controller includes logic suitable for writing a file to the tape medium, logic suitable for writing a pointer of the written file to an index of the tape medium, wherein the pointer is managed by the file access controller, logic suitable for generating a high resolution tape directory (HRTD) including detailed storage location information of data on the tape medium, and logic suitable for storing the HRTD as part of the end of data (EOD) of the index when a tape cartridge containing the tape medium is unloaded.
[0008] US 2015 / 0 127 616 A1 describes a method that provides the following: When a WORM cartridge is formatted in advance for the Linear Tape File System (LTFS), e.g., before shipping, the Linear Tape File System Library Edition (LTFS LE) is enhanced by software to reduce the consumption of the index partition and prevent the appending of unnecessary data. Specifically, instead of recording metadata in the index partition during normal unmounting, the metadata is recorded in separate local storage, e.g., on a hard disk drive (HDD), and the index partition is only updated when the cartridge is ejected from the library. In this way, the method is able to reduce the frequency of index partition updates. Since an update only occurs when the user intentionally ejects a cartridge, the index partition can be prevented from overflowing before the data partition overflows. SUMMARY
[0009] The problems solved by the invention include shortening search times for data records in linear tape drives. The problems underlying the invention are solved with the features of the independent patent claims. Embodiments of the invention are the subject of the dependent patent claims.
[0010] 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 searching for a target data record using the tape directory. Physical locations of a plurality of different data records read during the search operation are stored in volatile memory of the first tape drive as a high-resolution tape directory (HRTD). The HRTD stored in the volatile memory is transferred for storage in an off-band, non-volatile memory prior to removal of the tape cartridge. In response to the tape cartridge being inserted into the tape drive, the HRTD is received from the off-band, non-volatile memory.The procedure allows the HRTD to be retained where it would otherwise have been deleted, potentially increasing search speed.
[0011] If the out-of-band non-volatile storage is part of a tape library, the method optionally further comprises exporting the HRTD from the out-of-band non-volatile storage in response to the tape cartridge being removed from the tape library. This may allow the tape library to free up storage space for other uses while retaining the HRTD.
[0012] If the out-of-band non-volatile storage is part of a tape library, the method optionally further includes deleting the HRTD in the out-of-band non-volatile storage 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 deletion is further based on a specified amount of time that has elapsed since the tape cartridge was removed from the tape library. In this way, the HRTD may be retained for a period of time after the tape cartridge is removed, while the tape library can continue to free up storage space.
[0013] 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 out-of-band, non-volatile memory. This allows the HRTD to subsequently be verified to determine whether it is valid for a tape cartridge. When the hash code is received with the HRTD from the out-of-band, non-volatile memory, the method optionally further comprises verifying the hash code using tape-specific information from the tape cartridge. This can prevent an invalid HRTD from being used based on a tape cartridge that does not correspond to the HRTD or on a tape that was written to subsequent to the HRTD creation.
[0014] According to another aspect of the present invention, a tape drive is provided that includes a memory containing volatile memory and a control unit connected to the memory. The control unit is configured to perform operations from the method described above.
[0015] According to another aspect of the present invention, a system is provided that includes a memory containing 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 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 the HRTD to be retained where it would otherwise have been deleted.
[0016] Optionally, the steps further include receiving a tape cartridge insert 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 may enable the tape drive to perform a faster seek operation using the HRTD.
[0017] According to another aspect of the present invention, a tape library is provided comprising a memory comprising non-volatile memory and a controller connected to the memory, the controller being 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 a 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 the HRTD to be retained where it would otherwise have been deleted.
[0018] Optionally, the steps further include receiving a tape cartridge insert 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 may enable the tape drive to perform a faster seek operation using the HRTD.
[0019] Optionally, the steps further include clearing the HRTD in response to the tape cartridge being removed from the tape library and determining that remaining free storage capacity in the non-volatile memory is below a threshold. This may allow the tape library to retain the HRTD after the tape cartridge has been removed, while still allowing the tape library to free storage space as needed.
[0020] The foregoing summary is not intended to describe every illustrated embodiment or every implementation of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0021] The drawings included in this application are incorporated in and constitute a part of the specification. They illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the disclosure. The drawings merely illustrate certain embodiments and do not limit the disclosure. Fig. 1 illustrates a tape storage system according to embodiments of the present disclosure. Fig. 2 illustrates a second tape storage environment according to embodiments of the present disclosure. Fig. 3 illustrates a flowchart of a method for handling the insertion of a tape cartridge into a tape drive according to embodiments of the present disclosure. Fig. 4 illustrates a flowchart of a method for handling a tape eject request according to embodiments of the present disclosure. Fig. 5 illustrates a method of operating a tape drive according to embodiments of the present disclosure. Fig. 6 illustrates a high-level block diagram of an example computer system according to embodiments of the present disclosure.
[0022] While the invention is susceptible to various modifications and alternative forms, the details thereof are shown by way of example and will be described in detail in the drawings. It should be understood, however, that the intention is not to limit the invention to the particular embodiments described. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the scope of the invention. DETAILED DESCRIPTION
[0023] Aspects of the present disclosure relate to improving seek time in tape storage, and more specific aspects relate to storing a high-resolution tape directory in non-volatile memory. While the present disclosure is not necessarily limited to such applications, various aspects of the disclosure may be understood by discussing various examples using this context.
[0024] Linear Tape Open (LTO) tape drives and IBM Enterprise Tape Drives (TS11xx) are referred to as linear tape drives. A linear tape drive arranges data on a tape in one longitudinal direction, recording the data from the beginning of the tape to the end, then shifts the position slightly laterally along the tape, and then records data on the tape in the opposite longitudinal direction. The linear tape drive repeats this back-and-forth movement several times, shifting laterally along the tape. The position at which the entire area of the tape has been written is defined as the logical end of the tape.
[0025] During this process, a linear line of data from the beginning to the end of the tape, or from end to 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 write area of a tape is divided laterally into four sections, each comprising a quarter of the wrap. Each divided section is called a data band. The tape drive is recognized as a streaming device by a computer connected to the tape drive and is generally operated using a SCSI (Small Computer System Interface) command set.
[0026] The data on the tape drive is generally logically divided into actual data (records) and separators (filemarks: FMs). The tape drive assigns sequential numbers to the written logical data (records and FMs) from the beginning. The tape drive stores information about the current position, which can be retrieved using a ReadPosition command. The tape drive provides commands to change the current position (seek commands). The current position can be changed using the Locate, Space, and Rewind commands. Upon receipt of a seek command, LTO and TS11xx tape drives rewind the tape to position the tape drive head at a 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, transmits 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 end of logical 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 1, and then invalidates the data following the incremented current position.
[0027] In response to receiving a seek command, the tape drive cannot simply locate the physical location of the target record. For example, storing 10 TB of data in 128 KB records requires 40,000,000 records, and it is impossible to record the physical locations of all records. In addition, unlike hard disk drives (HDDs), a tape drive generally allows the length of each record to be modified. Therefore, the physical locations cannot be determined using a simple calculation formula.
[0028] LTO drives implement a standardized mechanism called the Tape Directory (TD), which allows estimation of physical positions and, if necessary, writes the TD to non-volatile memory within the 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 rotation, as well as the number of records and the number of FMs written in the second half of each rotation. In the case of the TS11xx, a TD stores the number of records and the number of FMs written in each rotation. By querying the TD, it is possible to determine the rotation and a range of it where the target recording is located.
[0029] A seek operation involves moving the tape to the beginning of the range containing the target record and reading records from the beginning of the range until the target record is reached. Information about the range read during the seek operation is stored in the tape drive's volatile memory. The range information collected in this operation is composed of the number of records and the number of FMs written to the ranges, which are calculated by dividing each round by a number from 32 to 128. This range information table is called the High Resolution Tape Directory (HRTD).
[0030] TS11xx drives store the HRTD in a tape management area when writing records. However, an LTO drive does not allow the HRTD to be stored on the tape, as the use of a tape's management area is strictly defined by the LTO format specification. Therefore, the LTO drive erases the HRTD from the drive's volatile memory when the tape cartridge is removed. For this reason, LTO tape drives are generally slower than TS11xx tape drives when searching for a record that hasn't been accessed since the cartridge was inserted.
[0031] Described herein are methods, systems, and computer program products for storing HRTD data in out-of-band, non-volatile memory when a tape cartridge is removed from a tape drive. In embodiments, a host computing device or tape library reads the HRTD from the tape drive and stores it before removing the tape cartridge. When the tape cartridge is subsequently inserted into a tape drive, the host computing device or tape library transmits the stored HRTD to the tape drive so that the tape drive can use the previously generated HRTD data for a subsequent seek operation. Thus, embodiments may be particularly advantageous for tape drives, such as LTO tape drives, that would otherwise not have access to the HRTD, since it is typically erased when the tape cartridge is removed from the tape drive.For example, it can provide an LTO drive with the ability to search for a data set that hasn't been accessed since the tape cartridge was inserted, at a speed equivalent to that of TS11xx drives. Additionally, embodiments can also provide a benefit to other types of tape drives by providing an alternative storage location for the HRTD, thus freeing up storage for other uses.
[0032] A command to retrieve an HRTD from a tape drive and a command to send a stored HRTD to a tape drive may be provided. In some embodiments, the commands may be provided by defining a new page in existing SCSI commands such as ModeSense and ModeSelect, or commands such as ReadBuffer and WriteBuffer. Alternatively, the commands may be provided by defining new, vendor-specific commands. In the present disclosure, a command named GET_HRTD is used to denote a command to retrieve an HRTD from a tape drive, and a command named SET_HRTD is used to denote a command to send a stored HRTD to a tape drive.
[0033] The HRTD for a tape cartridge could become invalid if a tape is subsequently modified and the HRTD is not updated. In some embodiments, the tape drive additionally provides verification data based on tape-specific information at the time the HRTD is provided, which can be used to verify the validity of the HRTD. For example, the tape drive can generate a hash code using the tape-specific information and provide the hash code with the HRTD. Tape-specific information can include information stored in non-volatile memory of a tape cartridge that describes the tape. For example, tape-specific information can include an identifier, such as a tape serial number created by the manufacturer, and a write pass value that indicates the number of writes to the tape.
[0034] The hash code can be generated using any suitable hash algorithm. The verification data can 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 can provide the verification data with the HRTD to the tape drive, and the tape drive can verify the verification data against the tape-specific information of the loaded tape cartridge. For example, the tape drive can calculate 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 number does not match, or if the tape has been written to by another application, increasing the write pass counter, the hash codes will not match, meaning the HRTD is invalid.
[0035] In embodiments where the HRTD is stored by a tape library, the HRTD may be retained as long as the corresponding tape cartridge remains in the tape library. However, storage space in the tape library may be limited, so HRTD data may need to be deleted at some point to free up storage space. The tape library may be configured to handle the corresponding HRTD differently when the tape cartridge is removed from the tape library.
[0036] In some embodiments, the HRTD is stored for a specified period of time after the corresponding tape cartridge is removed from the tape library. For example, the tape library may delete 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 may delete the HRTD based on the remaining free storage capacity in the non-volatile memory. For example, the tape library may delete the HRTD when the corresponding tape cartridge has been 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, the tape library can delete the HRTD when the remaining free storage capacity is below a threshold and a certain amount of time has passed since the corresponding tape cartridge was removed. To determine the amount of time that has passed since a tape cartridge was removed, the tape library can generate a timestamp when the tape cartridge is removed and store it in association with the corresponding HRTD.
[0037] In some embodiments, the tape library may export the HRTD when the corresponding tape cartridge is removed from the tape library. For example, the tape library may be configured to transfer the HRTD to a host computing device that communicates with the tape library. The tape library may further be configured to import the HRTD when the corresponding tape cartridge is subsequently inserted. For example, the tape library may transmit a request for the HRTD to the host computing device when the corresponding tape cartridge is inserted into the tape library.
[0038] In some embodiments, the tape library may simply delete the HRTD when the corresponding tape cartridge is removed. While this frees up storage space within the tape library, the benefits of retaining the HRTD may be lost when the corresponding tape cartridge is subsequently inserted into the tape library.
[0039] With reference to Fig. 1 illustrates a tape storage system 100 according to embodiments of the present disclosure. Tape storage system 100 includes a host computing device 110 and a tape drive 120. Host computing device 110 may be connected to tape drive 120 via one or more data communication interfaces. In some embodiments, host computing device 110 may communicate with tape drive 120 via one or more networks.
[0040] The host computing device 110 may be any suitable computing device, such as a computer system as described with reference 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 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 further includes a non-volatile memory 118. The non-volatile memory 118 may be any suitable non-volatile memory component that retains information even after power is turned off.As described herein, the non-volatile memory 118 may store HRTD data received from the tape drive 120.
[0041] Tape drive 120 may be any suitable type of tape drive. As previously mentioned, aspects of the present disclosure may be particularly advantageous for tape drives, such as LTO tape drives, that are configured to erase HRTD data when a tape cartridge is ejected without saving the data to non-volatile memory. Tape drive 120 may include a 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 sequencing, data writing, data reading, etc.The control unit 124 may operate according to logic known in the art, as well as any logic disclosed herein, and thus, in various embodiments, may be considered a processor for any of the tape drive descriptions contained herein. The control unit 124 may be connected to a memory 126 of any known type in which instructions executable by the control unit 124 may be stored. Furthermore, the control unit 124 may be configured and / or programmable to perform or control all or part of the methodology presented herein. Thus, the control unit 124 may be considered configured to perform various operations using logic programmed into one or more chips, modules, and / or blocks; using software, firmware, and / or other instructions available to one or more processors; etc., as well as combinations thereof.
[0042] Memory 126 may be a combination of one or more storage units. Memory 126 includes a volatile memory 128. Control unit 124 may be configured to store in volatile memory 128 information pertaining to a tape cartridge loaded into tape drive 120. For example, the control unit may read a TD from the cartridge memory of the loaded tape cartridge and store the TD in volatile memory 128. Furthermore, the control unit may use the TD in volatile memory 128 to perform seek commands and may store physical locations of records as HRTDs in volatile memory 128. In addition, the control unit may read tape-specific information from the cartridge memory and use the information to generate verification data as described herein.
[0043] With reference to Fig. 2 illustrates a second tape storage environment 200 according to embodiments of the present disclosure. The environment 200 includes a host computing device 210 and a tape library 220. The host computing device 210 may be connected to the tape library 220 via one or more data communication interfaces. In some embodiments, the host computing device 210 may communicate with the tape library 220 via one or more networks.
[0044] The host computing device 210 may be any suitable computing device, such as the one described with reference to Fig. 6. The host computing device 210 includes a tape library storage module 214 and 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 program instructions executable by a processor to transmit commands to the tape library 220 and to process information received from the tape library 220. The host computing device 210 further includes the non-volatile memory 218. The non-volatile memory 218 may be any suitable non-volatile memory component that retains information even after power is turned off.As described herein, the non-volatile memory 218 may store HRTD data exported from the tape library 220.
[0045] The tape library 220 includes a control unit 224, a memory 226, tape cartridge slots 230, and a tape drive 240. The control unit 224 may be or may include a processor and / or any logic for controlling any subsystem of the tape library 220. For example, the control unit 224 may control the transfer of tape cartridges between the tape cartridge slots 230 and the tape drive 240. The control unit 224 may operate according to logic known in the art, as well as any logic disclosed herein, and thus, in various embodiments, may be considered a processor for any of the descriptions of tape drives contained herein. The control unit 224 may be connected to a memory 226 of any known type in which instructions executable by the control unit 224 may be stored.Furthermore, the control unit 224 may be configured and / or programmable to perform or control the methodology presented herein, in whole or in part. Thus, the control unit 224 may be considered configured to perform various operations using logic programmed into one or more chips, modules, and / or blocks; using software, firmware, and / or other instructions available to one or more processors; etc., as well as combinations thereof.
[0046] Memory 226 includes a non-volatile memory 228. Non-volatile memory 228 may be any suitable non-volatile memory component that retains information even after power is turned off. As described herein, non-volatile memory 228 may store HRTD data received from tape drive 240.
[0047] Tape cartridge slots 230 may include any number of slots for receiving 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.
[0048] The tape drive 240 may include a control unit 244. The control unit 244 may be or may include a processor and / or any logic for controlling any subsystem of the tape drive 240. For example, the control unit 244 typically controls head functions such as servo sequencing, data writing, data reading, etc. The control unit 244 may operate according to logic known in the art, as well as any logic disclosed herein, and thus, in various embodiments, may be considered a processor for any of the descriptions of tape drives contained herein. The control unit 244 may be connected to a memory 246 of any known type in which instructions executable by the control unit 244 may be stored.Furthermore, the control unit 244 may be configured and / or programmable to perform or control the methodology presented herein, in whole or in part. Thus, the control unit 244 may be considered configured to perform various operations using logic programmed into one or more chips, modules, and / or blocks; using software, firmware, and / or other instructions available to one or more processors; etc., as well as combinations thereof.
[0049] Memory 246 may be a combination of one or more storage units. Memory 246 includes a volatile memory 248. Control unit 244 may be configured to store in volatile memory 248 information pertaining to a tape cartridge loaded into tape drive 240. For example, the control unit may read a TD from the cartridge memory of the loaded tape cartridge and store the TD in volatile memory 248. Furthermore, the control unit may use the TD in volatile memory 248 to perform seek commands and may store physical locations of records as HRTDs in volatile memory 248. In addition, the control unit may read tape-specific information from the cartridge memory and use the information to generate verification data as described herein.Although the tape library 220 is shown with a single tape drive, the tape library could have any number of tape drives.
[0050] Reference is now made to Fig. 3, a flowchart of a method 300 for handling the insertion of a tape cartridge into a tape drive according to embodiments of the present disclosure. The method 300 may be performed in whole or in part by a host computing device. For example, the method 300 may be performed by the tape storage module 114 of the host computing device 110, which may be described with respect to Fig. 1, or the tape library storage module 214 of the host data processing unit 210, which are described with respect to Fig. 1 are described. Fig. 3 is described herein as being performed by a host computing device; however, in some embodiments, the method 300 may be performed in whole or in part by the tape library 220. For example, program instructions for performing the method 300 may be included in the memory 246 for execution by the control unit 224 in the tape library 220.
[0051] At operation 310, the host computing device receives a tape cartridge insert request. For example, the host computing device may be notified that a tape cartridge has been inserted into a tape drive. A tape cartridge insert request may be made in response to a user manually inserting a tape cartridge into the tape drive or by an automated process of a tape library. At 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 searches HRTD data in non-volatile memory on the host computing device using an identifier for the tape cartridge. The HRTD data may include a plurality of HRTDs corresponding to a plurality of tape drives.The host computing device can determine a corresponding HRTD using a tape identifier, such as a serial number. In some embodiments, the host computing device searches HRTD data stored in non-volatile memory in a tape library containing the tape drive.
[0052] If an HRTD corresponding to the tape cartridge is available at operation 320, the HRTD is sent to the tape drive at operation 330. For example, the host computing device may read the HRTD from non-volatile memory and transfer the HRTD to the tape drive using a SET_HRTD command to store the HRTD in the tape drive's volatile memory.
[0053] After sending the HRTD to the tape drive at step 330 or after determining at step 320 that no HRTD corresponding to the tape cartridge is available, the tape cartridge insertion is completed at step 340 so that commands can be executed on the tape.
[0054] With reference to Fig. 4 is a flowchart of a method 400 for handling a tape eject request according to embodiments of the present disclosure. The method 400 may be performed in whole or in part by a host computing device. For example, the method 400 may be performed by the tape storage module 114 of the host computing device 110 described with respect to Fig. 1, or the tape library storage module 214 of the host data processing unit 210, which are described with respect to Fig. 1 are described. Fig. 4 is described herein as being performed by a host computing device; however, in some embodiments, the method 400 may be performed in whole or in part by the tape library 220. For example, program instructions for performing the method 400 may be included in the memory 246 for execution by the control unit 224 in the tape library 220.
[0055] At operation 410, a host computing device receives a tape cartridge eject request. The eject request may be in response to a manual user action or an automated action by a 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 may issue a GET_HRTD command to the tape drive. In response to the request, the tape drive may read the HRTD from its volatile memory and transfer it to the host computing device or the tape library.
[0056] At 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 located in the host computing device. In some embodiments, the non-volatile memory is located in a tape library containing the tape drive. HRTDs for a plurality of different tape cartridges may be stored in the non-volatile memory. The HRTDs may be stored with an identifier, such as a tape serial number, to enable the corresponding tape cartridge to be identified. In some embodiments, the HRTDs are 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.
[0057] With reference to Fig. 5 illustrates a method 500 for operating a tape drive according to embodiments of the present disclosure. The method 500 may be performed by a control unit of a tape drive, such as the control unit 124 of the tape drive 120, which is described with reference to Fig. 1, or from the control unit 244 of the tape drive 240, which is described with reference to Fig. 2 are described.
[0058] At operation 510, a tape drive receives a tape cartridge. For example, a tape cartridge may be manually inserted into the tape drive by a user, or a 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 transmit the identifier to a host computing device. At 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.
[0059] At operation 530, the tape drive receives an HRTD and stores it in its volatile memory. The HRTD may be transferred to the tape drive from non-volatile memory of a host computing device or a 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 if it matches the received hash code. If the hash code is not verified, the HRTD may be deleted from the tape drive. If an HRTD has not yet been generated for the tape cartridge, operation 530 may not be performed.
[0060] At operation 540, the tape drive searches for a target record using the tape directory and / or the HRTD. Operation 540 may occur in response to receiving a seek command from a host computing device or a tape library. A seek operation may include moving the tape to the beginning of the range where the target record is located based on the tape directory and reading records from the beginning of the range until the target record is reached.
[0061] At step 550, HRTD data is stored in the tape drive's volatile memory using the physical positions of records determined during the search process in step 540. A new HRTD can be created if no HRTD already exists for the tape cartridge. Alternatively, the HRTD data can be added to an existing HRTD.
[0062] At operation 560, the tape drive receives a request for the HRTD. For example, the tape drive may receive a GET_HRTD command from a host computing device in response to a request to remove the tape cartridge from the tape drive.
[0063] At operation 570, the tape drive transmits the HRTD to the host computing device or tape library for storage in non-volatile memory. In some embodiments, the tape drive may generate verification data, such as a hash code, using tape-specific information (e.g., tape serial number, write pass) and transmit the hash code along with the HRTD.
[0064] At step 580, the tape drive receives a command to remove the tape cartridge. At step 590, the tape cartridge is removed from the tape drive.
[0065] With reference to Fig. Figure 6 illustrates a high-level block diagram of the exemplary computer system 601 that may be used to implement one or more of the methods, tools, and modules described herein, as well as any associated functionality (e.g., using one or more processor circuits or computer processors of the computer), in accordance with embodiments of the present disclosure. In some embodiments, the major components of the 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 interconnected for data exchange directly or indirectly via a memory bus 603, an I / O bus 608, and an I / O bus interface unit 610 for data transfer between the components.
[0066] Computer system 601 may include one or more programmable, multi-purpose central processing units (CPUs) 602A, 602B, 602C, and 602D, referred to generally herein as CPU 602. In some embodiments, computer system 601 may include multiple processors, as is typical for a relatively large system; however, in other embodiments, computer system 601 may alternatively consist of a single CPU system. Each CPU 602 may execute instructions stored in memory subsystem 604 and may include one or more levels of integrated cache.
[0067] System memory 604 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 622 or cache 624. Computer system 601 may also 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 a non-removable, non-volatile magnetic medium, such as a "hard disk drive." A magnetic disk drive may also 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 or writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media, although not shown.Additionally, memory 604 may include flash memory, e.g., a flash memory stick drive or a flash drive. Storage devices may be connected to memory bus 603 via one or more data media interfaces. Memory 604 may include at least one program product having a set (e.g., at least one) of program modules configured to perform the functions of various embodiments.
[0068] One or more programs / utilities 628, each comprising 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 systems, one or more application programs, other program modules, and program data, or a combination thereof, may include an implementation of a network environment. The program modules 630 generally perform the functions or methodologies of various embodiments.
[0069] Although the memory bus 603 in Fig. 6 as a single bus structure providing a direct data transmission path between CPUs 602, memory subsystem 604, and I / O bus interface 610, in some embodiments, memory bus 603 may comprise multiple different buses or data transmission paths arranged in any number of different forms, such as point-to-point connections in hierarchical, star, or mesh configurations, multiple hierarchical buses, parallel and redundant paths, or any other suitable type of configuration. Furthermore, while I / O bus interface 610 and I / O bus 608 are shown as a single respective unit, in some embodiments, computer system 601 may include multiple I / O bus interface units 610, multiple I / O buses 608, or both.Furthermore, while multiple I / O interface units are shown separating the I / O bus 608 from various data transmission paths leading to the various I / O units, in other embodiments, some or all of the I / O units may be directly connected to one or more system I / O buses.
[0070] 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 little or no direct user interface, but instead receives requests from other computer systems (clients). Furthermore, in some embodiments, computer system 601 may be implemented as a desktop computer, portable computer, laptop or notebook computer, tablet computer, handheld computer, telephone, smartphone, network switching units or routers, or any other suitable type of electronic device.
[0071] It is pointed out that Fig. 6 is intended to illustrate the characteristic main components of the exemplary computer system 601. However, in some embodiments, individual components may have a higher or lower complexity than in Fig. 6 is shown, other than those shown in Fig. 6 or additional components may be present, and the number, type, and configuration of such components may vary.
[0072] In some embodiments, a method comprises: reading a tape directory from a cartridge memory of a tape cartridge in a first tape drive; searching for a target data record using the tape directory; storing physical locations of a plurality of different data records read during the search operation in volatile memory of the first tape drive as a high-resolution tape directory (HRTD); transferring the HRTD stored in the volatile memory for storage in an out-of-band, non-volatile memory prior to removing the tape cartridge; and in response to the tape cartridge being loaded into the tape drive, receiving the HRTD from the out-of-band, non-volatile memory in the second tape drive.
[0073] In some embodiments of the method, the out-of-band non-volatile storage is part of a tape library. In some embodiments, the method further comprises exporting the HRTD from the out-of-band non-volatile storage in response to the tape cartridge being removed from the tape library. In some embodiments, the method further comprises deleting the HRTD in the out-of-band non-volatile storage based on the tape cartridge being removed from the tape library. In some embodiments, the deleting is further based on a certain amount of time that has elapsed since the tape cartridge was removed from the tape library.
[0074] In some embodiments, the out-of-band non-volatile memory is part of the host computing device.
[0075] In some embodiments, 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 out-of-band non-volatile memory. In some embodiments, the hash code is received from the out-of-band non-volatile memory along with the HRTD, and the method further comprises verifying the hash code using tape-specific information from the tape cartridge.
[0076] In some embodiments, a tape drive comprises: a memory comprising 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; searching for a target record using the tape directory; storing physical locations of a plurality of different records read during the search operation in the volatile memory as a high-resolution tape directory (HRTD); storing the HRTD stored in the volatile memory in an out-of-band non-volatile memory; and in response to the tape being loaded into a second tape drive, communicating the HRTD from the out-of-band non-volatile memory to the second tape drive.
[0077] In some embodiments, the operations further comprise generating a hash code using tape-specific information, wherein the hash code is transmitted with the HRTD for storage in the out-of-band non-volatile memory. In some embodiments, the hash code is received from the out-of-band non-volatile memory along with the HRTD, and the operations further comprise verifying the hash code using tape-specific information from the tape cartridge.
[0078] In some embodiments, a system includes 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 tape cartridge eject request for a tape cartridge in a tape drive, requesting a high-resolution tape directory (HRTD) from volatile memory of the tape drive; and in response to receiving the HRTD from the tape drive, storing the HRTD in non-volatile memory. In some embodiments, the operations further include: receiving a tape cartridge load request to load the tape cartridge into the tape drive; and sending the HRTD stored in the non-volatile memory to the tape drive.In some embodiments, the HRTD receives a hash code from the tape drive, and the hash code is stored in the non-volatile memory with the hash code.
[0079] In some embodiments, a tape library comprises: a memory comprising non-volatile memory; and a controller coupled to the memory, the controller configured to perform operations comprising: 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 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.
[0080] In some embodiments, the operations further include: receiving a tape cartridge insert request to insert the tape cartridge into the tape drive; and sending the HRTD stored in the non-volatile memory to the tape drive.
[0081] In some embodiments, the HRTD receives a hash code from the tape drive, and the hash code is stored in the non-volatile memory with the hash code.
[0082] In some embodiments, the steps further comprise erasing the HRTD from the non-volatile memory in response to the tape cartridge being removed from the tape library.
[0083] In some embodiments, the steps further comprise deleting the HRTD from the non-volatile memory in response to determining that a certain amount of time has elapsed since the tape cartridge was removed from the tape library.
[0084] In some embodiments, the steps further include clearing 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.
[0085] In addition to the embodiments described above, further embodiments with fewer steps, more steps, or different steps are contemplated. Furthermore, in some embodiments, some or all of the above steps may be performed in a different order. The modules are listed and described according to one embodiment for illustrative purposes and are not intended to indicate a necessity for a particular module or the exclusivity of other possible modules (or functions / purposes applied to a particular module).
[0086] In the foregoing, reference is made to various embodiments. It should be understood, however, that this disclosure is not limited to the specifically described embodiments. Rather, any combination of the described features and elements for realizing and practicing this disclosure is conceivable, regardless of whether they relate to various embodiments. Many modifications and variations may be apparent to those skilled in the art without departing from the scope of the described embodiments. Furthermore, although embodiments of this disclosure may achieve advantages over other possible solutions or the prior art, this disclosure is not limited by whether a particular advantage is achieved by a particular embodiment.Therefore, the described aspects, features, embodiments, and advantages are merely illustrative and are not to be considered elements or limitations of the appended claims unless expressly recited in one or more claims.
[0087] The present invention may be a system, a method, and / or a computer program product. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to perform aspects of the present invention.
[0088] The computer-readable storage medium may be any physical device that can retain and store instructions for use by an instruction-executing system. The 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 thereof. A non-exhaustive list of more specific examples of the computer-readable storage medium includes the following: a removable computer diskette, a hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM).Flash memory), static random access memory (SRAM), removable compact disk read-only memory (CD-ROM), digital versatile disc (DVD), memory stick, floppy disk, mechanically encoded device such as punched cards or raised structures in a groove on which instructions are stored, and any suitable combination thereof. A computer-readable storage medium, as used herein, shall not be construed as carrying transient signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., pulses of light traveling through fiber optic cables), or electrical signals carried through a wire.
[0089] Computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to respective computing / processing units or to an external computer or storage unit via a network such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, fiber optic transmission lines, wireless transmission, routers, firewalls, switching units, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing unit receives computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing unit.
[0090] Computer-readable program instructions for performing operations of the present invention may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Java, Smalltalk, C++, or the like, as well as 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 the remote computer or server. In the latter case, the remote computer may 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 may be made to an external computer (for example, over the Internet using an Internet service provider).In some embodiments, electronic circuits, including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute the computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuits to perform aspects of the present invention.
[0091] Aspects of the present invention are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It should be understood that each block of the flowcharts and / or block diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, may be implemented by computer-readable program instructions.
[0092] These computer-readable program instructions may be provided to a processor of a general-purpose computer, a 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, produce a means for implementing the functions / steps defined in the flowchart block(s) and / or block diagrams.These computer-readable program instructions may also be stored on 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 thereon comprises an article of manufacture, including instructions that implement aspects of the function / step specified in the block(s) of the flowchart and / or block diagrams.
[0093] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of process steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-executable process such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / steps defined in the block(s) of flowchart and / or block diagrams.
[0094] 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 context, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions comprising one or more executable instructions for performing the specified logical function(s). In some alternative implementations, the functions specified in the block may occur in a different order than shown in the figures.For example, two blocks shown in sequence may actually be accomplished in one step, executed simultaneously, substantially simultaneously, partially or completely overlapping in time, or the blocks may sometimes be executed in reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowcharts, as well as combinations of blocks in the block diagrams and / or flowcharts, may be implemented by special-purpose hardware-based systems that perform the specified functions or steps, or by combinations of special-purpose hardware and computer instructions.
Claims
[1] Method (500), comprising: Reading (520) a tape directory from a cassette memory of a tape cartridge in a first tape drive (120; 240); Searching (540) a target data record using the tape directory; Storing (550) physical positions of a plurality of different data records read during the search operation in a volatile memory (128; 248) of the first tape drive (120; 240) as a high-resolution tape directory, HRTD; Transferring (570), outside the first tape drive (120; 240), the HRTD stored in the volatile memory (128, 228) prior to removing the tape cartridge for storage in a non-volatile memory (118; 218; 228) outside the tape cartridge; and in response to the tape cartridge being loaded (510) into the tape drive (120; 240), receiving (530) the HRTD from the non-volatile memory (118; 218; 228) by the first tape drive (120; 240). [2] The method (500) of claim 1, wherein the non-volatile memory (228) is part of a tape library (220). [3] The method (500) of claim 2, further comprising exporting the HRTD from the non-volatile memory (228) in response to the tape cartridge being removed from the tape library (220). [4] The method (500) of claim 2, further comprising erasing the HRTD in the non-volatile memory (228) based on the tape cartridge being removed from the tape library (220). [5] The method (500) of claim 4, wherein the erasing is further based on a certain amount of time that has elapsed since the tape cartridge was removed from the tape library (220). [6] The method (500) of any preceding claim, wherein the non-volatile memory (118; 218) is part of a host data processing unit (110, 210). [7] The method (500) of claim 1, further comprising generating a hash code using band-specific information, wherein the hash code is transmitted with the HRTD for storage in the non-volatile memory (118; 218; 228). [8] The method (500) of claim 7, wherein the hash code is received with the HRTD from the non-volatile memory (118; 218; 228), the method (500) further comprising verifying the hash code using tape-specific information from the tape cartridge. [9] Tape drive (120; 240), comprising: a memory (126; 246) comprising a volatile memory (128; 248); and a control unit (124; 244) connected to the memory (126; 246), the control unit (124; 244) being configured to perform work steps comprising: Reading (520) a tape directory from a cassette memory of a tape in a tape drive (120; 240); Searching (540) a target data record using the tape directory; Storing (550) physical locations of a plurality of different data sets read during the search operation in the volatile memory (128; 248) as a high-resolution tape directory, HRTD; Transferring (570), outside the first tape drive (120; 240), the HRTD stored in the volatile memory (128; 248) to a non-volatile memory (118; 218; 228) outside the tape cartridge; and in response to the tape cartridge being loaded (510) into the tape drive (120; 240), receiving (530) the HRTD from the non-volatile memory (118; 218; 228). [10] The tape drive (120; 240) of claim 9, wherein the steps further comprise generating a hash code using tape-specific information, the hash code being transmitted with the HRTD for storage in the non-volatile memory (118; 218; 228). [11] The tape drive (120; 240) of claim 10, wherein the hash code is received with the HRTD from the non-volatile memory (118; 218; 228), and wherein the steps further comprise verifying the hash code using tape-specific information from the tape cartridge. [12] System (100; 200; 601), comprising: a memory (604) containing program instructions (630); and a processor (602) connected to the memory (604), the processor configured to execute the instructions (630) to perform operations comprising: in response to receiving (410) a tape cartridge eject request for a tape cartridge in a tape drive (120; 240), requesting (420) a high-resolution tape directory, HRTD, from a volatile memory (128; 248) of the tape drive (120; 240); and in response to receiving the HRTD from the tape drive (120; 240), storing (430) the HRTD in a non-volatile memory (118; 218; 228) external to the tape cartridge and the tape drive (120; 240). [13] The system (100; 200; 601) of claim 12, wherein the steps further comprise: Receiving (310) a tape cartridge insertion request for inserting the tape cartridge into the tape drive (120; 240); and Sending (330) the HRTD stored in the non-volatile memory (118; 218; 228) to the tape drive (120; 240). [14] The system (100; 200; 601) of claim 12, wherein the HRTD receives a hash code from the tape drive (120; 240) and stores the hash code in the non-volatile memory (118; 218; 228) with the hash code. [15] Tape library (220), comprising: a memory (226) comprising a non-volatile memory (228); and a control unit (224) connected to the memory (226), the control unit (224) being configured to perform operations comprising: in response to receiving (410) a tape cartridge eject request for a tape cartridge in a tape drive (120; 240), requesting (420) a high-resolution tape directory, HRTD, from a volatile memory (128; 248) of the tape drive (120; 240); and in response to receiving the HRTD from the tape drive (120; 240), storing (430) the HRTD in the non-volatile memory (228) external to the tape cartridge and the tape drive (120; 240). [16] The tape library (220) of claim 15, wherein the steps further comprise: Receiving (310) a tape cartridge insertion request for inserting the tape cartridge into the tape drive (120; 240); and Sending (330) the HRTD stored in the non-volatile memory (228) to the tape drive (120; 240). [17] The tape library (220) of claim 15, wherein the HRTD receives a hash code from the tape drive (120; 240) and stores the hash code in the non-volatile memory (228) with the hash code. [18] The tape library (220) of claim 15, wherein the steps further comprise: in response to the tape cartridge being removed from the tape library (220), erasing the HRTD from the non-volatile memory (228). [19] The tape library (220) of claim 15, wherein the steps further comprise: Deleting the HRTD from the non-volatile memory (228) in response to determining that a certain amount of time has elapsed since the tape cartridge was removed from the tape library (220). [20] The tape library (220) of claim 15, wherein the steps further comprise: Deleting the HRTD in response to the tape cartridge being removed from the tape library (220) and determining that a remaining free storage capacity in the non-volatile memory (228) is below a threshold.
Citation Information
Patent Citations
Tape cartridge auxiliary memory containing tape drive functional status information
US20090109571A1
Access to migrated tapes
US20140078609A1
High resolution tape directory (HRTD) stored at end of data in an index partition
US20140108720A1
Support for WORM Cartridges Realized by Linear Tape File System (LTFS)
US20150127616A1