Populating a sparsely allocated memory in a storage array

Apparatus and associated methodology contemplating a data storage system having a memory that includes a first addressable storage space and a second differently addressable storage space. A controller selectively accesses stored instructions that when executed transfer some user data sets with the first addressable storage space in accordance with a dense allocation of the first addressable storage space, and transfer other user data sets with the second addressable storage space in accordance with a sparse allocation of the second addressable storage space that allocates a predefined reserved storage capacity between adjacent stored non-sequential user data sets.

FIELD

The present embodiments relate generally to a storage element array suited for use in a distributed storage system and more particularly but without limitation to storing user data sets in the array.

BACKGROUND

The combination of multiple storage devices into distributed data storage capacity has proliferated in response to market demands for storing enormous amounts of data that can be readily retrieved in a fast, reliable, and efficient manner.

With continued demands for ever increased levels of storage capacity and data transfer throughput performance, there remains an ongoing need for improvements in the manner in which the storage elements in such data storage arrays are operationally managed in order to optimize the capacity and data throughput performance parameters while minimizing storage expense. It is to these and other related improvements that preferred embodiments of the present invention are generally directed.

SUMMARY

Some embodiments of the present invention contemplate a data storage system having a memory that includes a first addressable storage space and a second differently addressable storage space. A controller selectively accesses stored instructions that when executed transfer some user data sets with the first addressable storage space in accordance with a dense allocation of the first addressable storage space, and transfer other user data sets with the second addressable storage space in accordance with a sparse allocation of the second addressable storage space that allocates a predefined reserved storage capacity between adjacent stored non-sequential user data sets.

Some embodiments of the present invention contemplate a method including: operating a data storage system containing a memory that includes a first addressable storage space in accordance with a dense allocation and a second differently addressable storage space in accordance with a sparse allocation that allocates a predefined reserved storage capacity between adjacent stored non-sequential user data sets; and executing an I/O command to store a commanded user data set to the first addressable storage space if the commanded user data set is sequential to the tail of a user data string stored in the first addressable storage space, else storing the commanded user data set to the second addressable storage space.

Some embodiments of the present invention contemplate a data storage library having a frame and a shelf system supported by the frame to queue a plurality of tape cartridges. A plurality of tape drives are each adapted to engage one of the tape cartridges at a time in a data transfer relationship. A transport system selectively moves the tape cartridges between the queue in the shelf and the data transfer relationships in one of the plurality of tape drives. A memory includes a first addressable storage space and a second differently addressable storage space. A controller selectively accesses stored instructions that when executed transfer some user data sets with the first addressable storage space in accordance with a dense allocation of the first addressable storage space, and transfer other user data sets with the second addressable storage space in accordance with a sparse allocation of the second addressable storage space that allocates a predefined reserved storage capacity between adjacent stored non-sequential user data sets.

DETAILED DESCRIPTION

Initially, it is to be appreciated that this disclosure is by way of example only, not by limitation. The user data set transfer concepts herein are not limited to use or application with any specific system or method for using storage element devices. Thus, although the instrumentalities described herein are for the convenience of explanation, shown and described with respect to exemplary embodiments, it will be appreciated that the principles herein may be applied equally in other types of storage element systems and methods involving the storage and retrieval of data.

To illustrate an exemplary environment in which preferred embodiments of the present invention can be advantageously practiced,FIG. 1shows a data storage system100characterized as providing a storage area network (SAN) utilizing mass storage. The system100includes a number of processing client devices102, respectively identified as clients A, B, and C. The clients102can interact with each other as well as with a pair of data storage arrays104(denoted A and B, respectively) via a fabric106. The fabric106is preferably characterized as Ethernet, although other configurations can be utilized as well, including the Internet. Data is transferred between the clients102and the storage arrays104by executing input/output (I/O) commands. Generally, an I/O command can originate from either a client102or a storage array104to store data to or retrieve previously stored data from a storage array104.

Each storage array104preferably includes a pair of controllers108(denoted A1, A2and B1, B2) for redundancy sake, and a set of data storage devices110. It is further contemplated that in some embodiments the A client102and the A data storage array104can be physically located at a first site, the B client102and B storage array104can be physically located at a second site, and the C client102can be yet at a third site, although such is merely illustrative and not limiting.

FIG. 2diagrammatically depicts illustrative embodiments of the data storage system100in which one of the storage arrays104is connected to the clients102to transfer user data with a number of drives112that are individually selectable to transfer the user data by executing the I/O commands via the switchable fabric106. The drives112can be, without limitation, removable media drives such as tape drives used for purposes of the detailed description below. For purposes of this description and meaning of the claimed subject matter the term “user data” means data that is transferred to the storage array104and that is retrieved from the storage array104as the result of a user of the data storage system100interfacing, either directly or indirectly, with one or more of the clients102. For example, without limitation, the client102can be a computational device with a user interface permitting the user to either store information of quantitative or qualitative value (such as a document), or to retrieve such previously stored information. That is, when a user of a computer selects menu options “file,” “save,” and designates a “filename,” the computer saves user data corresponding to the computer readable content (such as a document, spreadsheet, drawing, and the like) to a data storage device. It is noted that the computer system in handling file data also handles non-file object-oriented programming language structures such as inodes in accordance with embodiments of this invention. During a transfer the file data is accompanied by the non-file data, sometimes referred to as metadata, that provides system information for properly routing and processing the user data in order to reliably store and retrieve it. The metadata informs the data storage system of pertinent details such as what type of data format is being transferred, the file name, redundancy identifiers, and the like.

In these illustrative embodiments each of the remote clients102can view the entire physical storage capacity (via the drives112) of the storage array104as a unified storage space. The storage array104, the client102, or a network appliance (not shown) virtualizes the physical storage space to a logical addressing nomenclature. The storage array104also buffers data being transferred between the clients102and the drives112to optimize I/O throughput performance, such as by employing writeback commands that temporarily store user data and acknowledge the write as being complete before that transfer of user data is actually completed via the drives112. The storage array104can also advantageously employ predetermined fault tolerance arrangements in which parallel, redundant links store at least some of the user data so that a redundant copy of the user data can be retrieved or reconstructed in the event that the primary copy of the user data becomes unavailable.

The circuitries represented by the functional block depiction inFIG. 2and otherwise throughout this description generally can be embodied in a single integrated circuit or can be distributed among a number of discrete circuits as desired. In these illustrative embodiments, a main processor114, preferably characterized as a programmable computer processor, provides top-level control in accordance with programming steps and processing data stored in non-volatile memory (such as flash memory or similar) and in dynamic random access memory (DRAM). A memory, such as the cache116, temporarily stores (buffers) unexecuted I/O commands and corresponding user data until such a time that they are executed to effect the transfer of the user data via the drives112. Another control memory118is employed to store location information regarding where user data is stored elsewhere, and to provide for retrieving stored user data from multiple memories, as described herein. Examples of a control memory device118include, but are not limited to, solid state memory devices, magnetic disk drives, rotating memory devices, general random access memory devices, etc. Certain embodiments contemplate the control memory device118providing data recall (and data storage) at a significantly faster rate than that of bulk memory device162, such as which uses tape cartridges136to retain data in the description below.

The controller108includes a fabric interface (I/F)120for communicating with the clients102via the fabric106, and a drive I/F122for communicating with the drives112. The I/F circuits120,122and a path controller124form a pass-through communication path for commands and data between the drives112and the client(s)102, such as by employing the cache memory116. Again, although illustrated discretely, it will be understood that each path controller124and the corresponding I/F circuits120,122can be unitarily constructed.

FIG. 3diagrammatically depicts the storage array104constructed as a tape library in accordance with illustrative embodiments of the present invention. External communications for the transfers of user data corresponding to the I/O commands are performed via the fabric interface120coupled to a communications link135. The number and arrangement of the various components depicted inFIG. 3are merely illustrative and in no way limiting of the claimed invention. The tape library has a plurality of tape cartridges136grouped in magazines138. Each of the tape cartridges136is identifiable, such as by radio frequency identification (RFID) tags or semiconductor memory devices and the like, for selectively loading a desired one of the tape cartridges136into one of the plurality of tape drives112. These illustrative embodiments depict the usage of a semiconductor memory in the form of a medium auxiliary memory (“MAM”) device for this purpose. Again, these described embodiments in which the data storage device is a tape cartridge136selectively mounted in a tape drive112are merely illustrative and not limiting of the claimed embodiments. For example, without limitation, in equivalent alternative embodiments the drives112can be configured to transfer data with other types of removable data storage devices, and in other equivalent alternative embodiments the drives112can contain nonremovable data storage devices such as hard disc drives and solid state drives and the like.

In these illustrative embodiments, each of the tape cartridges136is selectively mounted into one of the tape drives112to cooperatively form an operable data transfer relationship to store data to and/or retrieve data from the tape cartridge136. Each tape drive112can have a MAM device reader/writer140to store data to and/or retrieve data from the MAM device. In these illustrative embodiments the tape drive112establishes wireless communications142with the MAM device, such as by radio frequency communication, although neither the disclosed embodiments nor the claimed embodiments are so limited to those illustrative embodiments. The MAM device data can advantageously include access occurrence data, such as timestamp data indicating when the tape cartridge136is mounted to a tape drive112, load count data indicating how long a tape cartridge136is mounted to the tape drive112, validity data indicating any data and/or portions of the storage medium in a tape cartridge136of questionable integrity, and the like. Besides, or in addition to, storing data on the MAM devices, a system control144can include memory (“MEM”) to accommodate information, such as the access occurrence data, load data, validity data, and the like, from each of a plurality of MAM devices associated with respective tape cartridges136. Computational routines on the data stored in the MAM devices and in the system control memory can be under the top-level control of a central processing unit (“CPU”). A graphical user interface (“GUI”)147provides helpful tabular and graphical information to a user of the tape library for providing inputs thereto and receiving useful outputs therefrom.

The tape library can advantageously have a shelving system148capable of processor-based archiving the magazines138within the tape library. The magazines138, and hence the tape cartridges136the magazines138contain, remain in a queue functional state while stored in the shelving system148. The term “queue functional state” for purposes of this description and meaning of the claims generally means a “wait functional state.” A transport unit150shuttles magazines138between the shelving system148and the tape drives112, and picks and places a particular tape cartridge136from a shuttled magazine138to/from a desired tape drive112. The tape cartridges136are moved to a data transfer relationship functional state when mounted in the tape drives112. Again, althoughFIG. 3diagrammatically depicts two magazines138of eleven tape cartridges136each being shuttled to and from two tape drives112, that arrangement is merely illustrative and in no way limiting of the claimed embodiments. In any event, a desired number of tape drives112can be provided within the tape library to concurrently access a corresponding number of tape cartridges136in a storage array104, or two or more tape libraries can communicate with each other to form that same or a similar storage array104.

The tape library is not necessarily limited to using a fixed number of tape cartridges136. Rather, an access port152is configured to cooperate with an external transport system (not shown) to deliver or remove individual tape cartridges136or magazines138.

Top-level control is provided by the CPU in communication with all the various components via a computer area network (not shown). Data, virtual mappings, executable computer instructions, operating systems, applications, and the like are stored to the system control memory and accessed by one or more processors in and/or under the control of the CPU. The CPU includes macroprocessors, microprocessors, memory, and the like to logically carry out software algorithms and instructions.

As one skilled in the art will recognize, the illustration of the tape library inFIG. 3diagrammatically depicts only major elements of interest for purposes of simplicity. As such, certain necessary structures and components for the aforementioned elements to properly function are omitted from the detailed description, the enumeration of such not being necessary for the skilled artisan to readily ascertain the enablement of this description and the scope of the claimed subject matter. For example, it will be understood that the tape library includes all of the necessary wiring, user interfaces, plugs, modular components, entry and exit port(s) to introduce (or remove) removable storage elements, fault protectors, power supplies, processors, busses, robotic transport unit tracks, indication lights, and so on, in order to carry out the function of a tape library.

FIG. 4depicts the tape cartridges136supported for storage and transit by the magazine138. In more detail, the tape cartridge136, such as an LTO-5 or LTO-6 (generally “LTO”) category tape cartridge manufactured by IBM, of Armonk, N.Y., employs magnetic tape that is capable of storing digital data written by the tape drive112. The magazine138is depicted as being populated with a plurality of the tape cartridges136, each of which can be removed upwardly by the transport unit150(FIG. 5), in the direction of arrow154, then inserted into the tape drive112. An indicia such as a bar code identification tag156is one way of identifying the magazine138. Additionally, these embodiments depict a MAM device158attached to the magazine138and associated with one or more, preferably all, of the tape cartridges136residing in the magazine138. Alternatively, the MAM device158can be attached to the tape cartridge136. The MAM device158can be a passive device that is energized when subjected to a sufficiently strong radio frequency field generated by the MAM writer/reader device140(FIG. 3).

FIG. 5diagrammatically depicts generally the storage array104of the present embodiments having an overall data storage space160. A majority of the overall storage capacity resides in a bulk memory device162that in these illustrative embodiments is constructed collectively of the plurality of tape cartridges136, tape drives112, and the system control144(FIG. 3) that selectively mounts an individual tape cartridge136into one of the tape drives112in order to effect the transfer of user data to or from the mounted tape cartridge136. These illustrative embodiments further depict the system control144including the control memory device118although the contemplated embodiments are not so limited.

FIG. 6diagrammatically depicts the tape storage medium170in one of the tape cartridges136being partitioned into two completely separate data storage partitions172,174. The partitions172,174depict a lateral partition, meaning a partition that spans entirely across all storage tracks of the tape medium170. Alternatively, although not depicted, a longitudinal partition can be provided by designating one or more tracks to one partition and different tracks to the other partition or partitions. In any event, each partition172,174is identified and addressed separately from the existence of any other data or other partition(s) on the tape storage medium170. Again, although the illustrative embodiments depicted byFIG. 6generally describe multi-partitioning in terms of two partitions172,174, this is by way of example; accordingly, the claimed embodiments are not so limited in that the skilled artisan will appreciate that in equivalent alternative embodiments the same can be said for three or more partitions. Also, importantly, although the illustrative embodiments depicted byFIG. 6describe both partitions172,174existing on the tape storage medium170, the claimed embodiments are not so limited in that the skilled artisan appreciates that in alternative equivalent embodiments, one or all of the partitions, preferably the index partition discussed below, can be formed in the corresponding electronic indicia device (such as MAM158inFIG. 4) either on the tape cartridge136or on the magazine138.

FIG. 6more particularly depicts the tape storage medium170is formatted to include an index partition172and a user data partition174. A corresponding label block (not shown) is typically written at the start of each respective partition172,174to identify it as such. The index partition172contains an index “I” of any directories formatted to the user data partition174as well as any user data sets. For purposes of this description and meaning of the appended claims, “user data set” means a set of data collectively recognized and stored by the storage system, such as a computer-readable data file or an object-oriented programming language structure and the like, that is designated to the user data partition174. Generally, I/O commands transfer user data between a client102and the storage array104in terms of a system recognizable (file or object) user data set. The term “designated to” can include both a user data set that is presently stored to the user partition174as well as a user data set that is directed to be stored to the user data partition174by way of a pending write command.

The index I in the index partition172is continually updated to reflect the addition and modification of user data sets in the user data partition174. The addition or removal of user data can be the result of modifying or adding user data, or likewise can be the result of migrating user data without substantively changing it. It can be advantageous for data reliability sake to maintain a redundant copy of the index I, either in one of the partitions172,174or in its own dedicated partition. For example, without limitation, the redundant index can be maintained at the old state pending and during the time that the primary index is rewritten, so that in the event of a data transfer error or interruption the data library can roll back to the previous state as defined by the redundant index to facilitate a quicker, more robust recovery from such an event in comparison to reconstructing the old state or remotely retrieving the old state information.

FIG. 7illustratively depicts an index I in the index partition172self-describing user data sets F1(176) and F2(178). The skilled artisan appreciates that the user data sets F1, F2are stored in respectively allocated addressable storage spaces that are sequentially addressed. That is, the last addressable storage location of the user data set F1is sequential to the first addressable storage location of the user data set F2. For purposes of this description and meaning of the claimed subject matter this means the user data sets F1, F2are densely packed because there is no other addressable storage space between them.

The index I is updated to reflect changes to the user data sets F1, F2, such as appending more data to one of the user data sets F1, F2, while preferably leaving the previously stored user data sets F1, F2physically in the same location on the storage tape storage medium170.

In these embodiments non-index data (metadata) Fa(180) is also stored in the index partition172. Although storing non-index data, such as Fa, on the index partition172might appreciably increase the time necessary to access the index I when the tape cartridge136is mounted to the tape drive112, there are certain situations and certain types of non-index data Fafor which doing so is advantageous. Preferably, any such non-index data Faare relatively small to minimize the loading delay associated with them, but small metadata files can advantageously contain information about much larger files stored elsewhere, such as on the corresponding user data partition(s) in accordance with embodiments of the present invention.

Non-index data Falike this can support data applications to find and/or manipulate specific content within large user data sets without the need to read the large user data set in its entirety. The operations conducted by these non-index data Fain the index partition172can effectively be exploited by continually writing and deleting them as flag data instead of continually adding new non-index data Fa, to keep their size and imposition to a minimum with regard to the underlying purpose of the index I in the index partition172. Furthermore, the handling of the non-index data Fain the index partition172and the library functions which the non-index data Fainitiates, can be performed independently of, and without any adverse effect whatsoever on, the user data sets F1, F2designated to the user data partition174.

Although the illustrative embodiments ofFIG. 7depict only one such non-index data Fa, the claimed embodiments are not so limited in that the skilled artisan appreciates that the same can be said for a plurality of such non-index data Fa. . . Fxwithout the need for further elaboration. In any event, when the tape cartridge136is mounted to one of the tape drives112(at tape mount time) the index I and the non-index data Fastored on the index partition172are first and quickly read.

An important advantage of the present embodiments is a rapid and self-describing response following access to information gained from non-index data Fastored with the index information in both the control memory118and the tape cartridge136. The self-describing response can spring from the execution of computer instructions stored in the system control144. Particularly, in these embodiments self-describing logic is advantageously triggered, whether the result of storing data to or retrieving data from the storage array104, to optimally maintain and index user data sets in both the control memory118and among the tape cartridge(s)136. Having the user data sets stored in both places permits dynamic scalability of stored sequential user data sets at a minimum requirement for rewriting user data sets in the tape cartridges136. These embodiments of the present invention advantageously create options for the system control144during a subsequent retrieval of one to a large number (“string”) of sequential user data sets F1, F2. . . Fn. For example, without limitation, it can be advantageous to immediately begin retrieving one or more user data sets F1, F2. . . Fnfrom a fast storage device, such as a solid state drive or similar digital storage device employed as the control memory device118, during the time required to retrieve the rest of the user data sets in a particular string from a comparatively slower storage device, such as mounting the tape cartridge136in the tape library employed as the bulk memory device162. Thus, two data streams can be combined or interleaved to satisfy an I/O command with a client102(FIG. 1) by most effectively marrying the quick response of solid state storage with the economy and reliability of tape storage in retrieving the entire user data set F1, F2. . . Fn.

For purposes of this description and meaning of the claimed subject matter, the one or more user data sets that are either stored to or retrieved from the storage array104to satisfy an I/O command are referred to as “commanded user data set(s).” Typically, a commanded user data set will be part of a sequential string of a plurality of commanded user data sets that collectively satisfy the I/O command. In other words, an I/O command to store some sequential data to a tape cartridge136can involve storing a plurality of user data sets of the sequential data.

To meet that need for dual records where the individual user data sets in a sequential string are stored, the non-index data Facan invoke either a copy or a migration operation for a predetermined amount of the commanded user data set. Preferably, the dual record operation is queued in the system to run as a background operation so as to not adversely affect the data throughput performance of the tape library in meeting the I/O command load.

FIG. 8diagrammatically depicts the latter illustrative embodiments in which the controller124, in response to receipt of an I/O command via the fabric I/F120to store a plurality of sequential commanded user data sets Fn, executes computer instructions that make a determination as to whether to store each of the commanded user data sets Fnto the control memory118or to the tape cartridge136in accordance with embodiments of the present invention. The computer instructions also update index information Iiin both addressable storage locations to reflect where the commanded user data sets Fnare stored.

After completion of the self-describing determination operation the control memory device118stores location information, such as by index I, not only for the user data sets Fnstored in the control memory118but in the tape cartridges136as well. That is, in response to a subsequent I/O command to transfer a particular commanded user data set Fn, the system control144can index the control memory118to obtain an updated index I ascertaining the presently stored location, whether in the control memory118or in a tape cartridge136. As explained below, the controller124can therefore satisfy an I/O command to retrieve commanded user data sets Fnby selectively transferring (copying or migrating) the commanded user data sets Fnfrom a tape cartridge136to the control memory118, or by selectively interleaving the commanded user data sets Fnfrom the control memory118and one or more tape cartridges136.

FIG. 8schematically depicts the memory118as segmented memory, such as segmented flash memory and the like. Segmentation is advantageously employed to map and manage a predefined amount of memory segments150. The size and number of the memory segments150can be predetermined and fixed, or alternatively can be derived and set under the direction of the controller210(FIG. 12). Although the memory segments150are depicted for purpose of this description as being of a fixed and same size, the contemplated embodiments are not so limited in that it can be advantageous for the size of the memory segments150to be varied such as when different types of user data sets Fnare being stored.

For illustrative purposes, and not by way of limitation, the embodiments ofFIG. 8depict three sequential user data sets F1, F2, F3having previously been stored to the tape cartridge136iin accordance with a dense allocation of the storage space. The last user data set F3is referred to as being the tail of the string of sequential user data sets F1, F2, F3stored in the tape cartridge136i. Subsequently, for illustrative purposes, an I/O command is received that appends two user data sets worth of additional data to the user data set F2. In this example, the appended data is sequential data between previously stored user data set F2and previously stored user data set F3.

The controller124first determines that the commanded user data sets to be stored are not sequential to the tail of the string of user data sets stored in the tape cartridge136i. In that case, in accordance with embodiments of the present invention, the controller124executes programming instructions that indexes the control memory118by Iito determine if there is any previously stored user data set that is sequentially related to the two commanded user data sets Fn. In this example there is not, because at this point in time there are no user data sets indexed to the control memory118by Iicorresponding to the tape cartridge136i.

FIG. 9is similar toFIG. 8but further depicting the controller124having stored the two commanded user data sets in a sparse allocation of the control memory118. By “sparse allocation” it is meant that a predetermined amount of the addressable storage capacity is reserved (R1-R8) at the head of where the two commanded user data sets Fnare stored. The controller124identifies the two commanded user data sets as F3, F4to reflect them being sequentially related to and following user data set F2. The controller124re-identifies former user data set F3to current F5, reflecting the existence of the sequentially appended user data sets F3, F4in the totality of the sequential string of user data sets F1-F5.

Again, in the illustrative embodiments ofFIG. 9the memory118is segmented into predefined memory segments150. Those memory segments150define an addressable storage space ranging from address152at the beginning of the first memory segment1501(R1) to address154at the end of the last memory segment150n. The reserved memory space can in some embodiments reserve a predetermined number of the memory segments150, such as the eight memory segments1501-1508in these illustrative embodiments. Thus, the reserved memory space1501-1508at the head of the string of user data sets F3, F4spans from the address152at the beginning of memory segment1501to the address156at the beginning of the memory segment1509where user data set F3is stored. Although not depicted, there can additionally be provided one or more overhead memory segment(s) for storing housekeeping files, reserved functional applications, and the like.

FIG. 10continues this example with another subsequent I/O command to store another user data set which the controller124determines is neither sequentially related to the tail (F5) of the string stored in the tape cartridge136, nor sequentially related to the head (F3) or tail (F4) of the string indexed by Iiin the control memory118. Accordingly, the controller124stores this commanded user data set randomly in memory segment15019of the control memory118and in accordance with the sparse allocation by reserving another predefined amount of the addressable storage capacity (R9-R16) between the previously stored user data set F4and the commanded user data set it identifies as F6.

FIG. 11continues the example with yet another subsequent I/O command to store another commanded user data set. The controller124determines that this commanded user data set is sequentially related at the head of previously stored user data set F6. Having reserved the addressable storage capacity in the sparse allocation of the control memory118, the controller124is able to sequentially store the commanded user data set at the head of former user data set F6, identify the commanded user data set now as F6and the former user data set F6now as user data set F7in memory segment15019.

With the user data sets Fnstored according to the dense allocation and the sparse allocation of these illustrative embodiments, the controller124generally has advantageous flexibility in satisfying a subsequent I/O command to retrieve user data sets Fnfrom the storage array104. For example, without limitation, the controller124in response to a retrieve command for a string that is stored partially in each of the storage spaces118,136can execute instructions to transfer one or more user data sets Fn(i.e. copy or migrate) from the tape cartridge136to the control memory118. For example, the controller124can respond to an I/O command to retrieve the string of sequential user data sets F1-F5by transferring (copying or migrating) user data sets F1, F2from the tape cartridge136ito the head of the string F3, F4(reserved memory segments1507,1508or R7, R8) in the control memory118. Likewise, the controller can transfer the user data set F5to the tail of the string F3, F4(reserved memory segment15011or R9). Those transfers advantageously provide the entire commanded user data string F1-F5in the control memory118and thereby suited for satisfying the I/O command with a single sequential user data set transfer.

In equivalent alternative embodiments the controller124can execute computer instructions to interleave the commanded user data stream from the two storage spaces118,136.FIG. 12is a schematic block diagram of a control apparatus200and memory202that are suited for interleaving the commanded user data sets Fnfrom the control memory118and from the tape cartridge(s)136in accordance with illustrative embodiments of the present invention. The control apparatus200and memory202are depicted as residing in the system control144but the contemplated embodiments are not so limited. Generally, the memory202is the storage destination for a sequential string of a plurality of the commanded user data sets Fnvia the transmission of control and data signals, such as along a control bus204, a data bus206, and a ready/busy bus208.

A controller210with capabilities of a digital signal processor (DSP) and the like provides subsystem control of all the functions of the control apparatus200in transferring the user data and metadata overhead. Although not explicitly depicted, the controller210has access to programming instructions stored in memory and to computational resources via random access memory (RAM) and read only memory (ROM). A command module212provides a register for storing the I/O commands, and an address module214provides a register for storing the storage addresses associated with the I/O command and respective user data portion which is temporarily stored in a buffer216during the interleave transfer.

The controller210controls the size of the user data portions that are incrementally stored to the memory202, such as a predetermined number of pages of user data to a flash memory. A status module218informs the controller210as to whether the memory202is ready to receive a next portion of user data or otherwise is busy processing a previously transferred portion of user data.

For example, when the command module212confirms completion of the transfer of a portion of user data the address module214then generates the next address for addressing the next portion of user data. A counter220indexes the number of user data portions that have been successfully stored to the memory202, such as counting the number of pages of user data that have been transferred. The counter220informs the controller210when the contents of the buffer216have been stored to the memory202so that the next page(s) can be transferred to the cleared buffer216. The controller210controls a multiplexer222to interleave the two sources of user data by alternately transferring user data from each of the memory118and the tape cartridge136.

In either event of transferring or interleaving the user data sets Fn,FIG. 13is a flowchart of steps defined by stored computer instructions executed by a processor-based control apparatus (such as controller124) to perform a method250of POPULATING A SPARSE MEMORY in accordance with embodiments of the present invention. The method begins in block252with receipt of an I/O command for storing one or more user data sets to the storage array. In block254it is determined whether a commanded user data set is sequentially related to the tail of a string previously stored in a first memory according to a dense allocation (such as the tape cartridge136). If the determination of block254is “yes,” then in block256the commanded user data set is stored at the tail of the string in the first memory and control returns to block252with respect to the next commanded user data set.

If the determination of block254is “no,” then control passes to block258which determines whether the commanded user data set is sequentially related to the head or tail of any previously stored user data set in a second memory according to a sparse allocation (such as the control memory118). If the determination of block258is “yes,” then control passes to block260which stores the commanded user data set to the second memory and control then passes to block252with respect to the next commanded user data set.

If the determination of block258is “no,” then control passes to block262which calculates the beginning and ending addresses of the reserved capacity for the sparse allocation. In block264the commanded user data set is stored in the second memory at the tail of the newly calculated reserved capacity.

In block266it is determined whether the last commanded user data set has been stored to either the first or second memory. If the determination of block266is “yes,” then the method300ends; otherwise, control returns to block252for consideration of the next commanded user data set.

Embodiments of the present invention can be commercially practiced in a Spectra Logic T-950 tape cartridge library manufactured by Spectra Logic of Boulder Colo.FIG. 10shows a commercial embodiment of one T-950 tape library without an enclosure. The T-950 tape library comprises a first and second shelf system1481,1482that are adapted to support a plurality of the mobile media, such as the magazine138holding a plurality of LTO tape cartridges136with MAMs, archived by the tape library. The shelf systems1481,1482can each have at least one auxiliary memory reader. Disposed next to the second shelf system1482are at least four IBM LTO tape drives112adapted to write data to and read data from a tape cartridge136. The IBM LTO tape drives112each have the capability of storing data to an auxiliary radio frequency memory device contained in an LTO tape cartridge136. Functionally interposed between the first and second shelf system1481,1482is a magazine transport space178. The magazine transport space178is adapted to provide adequate space for a magazine138to be moved, via the transport unit150(FIG. 3), from a position in the first shelf system1481, for example, to a tape drive112. The transport unit150can further accommodate at least one auxiliary radio frequency memory device reader. Magazines138can be transferred into and out from the T-950 tape library via the entry/exit port152. Transferring magazines138in and out of the T-950 tape library can be accomplished by an operator, for example. The T-950 tape library comprises a means for cooling as shown by the fans180, located at the base of the tape library. The T-950 tape library can be linked to a central data base, providing control in storage of all of the auxiliary radio frequency memory devices contained in each tape cartridge136in the T-950 tape library as read by any one of the auxiliary radio frequency memory device readers. The T-950 tape library also includes the library CPU146(FIG. 3) providing top-level control and coordination of all processes. The T-950 tape library also provides the graphical user interface147(FIG. 3) whereon a display of assessment results or, in alternative embodiments, simple messages can be displayed pertaining to a user-specified action associated with a tape cartridge136such as an alert accompanying a sound alarm or recommendations for further action/s, for example.

It is to be understood that even though numerous characteristics and advantages of various embodiments of the present invention have been set forth in the foregoing description, together with the details of the structure and function of various embodiments of the invention, this disclosure is illustrative only, and changes may be made in detail, especially in matters of structure and arrangement of parts within the principles of the present invention to the full extent indicated by the broad general meaning of the terms in which the appended claims are expressed. For example, multiple or even predetermined pluralities of tape drives can be interleaved with the control memory in performing the POPULATING A SPARSE MEMORY process for example, while still maintaining substantially the same functionality without departing from the scope and spirit of the claimed invention. Another example can include using these techniques across multiple library partitions, while still maintaining substantially the same functionality without departing from the scope and spirit of the claimed invention. Further, though communication is described herein as between a client and the tape library, communication can be received directly by a tape drive, via the interface device120for example, without departing from the scope and spirit of the claimed invention. Further, for purposes of illustration, a first and second tape drive and tape cartridges are used herein to simplify the description for a plurality of drives and tape cartridges. Finally, although the preferred embodiments described herein are directed to tape drive systems, and related technology, it will be appreciated by those skilled in the art that the claimed invention can be applied to other systems, without departing from the spirit and scope of the present invention.

It will be clear that the claimed invention is well adapted to attain the ends and advantages mentioned as well as those inherent therein. While presently preferred embodiments have been described for purposes of this disclosure, numerous changes may be made which readily suggest themselves to those skilled in the art and which are encompassed in the spirit of the claimed invention disclosed and as defined in the appended claims.

It is to be understood that even though numerous characteristics and advantages of various aspects have been set forth in the foregoing description, together with details of the structure and function, this disclosure is illustrative only, and changes may be made in detail, especially in matters of structure and arrangement to the full extent indicated by the broad general meaning of the terms in which the appended claims are expressed.