Segmentation of logical volumes and movement of selected segments when a cache storage is unable to store all segments of a logical volume

Provided are a method, system, and article of manufacture, wherein a storage manager application implemented in a first computational device maintains a virtual logical volume that represents a plurality of segments of a linear storage medium of a secondary storage, wherein the virtual logical volume and the plurality of segments are created by the storage manager application. A request for data is received at the first computational device, from a second computational device. The storage manager application moves selected segments of the plurality of segments from the linear storage medium of the secondary storage to a cache storage, in anticipation that the requested data is included in the selected segments that are moved from the linear storage medium of the secondary storage to the cache storage.

BACKGROUND

The disclosure relates to a method, system, and article of manufacture for the segmentation of logical volumes.

In certain virtual tape storage systems, hard disk drive storage may be used to emulate tape drives and tape cartridges. For instance, host systems may perform input/output (I/O) operations with respect to a tape library by performing I/O operations with respect to a set of hard disk drives that emulate the tape library. In certain virtual tape storage systems at least one virtual tape server (VTS) is coupled to a tape library comprising numerous tape drives and tape cartridges. The VTS is also coupled to a direct access storage device (DASD), comprised of numerous interconnected hard disk drives.

The DASD functions as a cache to volumes in the tape library. In VTS operations, the VTS processes the host's requests to access a volume in the tape library and returns data for such requests, if possible, from the cache. If the volume is not in the cache, then the VTS recalls the volume from the tape library to the cache, i.e., the VTS transfers data from the tape library to the cache. The VTS can respond to host requests for volumes that are present in the cache substantially faster than requests for volumes that have to be recalled from the tape library to the cache. However, since the capacity of the cache is relatively small when compared to the capacity of the tape library, not all volumes can be kept in the cache. Hence, the VTS may migrate volumes from the cache to the tape library, i.e., the VTS may transfer data from the cache to the tape cartridges in the tape library.

SUMMARY OF THE PREFERRED EMBODIMENTS

Provided are a method, system, and article of manufacture, wherein a storage manager application implemented in a first computational device maintains a virtual logical volume that represents a plurality of segments of a linear storage medium of a secondary storage, wherein the virtual logical volume and the plurality of segments are created by the storage manager application. A request for data is received at the first computational device, from a second computational device. The storage manager application moves selected segments of the plurality of segments from the linear storage medium of the secondary storage to a cache storage, in anticipation that the requested data is included in the selected segments that are moved from the linear storage medium of the secondary storage to the cache storage.

In additional embodiments, the cache storage is incapable of storing at the same time all segments of the plurality of segments represented by the logical volume.

In yet additional embodiments, the plurality of segments comprise a first segment comprising header information, a last segment comprising trailer information, and intervening segments between the first segment and the last segment, wherein the selected segments include at least the first segment and the last segment, and wherein the storage manager application moves the first segment and the last segment of the plurality of segments from the linear storage medium of the secondary storage to the cache storage before any other segments of the plurality of segments.

In further embodiments, the plurality of segments comprise a first segment comprising header information, a last segment comprising trailer information, and intervening segments between the first segment and the last segment, wherein while writing data from the cache storage to the secondary storage to create space for additional data in the cache storage, the storage manager application writes the first segment and the last segment of the plurality of segments from the cache storage to the secondary storage before any other segments of the plurality of segments, and subsequently deletes the first and the last segment from the cache storage.

In yet further embodiments, the plurality of segments comprise a hybrid segment comprising header information and trailer information, and other segments that follow the hybrid segment, wherein the selected segments includes at least the hybrid segment, and wherein the storage manager application moves the hybrid segment of the plurality of segments from the linear storage medium of the secondary storage to the cache storage, before any of the other segments of the plurality of segments.

In certain embodiments, subsequent to the moving of the selected segments, a determination is made that the selected segments do not include the data requested by the second computational device. Additional segments not included in the selected segments are moved from the secondary storage to the cache storage, in response to determining that the additional segments are more likely to include the data requested by the second computational device in comparison to other segments of the plurality of segments that are present in the linear storage medium but have not been moved to the cache storage.

In further embodiments, the first computational device is a virtual tape server, the second computational device is a host, the cache storage is implemented in a disk device, the secondary storage is implemented in a tape device, the linear storage medium is a tape, wherein all contents of the virtual logical volume fit on a single tape included in the tape device, and wherein all contents of the virtual logical volume do not fit at the same time on the cache storage.

DETAILED DESCRIPTION

Handling Logical Volumes a Single Entity

In certain VTS systems, logical volumes are handled as a single entity. However, when the size of physical volumes corresponding to logical volumes becomes very large, such as in Linear Tape Open (LTO) drives, all data included in logical volumes may not be accommodated at the same time in the cache storage. Additionally, transfer operations of large logical volumes from the secondary storage to the cache storage may take a significantly greater amount of time in comparison to small logical volumes. The recall times for data may become excessively large in situations where logical volumes are handled as a single entity for transfer to the cache storage from the secondary storage in a VTS environment.

Exemplary Embodiments

Certain embodiments provide for the segmentation of virtual logical volumes in a VTS environment comprising a VTS that is coupled to a cache storage and a secondary storage, wherein the segmented virtual logical volumes are used to respond to data requests from a host. In certain embodiments, all contents of a segmented virtual logical volume may fit on a single tape included in the secondary storage, wherein all the contents of the segmented virtual logical volume may not fit at the same time in the cache storage. Once a logical volume is segmented, certain embodiments use the segmented logical volume for better recall performance by premigrating certain segments of the logical volume out of order to the cache storage from the secondary storage.

FIG. 1illustrates a block diagram of a computing environment100, in accordance with certain embodiments. The computing environment100includes a VTS102. Additional VTSs can be deployed, but for purposes of illustration, a single VTS102is shown. In certain exemplary embodiments the VTS102may comprise a server computational device and may include any operating system known in the art. However, in alternative embodiments the VTS102may comprise any suitable computational device, such as a personal computer, a workstation, mainframe, a hand held computer, a palm top computer, a telephony device, network appliance, etc. The VTS102may be referred to as a first computational device102.

The computing environment also includes a host104that is coupled to the VTS102. Additional hosts may be deployed, but for purposes of illustration, a single host104is shown. The host104may be may coupled to the VTS102through a host data interface channel or any other direct connection or switching mechanism, known in the art (e.g., fibre channel, Storage Area Network (SAN) interconnections, etc.). The host104may be any suitable computational device known in the art, such as a personal computer, a workstation, a server, a mainframe, a hand held computer, a palm top computer, a telephony device, network appliance, etc.

The VTS102includes at least one application, such as a storage manager application106that manages storage. The storage manager application106may be implemented either as a standalone application or as a part of one or more other applications. The storage manager application106manages a cache storage108, such as a disk based storage system, and a secondary storage110comprising a linear storage medium112, such as a tape, wherein the cache storage108and the secondary storage110are coupled to the VTS102via a direct connection or via a network connection. The cache storage108improves performance by allowing host I/O requests from the hosts104to the secondary storage110to be serviced from the faster access cache storage108as opposed to the slower access secondary storage110. The disks in the cache storage108may be arranged as a Direct Access Storage Device (DASD), Just a Bunch of Disks (JBOD), Redundant Array of Inexpensive Disks (RAID), etc.

The storage manager application106may perform or manage the data movement operations between the host104, the cache storage108, and the secondary storage110. The storage manager application106generates virtual logical volumes114, wherein virtual logical volumes114are logical representations of data stored in cache storage108and the secondary storage110.

The storage manager application106maps the data stored in the cache storage108and secondary storage110to a plurality of virtual logical volumes114. The hosts104perform I/O operations by using the virtual logical volumes114via the VTS102. The storage manager application106maps the virtual logical volumes114to the linear storage medium112of the secondary storage110. Thus, the virtual logical volumes114correspond to segments116stored in the linear storage medium112of the secondary storage110.

In certain embodiments, the storage manager application106implemented in the VTS102(first computational device) maintains the virtual logical volume114that represents a plurality of segments116of the linear storage medium112of the secondary storage110, wherein the virtual logical volume114and the plurality of segments116are created by the storage manager application106. In response to a request for data received at the VTS102, from the host104, the storage manager application106moves selected segments118of the plurality of segments116from the linear storage medium112of the secondary storage110to the cache storage108, in anticipation that the requested data is included in the selected segments118that are moved from the linear storage medium112to the cache storage108. In certain embodiments all contents of the virtual logical volume114fit on a single tape included in the secondary storage110, wherein all contents of the virtual logical volume114do not fit at the same time on the cache storage108. By storing all contents of the virtual logical volume114on a single tape, data can be recalled faster in comparison to situations where the contents of the virtual logical volume114are distributed among a plurality of tapes.

FIG. 2illustrates a block diagram of representations of virtual logical volumes and a first and a second representation of a linear storage medium112in accordance with certain embodiments that may be implemented in the computing environment100.

One representation200of a virtual logical volume114may comprise a first segment202, a plurality of segments206,208,210,212, and a last segment214, wherein a segment is a unit of data storage. A greater or a fewer number of segments than shown inFIG. 2may be implemented in certain embodiments. The first segment202may include metadata comprising header information and may optionally include data, wherein metadata is information about data. The last segment214may include metadata comprising trailer information and may optionally include data. The other segments206,208,210,212may include data. Thus header information about the data is stored in the first segment202and trailer information about the data is stored in the last segment214, whereas the data may be distributed in some or all of the segments202,204,206,208,210,212,214.

In a first representation216of the linear storage medium112that is implemented in certain embodiments, wherein the first representation216of the linear storage medium112corresponds to the representation200of the virtual logical volume114, the plurality of segments202,206,208,210,212,214that are stored in the linear storage medium112comprise a first segment218comprising header information and optionally data, a last segment228comprising trailer information and optionally data, and exemplary intervening segments220,222,224,226between the first segment218and the last segment228, wherein the selected segments118that are moved to the cache storage108include at least the first segment218and the last segment228, and wherein the storage manager application106moves the first segment218and the last segment228of the plurality of segments218,220,222,224,226,228from the linear storage medium112of the secondary storage110to the cache storage108before any other segments of the plurality of segments218,220,222,224,226,228.

In a second representation230of the linear storage medium112that is implemented in certain embodiments, the plurality of segments232,234,236,238,240,242, comprise a first segment232comprising header information and optionally data, followed by a last segment234comprising trailer information and optionally data, wherein the first and the last segments232,234are followed by other segments236,238,240,242that include data. A representation of the virtual logical volume114corresponding to the second representation230may also be generated by the storage manager application106.

Therefore,FIG. 2illustrates certain exemplary representations of the virtual logical volumes114and the linear storage medium112.

FIG. 3illustrates a block diagram of a third representation300of a linear storage medium112in accordance with certain embodiments that may be implemented in the computing environment100.

In the third representation300of the linear storage medium112, the plurality of segments302,304,306,308,310comprise a hybrid segment302comprising header information and trailer information and optionally data, and other segments304,306,308,310that follow the hybrid segment302, wherein the selected segments118in the cache storage108include at least the hybrid segment302, and wherein the storage manager application106moves the hybrid segment302of the plurality of segments302,304,306,308,310from the linear storage medium112of the secondary storage110to the cache storage108, before any of the other segments of the plurality of segments302,304,306,308,310.

Therefore,FIG. 3illustrates certain embodiments in which a hybrid segment302that includes both header and trailer information is moved from the secondary storage110to the cache storage108by the storage manager application106, in response to a data request received from the host104.

FIG. 4illustrates operations for moving data from a cache storage108to a secondary storage110, in accordance with certain embodiments. The operations may be implemented by the storage manager application106included in the VTS102.

Control starts at block400in which the storage manager application106generates a virtual logical volume114to store host data, wherein host data is data received from the host104for storage in the secondary storage110.

The storage manager application106logically creates (at block402) a plurality of segments (e.g., segments202,204,206,208,210,212,214) in the virtual logical volume114, wherein a first segment202is for the inclusion of header information (and optionally data), a last segment214is for inclusion of trailer information (and optionally data), and intervening segments206,208,210,212are for the inclusion of data.

The storage manager application106writes (at block404) host data in segments corresponding to the virtual logical volume114on the cache storage108.

The storage manager application106then determines (at block406) whether segments are to be moved to the secondary storage110from the cache storage108. For example, if the cache storage108is full then segments may have to be moved from cache storage108to the secondary storage110.

If at block406, a determination is made that segments are to be moved to the secondary storage110from the cache storage108, then a determination is made at block408as to whether the first and last segments have been moved to the secondary storage110. If not, then the storage manager application106moves (at block410) the first and last segments to the secondary storage110, and control proceeds to block412where the storage manager application106moves other segments to the secondary storage110. At the conclusion of the execution of block412control returns to block404for writing additional host data.

If at block406, a determination is made that segments are not to be moved to the secondary storage110from the cache storage108, then control returns to block404. If at block408a determination is made that the first and last segments have been moved to the secondary storage110then the storage manager application106moves other segments to the secondary storage110.

In alternative embodiments in which hybrid segments302are used, the hybrid segments302are moved from the cache storage108to the secondary storage110before moving other segments. Other representations of segments may be used in alternative embodiments.

FIG. 5illustrates operations performed at the VTS102in response to a request for data from a host104, in accordance with certain embodiments. The operations may be implemented by the storage manager application106included in the VTS102.

Control starts at block500, wherein the storage manager application106receives at the VTS102a request for data from the host104. The storage manager application106determines (at block502) whether first and last segments (or in alternative embodiments the hybrid segment) of the virtual logical volume114corresponding to the data is included in the cache storage108. If so, then the storage manager application106determines (at block504) whether one or more segments that include at least part of the data is available in the cache storage108. If not, then the storage manager application106starts (at block506) copying other segments of the virtual logical volume114from the secondary storage110to the cache storage108, with those segments that are more likely to include the data being preferred over other segments for copying to the cache storage108, wherein the storage manager application106may substantially simultaneously provide the additional data to the host104as segments become available in the cache storage108.

If the storage manager application106determines (at block504) that one or more segments that include at least part of the data is available in the cache storage108, then control proceeds to block508where the storage manager application106provide at least part of the requested data to the host104from the one or more determined segments in the cache storage108that include at least part of the data, and control proceeds to block506.

If at block502, the storage manager application106determines that the first and last segments (on in alternative embodiments the hybrid segment) of the virtual logical volume114corresponding to the data is not included in the cache storage108, then control proceeds to block510, where the storage manager application106copies the first and last segments (or in alternative embodiments the hybrid segment) of the virtual logical volume114as stored in a linear storage medium112on the secondary storage110to the cache storage108, and then control proceeds to block506.

Therefore,FIG. 5illustrates certain embodiments in which segmented virtual logical volumes are used by a VTS102to respond to requests for data from a host104. Data in segments that are available in the cache storage108are returned to the host104, and other segments are copied from the secondary storage110to the cache storage108to return to the host104. In certain embodiments if the first and the last segments of the virtual logical volume114that includes the requested data is not available in the cache storage108then the first and the last segments are copied from the secondary storage110to the cache storage108, before copying other segments of the virtual logical volume114to the cache storage108. In alternative embodiments if the hybrid segment of the virtual logical volume114that includes the requested data is not available in the cache storage108then the hybrid segment is copied from the secondary storage110to the cache storage108, before copying other segments to the cache storage108.

FIG. 6illustrates operations implemented in the computing environment100, in accordance with certain embodiments. The operations may be implemented by the storage manager application106included in the VTS102.

Control starts at block600, wherein a storage manager application106implemented in a first computational device102maintains a virtual logical volume114that represents a plurality of segments116of a linear storage medium112of a secondary storage110, wherein the virtual logical volume114and the plurality of segments116are created by the storage manager application106.

A request for data is received (at block602), at the first computational device102, from a second computational device104, wherein in certain embodiments the first computational device102is a VTS and the second computational device104is a host.

The storage manager application106moves (at block604) selected segments118of the plurality of segments116from the linear storage medium112of the secondary storage110to a cache storage108, in anticipation that the requested data is included in the selected segments118that are moved from the linear storage medium112of the secondary storage110to the cache storage108, wherein the selected segments118include at least a first segment (e.g., first segments218,232) comprising header information and a last segment (e.g., last segments228,234) comprising trailer information, and wherein the storage manager application106moves the first segment and the last segment of the plurality of segments116from the linear storage medium112of the secondary storage110to the cache storage108before any other segments of the plurality of segments.

Control proceeds to block606, where the storage manager application106determines that the selected segments118do not include the data requested by the second computational device104. The storage manager application106moves (at block608) additional segments not included in the selected segments118from the secondary storage110to the cache storage108, in response to determining that the additional segments are more likely to include the data requested by the second computational device104in comparison to other segments of the plurality of segments116that are present in the linear storage medium112but have not been moved to the cache storage108.

Certain embodiments allow the handling of very large virtual logical volumes in a virtual tape environment, where the very large logical volumes are of a size such that each very large logical volume cannot be accommodated in its entirety in the cache storage108. Certain embodiments segment the virtual logical volumes and reorder the segments of the logical volumes for anticipatory caching of the segments of the virtual logical volumes in the cache storage108.

Additional Embodiment Details

The described techniques may be implemented as a method, apparatus or article of manufacture involving software, firmware, micro-code, hardware and/or any combination thereof. The term “article of manufacture” as used herein refers to code or logic implemented in a medium, where such medium may comprise hardware logic [e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.] or a computer readable storage medium, such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non-volatile memory devices [e.g., Electrically Erasable Programmable Read Only Memory (EEPROM), Read Only Memory (ROM), Programmable Read Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), flash, firmware, programmable logic, etc.]. Code in the computer readable storage medium is accessed and executed by a processor. The medium in which the code or logic is encoded may also comprise transmission signals propagating through space or a transmission media, such as an optical fiber, copper wire, etc. The transmission signal in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The transmission signal in which the code or logic is encoded is capable of being transmitted by a transmitting station and received by a receiving station, where the code or logic encoded in the transmission signal may be decoded and stored in hardware or a computer readable medium at the receiving and transmitting stations or devices. Additionally, the “article of manufacture” may comprise a combination of hardware and software components in which the code is embodied, processed, and executed. Of course, those skilled in the art will recognize that many modifications may be made without departing from the scope of embodiments, and that the article of manufacture may comprise any information bearing medium. For example, the article of manufacture comprises a storage medium having stored therein instructions that when executed by a machine results in operations being performed.

Devices that are in communication with each other need not be in continuous communication with each other, unless expressly specified otherwise. In addition, devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries. Additionally, a description of an embodiment with several components in communication with each other does not imply that all such components are required. On the contrary a variety of optional components are described to illustrate the wide variety of possible embodiments.

FIG. 7illustrates the architecture of computing system700, wherein in certain embodiments the VTS102and the hosts104of the computing environments100ofFIG. 1may be implemented in accordance with the architecture of the computing system700. The computing system700may also be referred to as a system, and may include a circuitry702that may in certain embodiments include a processor704. The system700may also include a memory706(e.g., a volatile memory device), and storage708. The storage708may include a non-volatile memory device (e.g., EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, firmware, programmable logic, etc.), magnetic disk drive, optical disk drive, tape drive, etc. The storage708may comprise an internal storage device, an attached storage device and/or a network accessible storage device. The system700may include a program logic710including code712that may be loaded into the memory706and executed by the processor704or circuitry702. In certain embodiments, the program logic710including code712may be stored in the storage708. In certain other embodiments, the program logic710may be implemented in the circuitry702. Therefore, whileFIG. 7shows the program logic710separately from the other elements, the program logic710may be implemented in the memory706and/or the circuitry702.

At least certain of the operations illustrated inFIGS. 1-7may be performed in parallel as well as sequentially. In alternative embodiments, certain of the operations may be performed in a different order, modified or removed.

Furthermore, many of the software and hardware components have been described in separate modules for purposes of illustration. Such components may be integrated into a fewer number of components or divided into a larger number of components. Additionally, certain operations described as performed by a specific component may be performed by other components.

The data structures and components shown or referred to inFIGS. 1-7are described as having specific types of information. In alternative embodiments, the data structures and components may be structured differently and have fewer, more or different fields or different functions than those shown or referred to in the figures. Therefore, the foregoing description of the embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the embodiments to the precise form disclosed. Many modifications and variations are possible in light of the above teaching.