Dynamic Tape Storage Device Data Buffer

By dynamically adjusting the transition points of data partitions in the tape storage system, the problem of being unable to continue writing after the data capacity limit in tape storage technology is solved, achieving efficient utilization of storage space and smooth metadata operations.

JP7808407B2Active Publication Date: 2026-01-29INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023545315
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-02-25
Filing Date
2022-01-31
Publication Date
2026-01-29
Estimated Expiration
2042-01-31

AI Technical Summary

Technical Problem

Existing magnetic tape storage technology cannot effectively utilize the remaining storage space when it reaches its data capacity limit, resulting in the inability to continue writing data and violating the LTFS format requirements.

Method used

By dynamically adjusting the position of the tape transition to the DATA_FULL state, and changing the transition point within the data partition based on the file metadata index size, sufficient space is reserved for metadata write operations, while maximizing the amount of data written.

Benefits of technology

Make effective use of remaining storage space to ensure the smooth execution of metadata writing operations, while maximizing the amount of data written and avoiding waste of storage space.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007808407000001
    Figure 0007808407000001
  • Figure 0007808407000002
    Figure 0007808407000002
  • Figure 0007808407000003
    Figure 0007808407000003
Patent Text Reader

Abstract

A computer-implemented method is disclosed for changing the location on a tape where the tape transitions to a DATA_FULL state, the computer-implemented method further including determining a size of an index representing metadata associated with a file after the file is written to a data partition of the tape, the computer-implemented method further including changing the location within the data partition of the tape where the tape transitions to the DATA_FULL state based on the size of the index representing metadata associated with the file.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates generally to the field of tape storage systems, and more particularly to magnetic tape storage systems having multiple partitions. [Background technology]

[0002] A tape drive is a data storage device that reads and writes data on magnetic tape. Current magnetic tape data storage allows a tape to be divided into individually writable areas known as partitions. For example, a magnetic tape may be divided into an index partition and one or more data partitions. With the advent of tape partitions, a tape format and file system known as the Linear Tape File System (LTFS) allows tape to be used in a manner similar to other external storage devices, such as USB flash drives or external hard disk drives. Thus, in LTFS, file data and file system metadata are stored in separate partitions on the tape, where an index presents the file data as if it were organized in a directory. Summary of the Invention [Means for solving the problem]

[0003] According to one embodiment of the present invention, a computer-implemented method is disclosed for changing the location on a tape where the tape transitions to a DATA_FULL state. The computer-implemented method includes determining a size of an index representing metadata associated with a file after the file has been written to a data partition of the tape. The computer-implemented method further includes changing the location within the data partition of the tape where the tape transitions to the DATA_FULL state based on the size of the index representing metadata associated with the file.

[0004] According to another embodiment of the present invention, a computer program product for changing the location on a tape where the tape transitions to a DATA_FULL state is disclosed. The computer program product comprises one or more computer-readable storage media and a plurality of program instructions stored on the one or more computer-readable storage media. The plurality of program instructions includes instructions for determining a size of an index representing metadata associated with a file after the file has been written to a data partition of the tape. The plurality of program instructions further includes instructions for changing the location on the tape within the data partition where the tape transitions to the DATA_FULL state based on the size of the index representing metadata associated with the file.

[0005] According to another embodiment of the present invention, a computer system for changing the location on a tape where the tape transitions to a DATA_FULL state is disclosed. The computer system includes one or more computer processors, one or more computer-readable storage media, and a plurality of program instructions stored on the one or more computer-readable storage media for execution by at least one of the one or more computer processors. The plurality of program instructions includes instructions for determining a size of an index representing metadata associated with a file after the file has been written to a data partition of the tape. The plurality of program instructions further includes instructions for changing the location on the tape within the data partition where the tape transitions to the DATA_FULL state based on the size of the index representing metadata associated with the file. [Brief explanation of the drawings]

[0006] [Figure 1] FIG. 1 is a functional block diagram of a network computing environment, generally designated 100, suitable for operation of a buffer program 101 in accordance with at least one embodiment of the present invention. [Figure 2] FIG. 2 is an exemplary linear serpentine recording on tape generally designated 200 in accordance with at least one embodiment of the present invention. [Figure 3A] FIG. 3A is a block diagram illustrating an example of file data stored on a data partition 300A of a tape, in accordance with at least one embodiment of the present invention. [Figure 3B] FIG. 3B is a block diagram illustrating an example of file data stored in data partition 300B of a tape after appending file data to data partition 300A of FIG. 3A, in accordance with at least one embodiment of the present invention. [Figure 4A]FIG. 4A is a block diagram illustrating an example of an LTFS volume, generally designated 400A, in accordance with at least one embodiment of the present invention. [Figure 4B] FIG. 4B is a block diagram illustrating an example of a programmable early warning zone (PEWZ) on tape, generally designated 400B, in accordance with at least one embodiment of the present invention. [Figure 5] FIG. 5 is a flow chart diagram, generally designated 500, illustrating operational steps for changing the location on a tape where the tape transitions to a DATA_FULL state, in accordance with at least one embodiment of the present invention. [Figure 6] FIG. 6 is a block diagram illustrating a cloud computing environment, generally designated 50, in accordance with at least one embodiment of the present invention. [Figure 7] FIG. 7 is a block diagram illustrating abstraction model layers provided by cloud computing environment 50 of FIG. 6 in accordance with at least one embodiment of the present invention. [Figure 8] FIG. 8 is a block diagram illustrating components of a computer, generally designated 800, suitable for executing buffer program 101 in accordance with at least one embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0007] The present invention relates generally to the field of tape storage systems, and more particularly to magnetic tape storage systems having multiple partitions.

[0008] Linear tape open (LTO) is a magnetic tape data storage technology. LTO storage technology can be generally referred to as an open-format tape storage technology with a single reel of magnetic tape stored within a removable tape cartridge. LTO storage technology offers additional optional formatting techniques, such as, but not limited to, compression, write-once-read-many (WORM), encryption, and the Linear Tape File System (LTFS). Typically, the latest generation of LTO tape cartridges can be formatted to contain up to four data partitions. However, the number of possible data partitions depends on the specific generation of the LTO tape cartridge.

[0009] The tape media contained within an LTO-formatted tape cartridge is typically divided into four data bands extending horizontally across the length of the tape. Each of the four data bands is separated by a narrow servo band on either side (for a total of five narrow servo bands). The servo bands provide position information to the tape head as it reads and writes data within a particular data band. The tape head typically spans the width of one data band and the adjacent (i.e., upper and lower) servo bands and moves vertically across the horizontal width of the tape. The position of the tape head is controlled by a system of servo bands and information encoded within each servo band during manufacture. While the tape head moves vertically across the width of the tape, the tape can also be moved horizontally along its length (i.e., by winding or unwinding the tape on a reel), allowing the tape head to interact with different portions of the tape.

[0010] The tape head assembly that reads from and writes to the tape spans one data band and two adjacent servo bands. The tape head assembly can have a set of 8, 16, or 32 data read / write head elements (based on a corresponding set of tracks within a single data band) and two servo read elements. All tracks in a given set in a given set are read or written in a single, unidirectional, end-to-end pass (i.e., wrap). After making a pass along the entire length of the tape, all tape heads shift slightly laterally to access another wrap within that band (or a wrap within another band) and make another pass in the reverse direction. Wraps continue in forward and reverse passes. This procedure, known as linear serpentine recording, is repeated until all tracks within the band have been written. The point at which the entire tape has been written is identified as the logical end of the tape.

[0011] The linear tape file system (LTFS) allows an LTO tape cartridge to be further partitioned into an index partition (IP) and a data partition (DP). File data is generally written only to the data partition, and metadata (i.e., data describing the file data stored in the data partition) is written to the index partition. Organizing or partitioning the tape in such a manner allows the tape to be self-describing through the use of a file index in the index partition. This reduces data management complexity and data access time for tape storage. Thus, LTFS allows magnetic tape storage devices to be used in a manner similar to other removable storage systems (e.g., USB flash drives or external hard disk drives).

[0012] In an embodiment of the present invention, it is recognized that in response to the tape head reaching the end of the tape while appending file data to the data partition, the tape cartridge returns an error message and prevents further data from being appended to the tape. When this scenario occurs, it becomes impossible to append an index to the end of the file data written to the data partition, thereby violating LTFS format requirements.

[0013] In an embodiment of the present invention, it is recognized that one possible solution to the above-mentioned problem is to designate a storage area at the end of the tape as a buffer. Upon reaching the buffer during a file operation, a transition to the DATA_FULL state occurs, and only metadata write operations (e.g., modifying timestamps, deleting files, renaming files, and writing indexes) are allowed in the buffer. It should be noted that once the tape head reaches the buffer, normal data write operations, such as adding file data to the data partition, are no longer allowed.

[0014] Embodiments of the present invention further recognize that the size of an index representing metadata associated with file data written to the data partition depends on the number of records in the file and the size of any extended attributes of the file. Thus, if the size of the index exceeds the size of the buffer, after transitioning to the DATA_FULL state, the entire index cannot be appended to the buffer, thereby ultimately still violating LTFS format requirements.

[0015] Embodiments of the present invention further recognize that user applications often designate the last wrap of the data partition as a buffer. However, the size of a single wrap on the tape depends on the length of the tape itself. For example, the tape length of an LTO-5 tape cartridge is only 846 meters, while the tape length of an LTO-9 tape cartridge is 1,035 meters. Assuming that the data partition length of an LTO-5 tape cartridge is 811 meters and the data partition length of an LTO-5 tape cartridge is 1,000 meters, the last data wrap on the tape on the LTO-5 tape cartridge is 189 meters longer than the last data wrap on the tape on the LTO-9 tape cartridge. Therefore, depending on the size of the index added to the buffer at the end of the tape and the size of the buffer itself, a large area of ​​the buffer may remain unused. This is due to the fact that normal data write operations, such as appending file data to the data partition, are no longer permitted within the buffer.

[0016] An embodiment of the present invention remedies the aforementioned drawbacks by dynamically changing the point on the tape where the tape transitions to the DATA_FULL state. In one embodiment, the point on the tape where the tape transitions to the DATA_FULL state is moved based on the size of an index representing the most recently written file data to the data partition. In one embodiment, storage space is reserved as a buffer for performing metadata write operations only after the tape transitions to the DATA_FULL state. In one embodiment, the buffer is located following the point on the tape where the tape transitions to the DATA_FULL state. Thus, moving the point on the tape where the tape transitions to the DATA_FULL state further includes changing the size of the buffer.

[0017] For example, a buffer having a size of 500 MB is reserved in a writable area of ​​the data partition of the tape. If the most recent index added to the data partition contains 200 MB of data, the size of the buffer is reduced to the last 200 MB of storage in the writable area of ​​the data partition on the tape. Thus, embodiments of the present invention advantageously maximize the amount of file data that can be added to a tape before the tape transitions to a DATA_FULL state, thereby ultimately limiting the amount of unused storage space in the data partition of the tape.

[0018] Typically, after transitioning to the DATA_FULL state, normal file operations are prohibited. Thus, if additional storage space remains in the buffer after a metadata write operation (e.g., adding an index) is performed, any remaining storage space remains unavailable for performing normal file operations. However, by dynamically changing the position on the tape where the tape transitions to the DATA_FULL state, embodiments of the present invention ensure that enough buffer space remains at the end of the tape to perform any necessary metadata write operations while maximizing the amount of data written to the tape.

[0019] The present invention may be a system, method, or computer program product, or combination thereof, at any level of technical detail that may be integrated. The computer program product may include one or more computer-readable storage media having computer-readable program instructions for causing a processor to perform aspects of the present invention.

[0020] The computer-readable storage medium can be a tangible device that can hold and store instructions for use by an instruction-execution device. The computer-readable storage medium can be, for example, but 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 portable computer diskette (登録商標) , hard disk, random access memory (RAM), read only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded device such as punch cards or raised structures in grooves on which instructions are recorded, or any suitable combination thereof. As used herein, the computer-readable storage medium should not be construed to be a transitory signal per se, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or an electrical signal transmitted over an electrical wire.

[0021] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing device / processing device, or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may be comprised of copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing device / processing device receives the computer-readable program instructions from the network and transmits the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing device / processing device.

[0022] The computer-readable program instructions for carrying out the operations of the present invention may be either assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, such as object-oriented programming languages, e.g., Smalltalk, C++, etc., or conventional procedural programming languages ​​(e.g., the "C" programming language or similar programming languages). The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any kind of network, such as a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., over the Internet using an Internet Service Provider). In some embodiments, electronic circuits, such as programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuitry to perform aspects of the invention.

[0023] Aspects of the present invention are described herein with reference to flowchart illustrations or block diagrams, or combinations thereof, of methods, apparatus (systems), and computer program products or computer programs according to embodiments of the invention. It will be understood that each block of the flowchart illustrations or block diagrams, or combinations thereof, and combinations of blocks in the flowchart illustrations or block diagrams, or combinations thereof, can be implemented by computer-readable program instructions.

[0024] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus, 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 identified in one or more blocks of the flowchart diagrams or block diagrams, or a combination thereof, to produce a machine. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer-programmable data processing apparatus or other device, or a combination thereof, to function in a particular manner, such that a computer-readable storage medium having stored instructions includes an article of manufacture including instructions that implement aspects of the functions / acts identified in one or more blocks of the flowchart diagrams or block diagrams, or a combination thereof.

[0025] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device such that the instructions, which execute on the computer, other programmable data processing apparatus, or other device, implement the functions / acts identified in one or more blocks of the flowchart diagrams or block diagrams, or combinations thereof, to cause the computer, other programmable apparatus, or other device to perform a series of operational steps to generate a computer-implemented process.

[0026] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products or computer programs according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, which includes one or more executable instructions for implementing one or more specified logical functions. In some alternative implementations, the functions shown in the blocks may occur out of the order shown in the figures. For example, two blocks shown in succession may actually be accomplished as a single step performed simultaneously, substantially simultaneously, partially, or fully in a time-overlapping manner, depending on the functionality involved, or the blocks may be performed in the reverse order. It should be noted that each block of the block diagrams or flowchart diagrams or combinations thereof, and combinations of multiple blocks in the block diagrams or flowchart diagrams or combinations thereof, may be implemented by a special-purpose hardware-based system that performs the specified functions or operations, or may execute a combination of special-purpose hardware and computer instructions.

[0027] The description of various embodiments of the present invention has been presented for illustrative purposes and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used in this specification have been selected to best explain the principles of the embodiments, practical applications, or technical improvements over technologies found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.

[0028] The terms used herein are for the purpose of describing particular embodiments only and are not intended to be limiting. Nevertheless, certain definitions that apply throughout the specification will be set forth here.

[0029] As defined herein, the singular forms "a", "an" and "the" also include the plural forms unless the context clearly dictates otherwise.

[0030] As defined herein, "another" means at least two or more.

[0031] As defined herein, "at least one," "one or more," and "and / or" are open-ended expressions that are both conjunctive and disconnected in operation unless expressly stated otherwise. For example, each of the phrases "at least one of A, B, and C," "at least one of A, B, or C," "one or more of A, B, and C," "one or more of A, B, or C," and "A, B, and / or C" means A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together.

[0032] As defined herein, "automatically" and "dynamically" mean without user intervention.

[0033] As defined herein, "comprises," "comprising," "including," and / or "comprising" specify the presence of features, integers, steps, operations, elements or components, or combinations thereof, described herein, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements or components, or combinations thereof.

[0034] As defined herein, "when" can mean "in response to" or "in reaction to," depending on the context. Thus, the phrase "when determined" can be interpreted to mean "in response to determining" or "in reaction to determining," depending on the context. Similarly, the phrase "when [described condition or event] is detected" can be interpreted as "in response to detecting [described condition or event]" or "in response to detecting [described condition or event]" or "in reaction to detecting [described condition or event]," depending on the context.

[0035] As defined herein, the terms "one embodiment," "an embodiment," "in one or more embodiments," "in a particular embodiment," or similar terms mean that a particular feature, structure, or characteristic described in connection with an embodiment is included in at least one embodiment described within the disclosure. Thus, the appearances of the foregoing phrases, or similar words, or combinations thereof, throughout this disclosure may, but do not necessarily, all refer to the same embodiment.

[0036] As defined herein, "in response to" and "in reaction to" mean to respond or react readily to an action or event. Thus, when a second action is performed "in response to" and "in reaction to" a first action, there is a causal relationship between the occurrence of the first action and the occurrence of the second action. The phrases "in response to" and "in reaction to" indicate a causal relationship.

[0037] As defined herein, "real-time" means a level of processing responsiveness that a user or system perceives as being immediately enough to perform a particular action or decision, or that allows the processor to keep up with any external processing.

[0038] As defined herein, "substantially" means that the stated property, parameter, or value need not be achieved exactly, but that deviations or variations, including, for example, tolerances, measurement errors, limits of measurement accuracy, and other factors known to those skilled in the art, may occur in an amount that does not interfere with the effect that the property is intended to provide.

[0039] As defined herein, a "user" and an "individual" each refer to a human being.

[0040] In this specification, the terms "first," "second," etc. may be used to describe various elements. These terms are used only to distinguish one element from another, and should not be construed as limiting these elements, unless otherwise specified or clearly indicated by context.

[0041] As defined herein, a "programmable early warning zone" (PEWZ) is a tape parameter set by a tape drive that contains a two-byte number that specifies how many MB before an early warning (EW) indicator occurs. When the PEWZ reaches the tape head during a write operation, a programmable early warning (PEW) occurs that specifies the number of bytes on the tape before the standard end-of-media EW indicator is reached.

[0042] As defined herein, an "Early Warning" (EW) is a warning that occurs when the tape head reaches the end of a PEWZ during a write operation. The EW indicates that a "DATA_FULL state" has been reached.

[0043] As defined herein, a "DATA_FULL state" is a tape state where normal file operations are no longer allowed, and only append metadata operations are allowed.

[0044] As defined herein, the term "buffer" means a storage area of ​​a tape partition that begins at the end of the PEWZ and ends at the end of the writable area of ​​the partition, in which only metadata write operations are allowed.

[0045] Referring now more particularly to various embodiments of the present invention, Figure 1 is a functional block diagram of a network computing environment, generally designated 100, suitable for operation of a tape buffer program 101 in accordance with at least one embodiment of the present invention. Figure 1 is merely illustrative of one implementation and is not intended to imply any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by one of ordinary skill in the art without departing from the scope of the present invention, as defined by the claims.

[0046] Network computing environment 100 includes user devices 110, tape library 120, and server 130 interconnected via network 140. In embodiments of the present invention, network 140 may be a telecommunications network, a local area network (LAN), a wide area network (WAN), such as the Internet, or a combination thereof, and may include wired, wireless, or fiber optic connections. Network 140 may include one or more wired or wireless networks, or a combination thereof, capable of receiving and transmitting data, voice, or video signals (e.g., including multimedia signals containing voice, data, and video information). In general, network 140 may be any combination of connections and protocols that support communication between user devices 110, tape library 120, server 130, and other computing devices (not shown) within network computing environment 100.

[0047] User device 110 allows a user to access applications running on a host device to communicate with buffer program 101 and communicate with tape library 120 to write and retrieve data to and from various magnetic tape media over a network, such as network 140. In various embodiments of the present invention, user device 110 is a computing device, which can be a laptop computer, tablet computer, netbook computer, personal computer (PC), desktop computer, personal digital assistant (PDA), smartphone, smartwatch, or any programmable electronic device capable of receiving, transmitting, and processing data. Generally, user device 110 represents any programmable electronic device or combination of programmable electronic devices capable of executing machine-readable program instructions and communicating with tape library 120, server 130, and other computing devices (not shown) in network computing environment 100 over a network, such as network 140.

[0048] User device 110 includes user interface 112. User interface 112 provides an interface between user device 110, tape library 120, and server 130. In some embodiments, user interface 112 can be a graphical user interface (GUI) or a web user interface (WUI) and can display text, documents, web browser windows, user options, application interfaces, and instructions for operation, including information (e.g., graphics, text, and sound) that a program presents to a user and control sequences that the user uses to control the program. In other embodiments, user interface 112 can be a script, application programming interface (API), or mobile application software that provides an interface between user device 110, tape library 120, and server 130.

[0049] The user device 110 further includes an application 114. The application 114 can be representative of one or more applications (e.g., a suite of applications) running on the user device 110. In various exemplary embodiments, the application 114 can be an application utilized by a user of the user device 110 to send and receive data, e.g., a mobile device application. In one embodiment, the application 114 can be a client-side application associated with an application running on the server 130 (e.g., a client-side application associated with the buffer program 101). In one embodiment, the application 114 can operate to perform the processing steps of the buffer program 101 (i.e., the application 114 can be representative of the buffer program 101 running on the user device 110).

[0050] Tape library 120 is an automated tape storage device that includes multiple tape drives for writing to and reading from tape media, such as single-reel or two-reel magnetic tape cartridges. In one embodiment, tape library 120 includes tape cartridges formatted according to the LTO and LTFS formatting specifications. In one embodiment, tape library 120 includes IBM (登録商標) TS3400 (商標) Tape library or IBM (登録商標) TS3500 (商標) Tape library. IBM (登録商標)Although specific hardware or software components, or combinations thereof, are referenced, it should be understood that aspects of the present invention may be applied to other tape library technologies as well. In an embodiment of the present invention, tape library 120 comprises a plurality of tape media stored in banks, or groups of storage slots. For example, the tape media may include, but are not limited to, magnetic tape cartridges, magnetic tape cassettes, and optical tape cartridges. Tape library 120 further comprises a plurality of slots for holding tape cartridges, a barcode reader for identifying the tape cartridges, and an automated method (e.g., a robot) for loading tapes.

[0051] In various embodiments of the present invention, server 130 is a computing device, which can be a standalone device, an administrative server, a web server, an application server, a mobile device, or any other electronic device or computing system capable of receiving, transmitting, and processing data. In one embodiment, server 130 represents a server computing system that utilizes multiple computers as a server system, e.g., a cloud computing environment. In one embodiment, server 130 represents a computing system that utilizes clustered computers and components (e.g., database server computers, application server computers, web server computers, webmail server computers, media server computers) that function as a single pool of seamless resources when accessed within network computing environment 100. Generally, server 130 represents any programmable electronic device or combination of programmable electronic devices that execute machine-readable program instructions and can communicate with each other as well as with user devices 110 and tape library 120 in network computing environment 100 over a network, e.g., network 140.

[0052] Server 130 includes a linear tape file system (LTFS) 132. Although LTFS 132 is illustrated in FIG. 1 as being integrated with server 130, in alternative embodiments, LTFS 132 is located remotely from server 130. For example, LTFS 132 may be located on user device 110 or on a device located within tape library 120.

[0053] LTFS 132 is a file system that allows files stored on tape cartridges in a tape library to be accessed in a manner similar to files stored on a hard disk or flash drive. It requires both a specific format for the data on the tape media and software to provide a file system interface to the data. Each LTFS-formatted tape cartridge in tape library 120 appears as a separate folder under a file system mount point. Those skilled in the art will appreciate that applying a file system to a tape drive allows users to organize and search the contents of tape media in the same way as on a hard disk, improving access times for data stored on tape media. For example, LTFS 132 allows LTFS volumes (i.e., tape media) to be used in tape libraries, such as tape library 120. (登録商標) IBM Linear Tape File System - Library Edition (LTFS-LE). (登録商標) Although specific hardware or software components or combinations thereof are mentioned, it should be understood that aspects of the present invention may be applied to other tape library technologies as well.

[0054] Server 130 further includes a buffer program 101. In one embodiment, buffer program 101 operates on a central server, e.g., server 130, and can be utilized by one or more user devices, e.g., user device 110, via application download from the central server or a third-party application store, to be executed on client device 110. In one embodiment, buffer program 101 can be software downloaded from a central server, e.g., server 130, and installed on one or more user devices, e.g., user device 110. In one embodiment, buffer program 101 can be utilized as a software service provided by a third-party cloud service provider (not shown). In one embodiment, buffer program 101 can include one or more components, e.g., add-ons, plug-ins, agent programs, etc. (not shown), that are installed on one or more user devices, e.g., user device 110.

[0055] In various embodiments of the present invention, the buffer program 101 dynamically changes the location on the tape where the tape transitions to the DATA_FULL state. In one embodiment, the location on the tape where the tape transitions to DATA_FULL is relocated based on the size of an index to be added to a data partition. In one embodiment, the location on the tape where the tape transitions to DATA_FULL is relocated based on the size of the last index added to the data partition. In one embodiment, the location on the tape where the tape transitions to DATA_FULL is relocated based on the average size of a predetermined number of previous indexes added to the data partition. In one embodiment, the location on the tape where the tape transitions to DATA_FULL is relocated based on the average of all previous indexes added to the data partition.

[0056] In one embodiment, changing the location on the tape where the tape transitions to a DATA_FULL state further includes changing the size of a buffer reserved for adding metadata write operations only after the tape transitions to a DATA_FULL state.

[0057] In one embodiment, changing the location on the tape where the tape transitions to the DATA_FULL state further includes changing the location of a programmable early warning zone (PEWZ) on the tape. Once the tape head reaches the PEWZ during a write operation, a programmable early warning (PEW) is issued, which alerts a user application that the tape is running out of space for normal file operations. In one embodiment, if a PEW is detected while the tape head is performing a write operation, the buffer program 101 transitions the tape drive to the DATA_FULL state. In one embodiment, if a PEW is detected while the tape head is performing a write operation, normal file operations are allowed until the tape head reaches the end of the PEWZ. At this point, the buffer program 101 transitions the tape to the DATA_FULL state.

[0058] In Figure 2, an exemplary linear serpentine recording on tape, generally designated 200, in accordance with at least one embodiment of the present invention can be seen. Figure 2 is merely an illustration of one implementation and is not intended to imply any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by one of ordinary skill in the art without departing from the scope of the present invention, as defined by the claims.

[0059] The tape is divided horizontally into multiple wraps, and data is written and / or read vertically on each wrap. Each wrap is assigned a number in the order in which it was written. Typically, wraps are arranged on the tape so that wraps running in the same direction are adjacent to each other. For example, wraps running in the forward direction (i.e., wraps running from the beginning to the end of the tape) are adjacent to each other. Similarly, wraps running in the reverse direction (i.e., wraps running from the end of the tape to the beginning) are adjacent to each other. The number of wraps and the number of tracks within each wrap depend on the generation of the LTO tape cartridge. The width of the wraps in the horizontal direction (i.e., track pitch) depends on the tape width and the number of wraps on the tape. For example, an LTO-2 tape cartridge has four data bands and 16 wraps per band, thus requiring 64 passes to fill. On the other hand, an LTO-7 tape cartridge has four data bands and 28 wraps per band, thus requiring 112 passes to fill.

[0060] As shown in FIG. 2, tape 200 is divided into four data bands (Data Band 0, Data Band 1, Data Band 2, and Data Band 3). As further shown in FIG. 2, in Data Band 0, data recorded in forward-running wraps labeled Wrap 0, Wrap 2N, and Wrap N-2 can be seen. These forward-running wraps are arranged on the tape so that even-numbered wraps within a data band are adjacent to one another. Similarly, in Data Band 0, data recorded in reverse-running wraps labeled Wrap 1, Wrap 2N-1, and Wrap N-1 can be seen. These reverse-running wraps are arranged on the tape so that odd-numbered wraps within a data band are adjacent to one another. Because data is written on each subsequent wrap in a common recording direction, subsequent wraps are arranged outward from the center of the data band toward the periphery of the data band, regardless of the particular recording direction.

[0061] 3A is a block diagram illustrating an example of file data stored in a data partition 300A of a tape in accordance with at least one embodiment of the present invention. FIG. 3A is merely an illustration of one implementation and is not intended to imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by one of ordinary skill in the art without departing from the scope of the present invention, as defined by the claims.

[0062] Those skilled in the art will understand that although data stored in LTFS looks like data stored on a hard disk, the fundamental sequential nature of writing data to tape media remains the same. Data is written sequentially in predetermined, fixed-size zones (i.e., logical blocks), and files are always appended to the end of the tape. Moreover, LTFS is a write-once file system. In other words, even if a file stored on one or more data blocks is modified, overwritten, or deleted from the tape image, the associated data blocks are not freed. Rather, the memory allocated to the associated data blocks is invalidated (i.e., the associated data blocks are no longer referenced by an index), and newly added data is written as separate, non-contiguous blocks after the end-of-data (EOD) mark on the tape.

[0063] Furthermore, those skilled in the art will understand that, unlike read / write commands for block devices such as hard disks, read / write commands issued to tape drives do not specify block numbers. However, the location of data corresponding to a read / write request can be determined based on the current position of the tape medium relative to the tape head. The current position of the tape medium can be obtained by issuing a "Read Position" command. Similarly, the current position of the tape medium can be set to any position by issuing a "Locate / Space" command. When a read / write command is successfully executed, the current position of the tape medium is updated.

[0064] In an embodiment of the present invention, data written to magnetic tape includes the following information: (i) a record, (ii) a file mark (FM), and (iii) an end of data (EOD) mark. As used herein, the term "record" refers to a variable-length string of data on tape. As used herein, the term "file mark" (FM mark) refers to a zero-length separator on tape that delimits the data (i.e., records) of a particular file. As used herein, the term "end of data mark" (EOD mark) refers to a designation of the end of data written to tape.

[0065] As illustrated by FIG. 3A , data partition 300A includes location_0, location_1, location_2, location_3, location_4, location_5, and location_6. Locations 0-6 define physical units of data (i.e., data blocks) of data partition 300A. In embodiments of the present invention, a block may contain a single record, a portion of a record, or multiple records. In some embodiments, data blocks may be fixed in size. In other embodiments, data blocks may be variable in size. Data partition 300A further includes the following records: Rec#0, Rec#1, Rec#2, Rec#3, FM#4, and Rec#5. Rec#0, Rec#1, Rec#2, and Rec#3 belong to the same file, and Rec#5 belongs to a different file, as indicated by FM#4 located between Rec#3 and Rec#5. Rec#5 is the end of the data (indicated by the end-of-data (EOD) mark) at location_6. In an embodiment of the present invention, when a "READ" command is issued, the current position of the tape head is updated. For example, if the current position of the tape head is at position_1 and a "READ" command is issued for Rec#3, the tape head is moved to position_3 and Rec#3 is read. Upon completion of reading Rec#3, the current position of the tape head is updated to position_4.

[0066] 3B is a block diagram illustrating an example of file data stored in data partition 300B of a tape after appending file data to data partition 300A of FIG. 3A in accordance with at least one embodiment of the present invention. FIG. 3B is merely an illustration of one implementation and is not intended to imply any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by one of ordinary skill in the art without departing from the scope of the present invention, as defined by the claims.

[0067] Data partition 300B in FIG. 3B shows data partition 300A in FIG. 3A after a "WRITE" command has been issued. In one embodiment, the "WRITE" command can include one or more of the following, but is not limited to: (i) modifying a record, (ii) overwriting a record, and (iii) adding new data. Data partition 300B includes position_0, position_1, position_2, position_3, position_4, position_5, position_6, and position_7. Positions 0-6 of data partition 300B in FIG. 3B correspond to positions 0-6 of data partition 300A in FIG. 3A. Data partition 300B in FIG. 3B further includes the following records: Rec#0, Rec#1, Rec#2, Rec#3, FM#4, Rec#5, and Rec#6. Rec#0-#5 of data partition 300B in FIG. 3B correspond to Rec#0-#5 of data partition 300A in FIG. 3A. In one embodiment, a "WRITE" operation appends data to the EOD mark. A "WRITE" was issued as illustrated by data partition 300B. Thus, because Rec#5 was the last record written to data partition 300A at location_5 in FIG. 3A (indicated by the EOD mark at location_6), Rec#6 was written to location_6, FM#7 was written to location_7, and the EOD mark was updated to location_8 in data partition 300B in FIG. 3B.

[0068] 4A is a block diagram illustrating an example of an LTFS volume, generally designated 400A, in accordance with at least one embodiment of the present invention. FIG. 4A is merely an illustration of one implementation and is not intended to imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by one skilled in the art without departing from the scope of the present invention, as defined by the claims.

[0069] In various embodiments of the present invention, an LTFS volume includes a pair of LTFS partitions: a data partition and an index partition. After file data is added to the data partition, an index construct (containing metadata associated with the file data in the data partition) is added to the end of the file data, and the index in the index partition is overwritten with the index construct added to the data partition.

[0070] Each partition contains a label construct followed by a content area. The label construct contains identifying information about the particular LTFS volume. In a data partition, the content area is made up of data extents and an index construct. A data extent contains file data written as sequential logical blocks. A file should consist of zero or more data extents and associated metadata stored in an index construct. The index construct contains an index, which is an XML data structure that describes the mapping between files and data extents.

[0071] In an index partition, the content area is made up of three different types of information: a generation number, a self-pointer, and a back-pointer. The generation number contains the age of the latest index relative to past indexes in the volume. Each index in a volume has a generation number, which is a non-negative integer that increases as changes are made to the volume. The index with the highest generation number on a volume represents the current state of the entire volume. The self-pointer records the volume to which the index belongs and the block location of the index within that volume. The back-pointer records the block location of the last index that existed in the data partition just before this index was written.

[0072] 4A, the data partition (DP) 420 includes a label structure 422, and the content area includes index #0, file #1, file #2, index #1, file #3, and index #2. The index partition (IP) 410 includes a label structure 412 and index #2. Index #2 in the DP 420 is the same index as index #2 in the IP 410.

[0073] FIG. 4B is a block diagram, generally designated 400B, illustrating an example of a programmable early warning zone (PEWZ) on tape, in accordance with at least one embodiment of the present invention. As illustrated by FIG. 4B, a data partition 450 begins at a beginning of partition (BOP) 452 and ends at an end of partition (EOP) 454. The data partition 450 includes a PEWZ 456 and a buffer 458. A programmable early warning (EW) is generated when the tape head reaches the beginning of the PEWZ 460 during a file operation. In one embodiment, an early warning (EW) is generated once the tape head reaches the end of the PEWZ 462 during a file operation. As further illustrated by FIG. 4B, the point on the tape at which the tape transitions to the DATA_FULL state corresponds to the tape head reaching the end of the PEWZ 462.

[0074] FIG. 5 is a flowchart diagram, generally designated 500, illustrating several operational steps for modifying a buffer at the end of the last data band of a data partition on an LTFS-formatted LTO tape cartridge in accordance with at least one embodiment of the present invention. FIG. 5 is merely an illustration of one embodiment and is not intended to imply any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the illustrated environment may be made by one of ordinary skill in the art without departing from the scope of the present invention, as defined by the claims. It should be noted that while the accompanying flowchart diagram is an example of an LTO tape cartridge, one of ordinary skill in the art will understand that various embodiments of the present invention may be implemented in any type of LTFS-formatted tape storage device.

[0075] In step 502, the buffer program 101 mounts an LTFS formatted LTO tape.

[0076] In step 504, buffer program 101 determines whether the available storage space in the data partition of the tape is greater than a predetermined value (e.g., 200 MB). If buffer program 101 determines that the available storage space in the data partition of the tape is less than the predetermined value (decision step 504, "No" branch), buffer program 101 proceeds to step 506. If buffer program 101 determines that the available storage space in the data partition of the tape is greater than the predetermined value (decision step 504, "Yes" branch), buffer program 101 proceeds to step 508.

[0077] In step 506, buffer program 101 transitions to a DATA_FULL state, in which only metadata write operations are allowed on the data partition. For example, buffer program 101 instructs the tape head of the tape drive to perform only metadata write operations, such as writing an index to the data partition. In another example, if the tape head of the tape drive is actively writing file data to the data partition when the DATA_FULL state is issued, the tape drive automatically terminates writing any more file data to the data partition and begins indexing to the end of the most recent file data written to the data partition.

[0078] In step 508, buffer program 101 generates a programmable early warning zone (PEWZ). In one embodiment, the size of the PEWZ is based on the requirements of a particular user application. For example, a user application may request that the tape drive generate a PEWZ having a size of 500 MB. In response to the request, buffer program 101 generates a two-byte value that specifies how many MB (in this case, 500 MB) there are before the tape transitions to a DATA_FULL state.

[0079] In decision step 510, buffer program 101 determines whether a request for a file operation has been received. In one embodiment, the file operation may include, but is not limited to, one or more of a Create Operation (a create operation to create a new file), a Write Operation (a write operation to write data associated with a file), a Re-Position Operation or Seek Operation (a re-position operation or seek operation to move the file pointer forward or backward), a Delete Operation (a delete operation to delete data associated with a file), and a Truncate Operation (a truncate operation to delete information stored within a file without deleting the file itself).

[0080] In step 512, in response to determining that a request for a file operation has been received, buffer program 101 performs the file operation. For example, buffer program 101 instructs the tape head of a tape drive to perform the file operation within the data partition of the tape.

[0081] In step 514, buffer program 101 determines whether a programmable early warning (PEW) was generated during the execution of the file operation. In an alternative embodiment, buffer program 101 determines whether the tape head reached the PEWZ during the execution of the file operation.

[0082] If a PEW is not generated while writing file data to a data partition according to the file operation (decision step 514, "No" branch), buffer program 101 returns to decision step 510. Alternatively, if the tape head does not reach the PEWZ during execution of the file operation, buffer program 101 returns to step 510.

[0083] If a PEW is generated while writing file data to a data partition in accordance with the file operation (decision step 514, "Yes" branch), buffer program 101 proceeds to step 524. Alternatively, in response to detecting that the tape head has reached the PEWZ during execution of the file operation, buffer program 101 returns to step 524.

[0084] In step 516, buffer program 101 determines whether an index needs to be attached to the data partition of the tape. If an index does not need to be attached to the data partition of the tape, buffer program 101 returns to decision step 510. If an index needs to be attached to the data partition of the tape, buffer program 101 proceeds to step 518.

[0085] In step 518, buffer program 101 performs the operation of indexing the data partition, for example, buffer program 101 instructs the tape head of the tape drive to index to the end of the file data on the data partition of the tape.

[0086] In decision step 520, buffer program 101 determines whether a PEW was generated while indexing the data partition. In an alternative embodiment, buffer program 101 determines whether the tape head reached the PEWZ while indexing the data partition of the tape.

[0087] If a PEW is not generated while indexing the data partition, buffer program 101 proceeds to step 522. Alternatively, if the tape head does not reach the PEWZ while indexing the data partition, buffer program 101 proceeds to step 522.

[0088] If a PEW is generated while the data partition is being indexed, buffer program 101 proceeds to step 524. Alternatively, if the tape head reaches the PEWZ while the data partition is being indexed, buffer program 101 proceeds to step 524.

[0089] In step 522, buffer program 101 changes the location of the PEWZ relative to the end of the writable area of ​​the data partition and the size of the buffer. It should be noted that by moving the location of the PEWZ, the size of the buffer allocated for performing metadata operations only when the DATA_FULL state is reached is also changed. For example, a 1 GB buffer may be reserved at the end of the data partition for performing metadata operations only when the tape drive transitions to the DATA_FULL state. If a PEWZ with a size of 500 MB is created, this would correspond to 500 MB of storage space immediately preceding the 1 GB of storage space reserved as a buffer. Therefore, if a PEWZ with a size of 500 MB is moved 500 MB closer to the end of the writable area of ​​the data partition, the buffer reserved for performing metadata operations only when the DATA_FULL state is reached will ultimately be reduced from 1 GB to 500 MB.

[0090] In one embodiment, changing the position of the PEWZ on the tape is based on the size of the latest index attached to the data partition. For example, if the size of the latest index attached to the data partition is 200 MB, the buffer program 101 moves the position of the PEWZ so that the size of the buffer is equal to the size of the latest index attached to the data partition (200 MB). Therefore, when the tape head reaches the end of the PEWZ, the tape drive will transition to a DATA_FULL state, in which 200 MB is reserved solely for performing metadata write operations. In another example, if the size of the latest index attached to the data partition is 300 MB, the buffer program moves the position of the PEWZ so that the size of the buffer is twice the size (600 MB) of the latest index attached to the data partition (300 MB). Therefore, when the tape head reaches the end of the PEWZ, the tape drive transitions to the DATA_FULL state, in which 600 MB is reserved for metadata write operations only.

[0091] In step 524, buffer program 101 transitions to a DATA_FULL state, in which only metadata write operations are allowed on the data partition. For example, buffer program 101 instructs the tape head of the tape drive to perform only metadata write operations, such as writing an index to the data partition. In another example, if the tape head of a tape drive is actively writing file data to the data partition when the DATA_FULL state is issued, the tape drive automatically terminates writing any more file data to the data partition and begins indexing to the end of the most recent file data written to the data partition.

[0092] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed.

[0093] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0094] The features are as follows:

[0095] On-demand self-service: A cloud consumer can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without requiring human interaction with the provider of the service.

[0096] Broad network access: Functionality is available over the network and accessed via standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

[0097] Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, and various physical and virtual resources are dynamically allocated and reallocated according to demand. Consumers generally have no control or knowledge of the exact location of the resources provided, but are said to be location-independent in that they may be able to specify a location at a higher level of abstraction (e.g., country, state, or data center).

[0098] Rapid Elasticity: Capabilities can be provisioned quickly and elastically, sometimes automatically, scaled out quickly, released quickly, and scaled in quickly. To the consumer, the capabilities available for provisioning are often unlimited and can be purchased in any quantity at any time.

[0099] Measured Services: Cloud systems automatically control and optimize resource usage by using metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services being used.

[0100] The service model is as follows:

[0101] Software as a Service (SaaS): The ability to offer consumers the ability to use a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface, such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functions, with the possible exception of limited user-specific application configuration settings.

[0102] Platform as a Service (PaaS): The capability offered to consumers to deploy consumer-created or acquired applications, created using programming languages ​​and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, e.g., including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the application-hosting environment configuration.

[0103] Infrastructure as a Service (IaaS): The capability offered to consumers to provision processing, storage, network, and other basic computing resources on which they can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does have control over the operating systems, storage, deployed applications, and in some cases, limited control over selecting network components (e.g., host firewalls).

[0104] The deployment models are as follows:

[0105] Private Cloud: Cloud infrastructure is operated exclusively for an organization. The cloud infrastructure may be managed by the organization or a third party, and may reside on-premises or off-premises.

[0106] Community Cloud: Cloud infrastructure is shared by several organizations and supports a specific community with common interests (e.g., mission, security requirements, policies, and compliance considerations). The cloud infrastructure may be managed by the organizations or a third party and may reside on-premises or off-premises.

[0107] Public Cloud: Cloud infrastructure is available to the general public or large industry groups and is owned by organizations that sell cloud services.

[0108] Hybrid Cloud: A cloud infrastructure is a blend of two or more clouds (private, community, or public) that remain unique entities but are brought together by standardized or proprietary technologies (e.g., cloud bursting for load balancing between clouds) that enable data and application portability.

[0109] A cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes.

[0110] FIG. 6 is a block diagram illustrating a cloud computing environment 50 in accordance with at least one embodiment of the present invention. The cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or any combination thereof, may communicate. The cloud computing nodes 10 may communicate with each other. They may be physically or virtually grouped in one or more networks (not shown), such as a private cloud, community cloud, public cloud, or hybrid cloud, or any combination thereof, as described herein. This allows the cloud computing environment 50 to provide infrastructure, platform, or software, or any combination thereof, as a service without the cloud consumer having to maintain resources on their local computing device. It is understood that the types of computing devices 54A-54N shown are intended to be illustrative only, and that computing node 10 and cloud computing environment 50 communicate with any type of computerized device (e.g., using a web browser) over any type of network or network-addressable connection or combination thereof.

[0111] Figure 7 is a block diagram illustrating a set of functional abstraction model layers provided by the cloud computing environment 50 illustrated in Figure 6 in accordance with at least one embodiment of the present invention. It should be understood that the components, layers, and functions illustrated in Figure 7 are intended to be merely exemplary, and that embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0112] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include a mainframe 61, a RISC (Reduced Instruction Set Computer) architecture-based server 62, a server 63, a blade server 64, a storage device 65, and a network and networking components 66. In some embodiments, the software components include network application server software 67 and database software 68.

[0113] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71; virtual storage 72; virtual networks 73; the above virtual networks 73 including, for example, virtual private networks; virtual applications and operating systems 74; and virtual clients 75.

[0114] In one example, management layer 80 may provide several functions, as described below. Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks and protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides allocation and management of cloud computing resources so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides pre-provisioning and procurement of cloud computing resources where future requirements are predicted according to SLAs.

[0115] The workload layer 90 provides examples of functions for which the cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this layer include mapping and navigation 91; software development and lifecycle management 92; virtual classroom instruction delivery 93; data analytics processing 94; transaction processing 95; and dynamic migration of conversations between communication platforms 96.

[0116] FIG. 8 is a block diagram illustrating components of a computing device, generally designated 800, suitable for executing buffer program 101. For example, computing device 800 may represent user device 110, tape library 120, or server 130 of FIG. 1, or a combination thereof. Computing device 800 includes one or more processors 804 (including one or more computer processors), a communications fabric 802, memory 806, including RAM 816 and cache 818, persistent storage 808, a communications unit 812, one or more I / O interfaces 814, a display 822, and one or more external devices 820. It should be understood that FIG. 8 is illustrative of only one embodiment and is not intended to imply any limitation with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made.

[0117] As shown, computing device 800 operates on a communications fabric 802 that provides communications between one or more computer processors 804, memory 806, persistent storage 808, communications units 812, and one or more input / output (I / O) interfaces 814. Communications fabric 802 can be implemented with any architecture suitable for passing data or control information between one or more processors 804 (e.g., microprocessors, communications processors, and network processors), memory 806, one or more external devices 820, and any other hardware components in the system. For example, communications fabric 802 can be implemented using one or more buses.

[0118] Memory 806 and persistent storage 808 are computer-readable storage media. In the illustrated embodiment, memory 806 includes random-access memory (RAM) 816 and cache 818. In general, memory 806 may include any suitable volatile or non-volatile computer-readable storage medium or media.

[0119] Program instructions for buffer program 101 may be stored in persistent storage 808, or more generally, any computer-readable storage medium, for execution by one or more of the respective computer processors 804 via one or more memories of memory 806. Persistent storage 808 may be a magnetic hard disk drive, a solid-state disk drive, a semiconductor storage device, a read-only memory (ROM), an electronically erasable programmable read-only memory (EEPROM), a flash memory, or any other computer-readable storage medium capable of storing program instructions or digital information.

[0120] The media used by persistent storage 808 may also be removable. For example, a removable hard disk may be used for persistent storage 808. Other examples include optical and magnetic disks, thumb drives, and smart cards, which are inserted into a drive for transfer onto another computer-readable storage medium that is also part of persistent storage 808.

[0121] In these examples, communications unit 812 provides for communication with other data processing systems or devices. In these examples, communications unit 812 may comprise one or more network interface cards. Communications unit 812 may provide for communication through the use of either or both physical and wireless communication links. In the context of some embodiments of the present invention, sources of various input data may be physically remote from computing device 800, such that input data may be received and output may similarly be transmitted via communications unit 812.

[0122] The one or more I / O interfaces 814 enable input and output of data with other devices that may operate in conjunction with the computing device 800. For example, the one or more I / O interfaces 814 may provide a connection to one or more external devices 820, which may be a keyboard, keypad, touchscreen, or other suitable input device. The one or more external devices 820 may also include portable computer-readable storage media, such as thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention may be stored on such portable computer-readable storage media and loaded onto persistent storage 808 via the one or more I / O interfaces 814. The one or more I / O interfaces 814 may also be connected to a display 822, which provides a mechanism for displaying data to a user and may be, for example, a computer monitor.

Claims

1. 1. A computer-implemented method for changing the location on a tape where the tape transitions to a DATA_FULL state, comprising: determining a size of an index written to the data partition of the tape after file data has been written to the data partition of the tape; and changing the location within the data partition of the tape at which the tape transitions to the DATA_FULL state based on the size of the index representing metadata associated with the file data; A computer-implemented method, including:

2. 2. The computer-implemented method of claim 1, wherein the DATA_FULL state is the state of the tape where only write operations that write the index representing metadata to the data partition are permitted.

3. 3. The computer-implemented method of claim 2, wherein the DATA_FULL state occurs in response to a tape head reaching the end of a Programmable Early Warning Zone (PEWZ) within the data partition of the tape during a write operation, wherein the end of the Programmable Early Warning Zone (PEWZ) is the location within the data partition of the tape at which the tape transitions to the DATA_FULL state.

4. 2. The computer-implemented method of claim 1, wherein changing the location on the tape where the tape transitions to the DATA_FULL state further comprises changing the location of a Programmable Early Warning Zone (PEWZ) within the data partition of the tape.

5. 5. The computer-implemented method of claim 4, wherein changing the location on the tape where the tape transitions to the DATA_FULL state further comprises changing the size of a buffer located after the PEWZ in the data partition of the tape, wherein only metadata write operations are allowed in the buffer.

6. 2. The computer-implemented method of claim 1, wherein the location on the tape where the tape transitions to the DATA_FULL state is moved toward the end of the writable area of ​​the data partition of the tape if the size of the index representing the metadata associated with the file data is smaller than the size of a buffer located between the location on the tape where the tape transitions to the DATA_FULL state and the end of the writable area of ​​the data partition of the tape.

7. 2. The computer-implemented method of claim 1, wherein the location on the tape where the tape transitions to the DATA_FULL state is moved away from the end of the writable area of ​​the data partition of the tape if the size of the index representing the metadata associated with the file data is greater than the size of a buffer located between the location on the tape where the tape transitions to the DATA_FULL state and the end of the writable area of ​​the data partition of the tape, provided that the tape head has not yet arrived at the location before the move, but has already arrived, written to, and passed the location after the move, the tape transitions to the DATA_FULL state immediately after the move.

8. 1. A computer program for changing the location on a tape where the tape transitions to a DATA_FULL state, comprising: determining a size of an index written to the data partition of the tape after file data has been written to the data partition of the tape; and changing the location within the data partition of the tape at which the tape transitions to the DATA_FULL state based on the size of the index representing metadata associated with the file data; The computer program causing a computer to execute a method comprising:

9. 9. The computer program product of claim 8, wherein the DATA_FULL state is a state of the tape in which only write operations that write the index representing metadata to the data partition are permitted.

10. 10. The computer program product of claim 9, wherein the DATA_FULL state occurs in response to a tape head reaching the end of a Programmable Early Warning Zone (PEWZ) within the data partition of the tape during a write operation, wherein the end of the Programmable Early Warning Zone (PEWZ) is the location within the data partition of the tape at which the tape transitions to the DATA_FULL state.

11. 9. The computer program product of claim 8, wherein changing the location on the tape where the tape transitions to the DATA_FULL state further comprises changing a location of a Programmable Early Warning Zone (PEWZ) within the data partition of the tape.

12. 12. The computer program product of claim 11, wherein changing the location on the tape where the tape transitions to the DATA_FULL state further comprises changing a size of a buffer located after the PEWZ in the data partition of the tape, wherein only metadata write operations are allowed in the buffer.

13. 9. The computer program product of claim 8, wherein the location on the tape where the tape transitions to the DATA_FULL state is moved toward the end of the writable area of ​​the data partition of the tape if the size of the index representing the metadata associated with the file data is smaller than the size of a buffer located between the location on the tape where the tape transitions to the DATA_FULL state and the end of the writable area of ​​the data partition of the tape.

14. 9. The computer program product of claim 8, wherein the location on the tape where the tape transitions to the DATA_FULL state is moved away from the end of the writable area of ​​the data partition of the tape if the size of the index representing metadata associated with the file data is greater than the size of a buffer located between the location on the tape where the tape transitions to the DATA_FULL state and the end of the writable area of ​​the data partition of the tape, provided that if the tape head has not yet arrived at the location before the move but has already arrived, written to, and passed the location after the move, the tape transitions to the DATA_FULL state immediately after the move.

15. 1. A computer system for changing a position on a tape at which the tape transitions to a DATA_FULL state, the computer system comprising: one or more computer processors; and one or more computer-readable storage media having a computer program stored thereon; The computer program comprises: determining the size of an index written to the data partition of the tape after file data has been written to the data partition of the tape; and Changing the location within the data partition of the tape at which the tape transitions to the DATA_FULL state based on the size of the index representing metadata associated with the file data. The computer system causes the one or more computer processors to execute the steps.

16. 16. The computer system of claim 15, wherein the DATA_FULL state is a state of the tape where only metadata write operations are permitted.

17. 17. The computer system of claim 16, wherein the DATA_FULL state occurs in response to a tape head reaching the end of a Programmable Early Warning Zone (PEWZ) within the data partition of the tape during a write operation, wherein the end of the Programmable Early Warning Zone (PEWZ) is the location within the data partition of the tape at which the tape transitions to the DATA_FULL state.

18. 16. The computer system of claim 15, wherein changing the location on the tape where the tape transitions to the DATA_FULL state further comprises changing a location of a Programmable Early Warning Zone (PEWZ) within the data partition of the tape.

19. 16. The computer system of claim 15, wherein the location on the tape where the tape transitions to the DATA_FULL state is moved toward the end of the writable area of ​​the data partition of the tape if the size of the index representing the metadata associated with the file data is smaller than the size of a buffer located between the location on the tape where the tape transitions to the DATA_FULL state and the end of the writable area of ​​the data partition of the tape.

20. 16. The computer system of claim 15, wherein the location on the tape where the tape transitions to the DATA_FULL state is moved away from the end of the writable area of ​​the data partition of the tape if the size of the index representing the metadata associated with the file data is greater than the size of a buffer located between the location on the tape where the tape transitions to the DATA_FULL state and the end of the writable area of ​​the data partition of the tape, provided that if the tape head has not yet arrived at the location before the move but has already arrived, written to, and passed the location after the move, the tape transitions to the DATA_FULL state immediately after the move.

Citation Information

Patent Citations

  • Method for storing data on magnetic tape

    JP1994325436A

  • Recording method in tape pre-end area

    JP1996293138A

  • Apparatus for controlling tape drive, method, and program

    JP2006221695A

  • Backup method, restoration method, storage system, and program

    JP2016051294A

  • Dynamic partition allocation for tape file system

    US20170169051A1