Incremental replication of a source dataset
The method and apparatus for data replication address the inefficiency of volume-level incremental flash copies by enabling selective data set replication through a DFT table, optimizing memory usage and enhancing data management efficiency.
Patent Information
- Application Number
- DE102016103769
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2015-03-03
- Filing Date
- 2016-03-02
- Publication Date
- 2025-10-02
- Estimated Expiration
- 2036-03-02
AI Technical Summary
Existing data replication methods, such as incremental flash copies, are limited to replicating data at the volume level and do not allow for selective replication of individual data sets within a volume, leading to inefficient use of target memory resources.
A method and apparatus for data replication that identifies and manages incremental flash copy relationships between individual data sets using a data set incremental flash copy (DFT) table, allowing users to specify fully or partially qualified data set names to establish relationships, monitor data set changes, and update the replication table accordingly.
Enables efficient management of incremental flash copy relationships at the data set level, reducing memory requirements by allowing selective participation in replication, thus optimizing target memory usage and improving data management efficiency.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
FIELD OF THE INVENTION
[0001] The subject matter disclosed herein relates to data replication and, more particularly, to performing incremental replication of a source dataset to a target dataset. BACKGROUND
[0002] Flash copy relationships are often created to replicate data units. An incremental flash copy creates a snapshot copy of only changed data and is only available at the disk level. SUMMARY
[0003] A method for data replication is disclosed. An apparatus and a computer program product also perform the functions of the method, wherein the computer program product comprises a computer-readable storage medium having program instructions embodied thereon. The method for data replication includes receiving a partially qualified dataset name, identifying a source dataset on a source volume based on the partially qualified dataset name, generating a replication relationship table mapping the source dataset to a target dataset on a target volume, and performing an incremental copy of data stored in the source dataset based on the replication relationship table.
[0004] A data replication apparatus includes a source data module that identifies a source dataset from a partially qualified dataset name, the source dataset including a set of storage locations on a source volume, a target data module that defines the target dataset in response to the source data module identifying the source dataset, a mapping module that stores a replication relationship table, the replication relationship table mapping the source dataset to a target dataset, the target dataset including a set of storage locations on a target volume, and a replication module that periodically executes an incremental copy of data stored in the source dataset based on the replication relationship table, wherein at least a portion of the source data module, the target data module,the allocation module and the replication module comprises one or more of hardware and executable code, wherein the executable code is stored on one or more computer-readable storage media.
[0005] A computer program product for data replication includes program instructions readable / executable by a processor to cause the processor to: identify a source dataset on a source volume based on a partially qualified dataset name, generate a replication relationship table correlating the source dataset to a target dataset on a target volume, perform an incremental copy of data stored in the source dataset based on the replication relationship table, monitor for a change to the source dataset, and update the relationship table in response to a change to the source dataset.
[0006] CHERVENAK, Ann; VELLANKI, Vivekenand; KURMAS, Zachary. Protecting file systems: A survey of backup techniques. In: Joint NASA and IEEE Mass Storage Conference. 1998. [online] URL: http: / / www.storageconference.us / 1998 / papers / a1-2-CHERVE.pdf [accessed November 2, 2020] provides an overview of backup techniques for protecting file systems. Among other things, a distinction is made between device- and file-based backup schemes, full and incremental backups, and optional data compression. Next, techniques for online backups (backups performed while users continue to access the file system) are discussed; these techniques include locking the file system and creating instant copy-on-write "snapshots" of the file system. Finally, the protection of data from site disasters and media decay is discussed.We then classify various academic and commercial backup systems based on the parameters already described. The classified systems include the UNIX utilities dump and tar, hierarchical storage managers such as IBM's ADSTAR Distributed Storage Manager, Legato's NetWorker, and UniTree, as well as various systems used in research and education. We conclude with measurements of full and incremental backups over a period of one year in a large networked UNIX environment at the Georgia Tech College of Computing.
[0007] US 8 200 637 B1 describes a system and method for creating a backup image from a data storage device containing a plurality of files. Information may be received specifying a subset of the files to be backed up, but not all of the files. The data storage device may contain a plurality of blocks, the plurality of blocks comprising a corresponding set of data blocks for each file of the data storage device and blocks of file system metadata structures for the data storage device. The method may comprise identifying a subset, but not all, of the plurality of blocks to be copied into the backup image. The subset of blocks may contain each data block for each file of the subset of files and may also contain blocks of one or more file system metadata structures required to access the subset of files.The method may further comprise copying each block of the subset of blocks to the backup image. In some embodiments, the subset of blocks may be copied to the backup image without copying data blocks for files not included in the specified subset of files.
[0008] US 2003 / 0 158 869 A1 shows a method, a system and a program storage device for asynchronously transferring one or more incremental database updates from a primary data carrier at a primary site to a remote data carrier at a remote site, the primary site and the remote site being interconnected by at least one communication link, the method, the system and the program storage device comprising: transferring modified data to the primary data carrier for a current database update and updating one or more bits in a first bitmap at the primary site indicating one or more tracks on the primary data carrier to be overwritten with the modified data;Transferring the first bitmap to a second bitmap at the primary site to indicate the modified data to be transferred to the remote volume at the remote site for the current database update; and synchronizing the primary volume at the primary site with the remote volume at the remote site for the current database update by transferring the modified data to the remote volume as indicated by one or more bits in the second bitmap, wherein the one or more incremental database updates on the primary volume of the primary site are decoupled from the transfer of the one or more incremental database updates to the remote volume at the remote site. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] In order to readily understand the advantages of embodiments of the invention, a more specific description of the embodiments briefly described above is provided with reference to specific embodiments illustrated in the accompanying drawings. Given the understanding that these drawings illustrate only some embodiments and are therefore not to be considered limiting of the scope, the embodiments will be described and explained with additional specificity and detail using the accompanying drawings, in which: Fig. 1 is a schematic block diagram illustrating an embodiment of a data processing system according to an embodiment of the present invention; Fig. 2 is a schematic block diagram illustrating an embodiment of a data replication apparatus according to an embodiment of the present invention; Fig. 3A is a schematic block diagram illustrating one embodiment of an incremental dataset flash copy table according to one embodiment of the present invention; Fig. 3B is a schematic block diagram illustrating an embodiment of storage location information for a source data set according to an embodiment of the present invention; Fig. 3C is a schematic block diagram illustrating an embodiment of storage location information for a target data set according to an embodiment of the present invention; Fig. 4 is a schematic flow diagram illustrating one embodiment of a method for data replication according to an embodiment of the present invention; Fig. 5 is a schematic flow diagram illustrating an embodiment of a method for data replication according to an embodiment of the present invention; and Fig. 6 is a schematic flow diagram illustrating one embodiment of a method for data replication according to an embodiment of the present invention. DETAILED DESCRIPTION
[0010] Reference throughout this specification to "an embodiment," "an embodiment(s)," or similar language means that a particular function, structure, or feature described in connection with the embodiment is present in at least one embodiment. Therefore, references to "in an embodiment" or "in embodiment(s)" and similar language throughout this specification do not necessarily all refer to the same embodiment, but rather mean "one or more, but not all, embodiments" unless expressly stated otherwise. The terms "including," "having," "with," and variations thereof mean "including, but not limited to," unless expressly stated otherwise.The enumeration of elements does not imply that any or all of the elements are mutually exclusive and / or inclusive, unless expressly stated otherwise. The terms "a," "an," and "the" also refer to "one or more" unless expressly stated otherwise.
[0011] Furthermore, the described functions, advantages, and features of the embodiments may be combined in any suitable manner. However, one of ordinary skill in the art will recognize that the embodiments may be practiced without one or more of the specific features or advantages of a particular embodiment. In other examples, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments.
[0012] The present invention may be a system, a method, and / or a computer program product. The computer program product may include a computer-readable storage medium (or media) having computer-readable program code thereon for causing a processor to perform aspects of the present invention.
[0013] The computer-readable storage medium may be a tangible device capable of retaining and storing instructions for use by an instruction execution unit. A computer-readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.A non-exhaustive list of more specific examples of the computer-readable storage medium includes the following: a portable computer diskette, a hard disk, random access memory (“RAM”), read-only memory (“ROM”), erasable programmable read-only memory (“EPROM” or flash memory), static random access memory (“SRAM”), a portable “CD-ROM,” a DVD drive (“DVD”), a memory stick, a floppy disk, a mechanically encrypted device such as punched cards or raised structures in a groove with instructions recorded thereon, and any suitable combination of the foregoing. A computer-readable storage medium, as used herein, need not be designed to convey transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g.,light pulses passing through a fiber optic cable) or electrical signals transmitted through a wire.
[0014] Computer-readable program instructions described herein may be downloaded to respective computing / processing units from a computer-readable storage medium or to an external computer or storage device via a network, for example, the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission lines, fiber optic cables, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing unit receives computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium in the respective computing / processing unit.
[0015] Computer-readable program instructions for performing operations of the present invention may be assembly language instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, or other source code or object code written in any combination of one or more programming languages, including Smalltalk, C++, or the like, and conventional procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server.In the latter scenario, the remote computer may be connected to the user's computer over any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (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 the computer-readable program instructions using state information of the computer-readable program instructions to personalize the electronic circuit to perform aspects of the present invention.
[0016] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It should be understood that each block in the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, may be implemented by computer-readable program instructions.
[0017] These computer-readable program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other devices that process programmable data to produce a machine such that the instructions, executing via the processor of the computer or other devices that process programmable data, create means for implementing the functions / acts specified in the flowchart and / or the block or blocks of the block diagram.These computer-readable program instructions may also be stored in a computer-readable storage medium that can control a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer-readable storage medium having the instructions stored therein comprises an article of manufacture, including instructions that implement the function / act specified in the flowchart and / or the block or blocks of the block diagram.
[0018] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operations to be performed on the computer, other programmable device, or other device to produce a computer-implemented process, such that the instructions executing on the computer, other programmable device, or other device implement the functions / acts specified in the flowchart and / or the block or blocks of the block diagram.
[0019] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or section of instructions comprising one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions specified in the block may occur out of the order specified in the figures. For example, two blocks shown consecutively may actually execute substantially in parallel, or the blocks may sometimes execute in the reverse order, depending on the functionality involved.It is also noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or by combinations of special purpose hardware and computer instructions.
[0020] Many of the functional units described in this specification have been referred to as modules to emphasize their independence in implementation. For example, a module can be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module can also be implemented in programmable hardware units such as field-programmable gate arrays, programmable array logic, programmable logic units, or the like.
[0021] Modules can also be implemented in software for execution by different processor types. For example, an identified module of program instructions may comprise one or more physical or logical blocks of computer instructions organized, for example, as an object, procedure, or function. The executable instructions of an identified module need not be located together in one physical memory location, but may comprise different instructions stored in different memory locations that, when logically linked together, comprise the module and fulfill the stated purpose for the module.
[0022] The computer program can be used by manually loading it directly onto client, server, and proxy computers by loading it onto a computer-readable storage medium such as a CD, DVD, etc. The computer program product can be installed on a computer system automatically or semi-automatically by sending the computer program product to a central server or group of central servers. The computer program is then downloaded onto the client computers, which execute the computer program product. Alternatively, the computer program product is sent directly to the client system via email. The computer program product is then either placed into a directory or loaded into a directory using a button in the email that executes a program that places the computer program in a directory.Another alternative is to send the computer program product directly to a directory on the client computer's hard drive. If proxy servers are present, the process selects the proxy server code, determines the computers on which the proxy server code will be specified, sends the proxy server code, and then installs the proxy server code on the proxy computer. The computer program product is transferred to the proxy server and subsequently stored on the proxy server.
[0023] The computer program product can be integrated into a client, server and network environment by ensuring that the computer program product can operate alongside application, operating system and network operating system software, and then installing the computer program product on the clients and servers in the environment in which the computer program product operates.
[0024] In one embodiment, software on the clients and servers, including the network operating system, on which the computer program product is used is identified that is required for the computer program product or that operates in conjunction with the computer program product. This includes the network operating system, whose software extends a basic operating system by adding network operating functions.
[0025] In one embodiment, software applications and version numbers are identified and compared with the list of software applications and version numbers whose interoperability with the computer program product has been tested. Missing software applications or those that do not correspond to the correct version are updated with the correct version numbers. Program instructions that pass parameters from the computer program product to software applications are checked to ensure that the parameter lists correspond to the parameter lists required by the computer program product. Conversely, parameters passed from the software applications to the computer program are checked to ensure that the parameters correspond to the parameters required by the computer program product.The client and server operating systems, including network operating systems, are identified and compared with the list of operating systems, version numbers, and network software tested for compatibility with the computer program product. Operating systems, version numbers, and network software that do not match the list of tested operating systems and version numbers are updated to the required level on the clients and servers.
[0026] In response to determining that the software on which the computer program product is to be used has the correct version level, the cooperation with the computer program product has been tested, the integration is completed by installing the computer program product on the clients and servers.
[0027] Furthermore, the described functions, structures, and features of the embodiments may be combined in any suitable manner. In the following description, numerous specific details such as programming examples, software modules, user choices, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., are provided to provide a thorough understanding of the embodiments. However, one skilled in the art will recognize that the embodiments may be practiced without one or more of the certain specific details, or with different methods, components, materials, etc. In other examples, well-known structures, materials, or acts are not shown or described in detail to avoid obscuring aspects of an embodiment.
[0028] The description of elements in each figure may refer to elements in previous figures. Like numbers refer to like elements in all figures, including alternative embodiments of like elements.
[0029] In general, embodiments of the disclosure enable users to select groups of datasets or individual datasets to participate in incremental flash copy relationships. Allowing a more granular selection of what participates in an incremental flash copy relationship can accommodate significantly lower target storage requirements.
[0030] Users can specify fully or partially qualified dataset names for participation in incremental flash copy. Incremental flash copy relationships are then created for the extents associated with the specified datasets. The datasets are then monitored during disk request termination and delete / define requests. When datasets are extended, the incremental flash copy relationship information is updated, and additional extent is added to the track set in the incremental flash copy relationship. If the dataset is deleted, the incremental flash copy relationship is terminated. If the dataset is redefined, the previous relationship is retired, and a new relationship is created.
[0031] A Dataset Incremental Flash Copy (DIFT) table is used, which contains information about the participants in the incremental flash copy at the dataset level. The user passes information about the source name, destination name, and destination device or storage group. The passed fully or partially qualified dataset name is used to select source datasets, and the physical location of these datasets is populated in the table. Destination datasets can be mapped based on the destination name and the destination device or storage group passed. After mapping, these extension ranges are also retained in the table.
[0032] Once a dataset is identified, the invention establishes incremental flash copy relationships for the dataset. After this point, an existing change record technology monitors changes on the source traces, and the invention copies changed traces to the target dataset, subsequently creating an incremental flash copy. Until removed from this invention, all specified datasets are monitored for updates that require changes to the incremental flash copy relationships. These updates include a dataset extension, a deleted dataset, a moved dataset, or a redefined dataset.
[0033] When a monitored source dataset is extended, an end-of-disk call notification can be received and the same end-of-disk call can be issued against the target dataset, causing the target dataset to also be extended by the same number of extensions. The newly added source and target extension ranges can then be added to the DIFT. During the next incremental flash copy run, the first call to the new extension range initiates change recording.
[0034] When a monitored source dataset is deleted or a user indicates to retire an existing incremental flash copy relationship, the entire entry is deleted from the DIFT, and the source dataset is no longer monitored for updates that would affect an incremental flash copy relationship. The DIFT table is used to determine which extensions require retiring the incremental flash copy relationship.
[0035] When a monitored source dataset is moved, a notification of the move can be received. First, an incremental flash copy retraction is issued for the source extensions, and the move occurs. After the move is complete, the disk and extensions of the dataset being moved are identified, and the DIFT is updated to reflect the data in the new location. During the next incremental flash copy run, the new relationships between the new source and targets are created, with change recording enabled.
[0036] Fig. 1 is a schematic block diagram illustrating one embodiment of a data processing system 100. Data processing system 100 may include a data copy manager 110, at least one storage subsystem 120, and at least one user device 130. User device 130 may be any computer device or computer system capable of storing and retrieving data via storage subsystem 120. Further, user device 130 may also be capable of sending instructions to data copy manager 110 for backups of storage subsystem 120. In one embodiment, user device 130 may include one or more mainframe computers from International Business Machines (IBM) of Armonk, New York, running an IBM Z / OS® operating system.
[0037] The data copy manager 110 includes a processor 112, a memory 114, a network interface 116, and a dataset replication module 118. The data copy manager 110 is configured, in one embodiment, to identify a source dataset, correlate the source dataset with a target dataset, and incrementally copy data stored in the source dataset to the target dataset. The data copy manager 110 is described with reference to Fig. 2 is explained in more detail.
[0038] The storage subsystem 120, in one embodiment, includes a plurality of storage volumes 125 for storing user data. As used herein, a storage volume is a logical drive having an accessible storage area with a file system. In some embodiments, a storage volume 125 may be stored on a single physical drive. In some embodiments, a storage volume 125 may be stored on a single physical partition within a physical drive. In some embodiments, a plurality of storage volumes 125 may be stored on a single physical drive. In some embodiments, a single storage volume 125 may be stored across a plurality of physical drives.
[0039] In some embodiments, the data copy manager 110 is configured to replicate data from a source storage volume 125 to a target storage volume 125. The source storage volume 125 is the "source" of the user data. User data is originally stored on the source storage volume 125 (e.g., by an application), and it is from there that user data is typically retrieved. The target data volume 125, on the other hand, is the storage location to which the user data is copied. The user data can be restored from the target volume to the source volume in the event that data recovery is needed, for example, due to data deletion or corruption.
[0040] The data in the storage subsystems 120 may be stored in extents. As used herein, an extent refers to a contiguous storage area on a storage device. Data stored in the storage subsystem 120 may be organized into a plurality of datasets. As used herein, a dataset refers to a collection of data, such as a collection of files, tracks, extents, and the like. For example, a dataset may comprise a database table or a data matrix. The dataset refers to the collection (e.g., the organization) rather than the data (e.g., values) stored in the collection. In one embodiment, a storage volume 125 may comprise a plurality of datasets. In another embodiment, a single dataset may be stored across a plurality of storage volumes 125.A storage volume 125 may contain a plurality of extensions organized into one or more data sets, each data set containing one or more events.
[0041] In some embodiments, storage subsystem 120 may include one or more storage controllers and one or more storage devices, including hard disk drives, solid-state storage devices, optical storage devices, micromechanical storage devices, and combinations thereof. The storage devices provide the physical media on which data is stored. In certain embodiments, each storage device includes one or more storage volumes 125. In certain embodiments, a single storage volume 125 may be stored across multiple storage devices. Storage subsystems 120 may store data for user device 130.
[0042] In one embodiment, data copy manager 110 replicates data of a source data set to a target data set using IBM's FLASHCOPY® software. While data copy manager 110 has been described as using FLASHCOPY® software, it will be appreciated that other software may be used for data replication. In FLASHCOPY® software, an incremental flash copy relationship may be established between a first data set of a source volume 125 on storage subsystem 120 (e.g., a source data set) and a second data set of a target storage volume 125 on storage subsystem 120 (e.g., a target data set). The incremental flash copy relationship associates the source data set with the target data set for backup or incremental backup of the source data set.As used herein, an incremental copy refers to a partial copy of the data consisting of copying changes to the source data since the creation of a previous copy. In some embodiments, the data copy manager 110 may perform a full flash copy (e.g., a snapshot point-in-time copy of the dataset) of the target dataset after defining the incremental flash copy relationship. Flash copy relationships may be created in response to instructions from a user (e.g., a system administrator) via the user device.
[0043] Currently, incremental flash copy relationships are only available for an entire storage volume and not for individual datasets within a particular storage volume. The embodiments described herein identify a source dataset in an incremental flash copy relationship with a target dataset using a Dataset Incremental Flash Copy Table (DIFT), as described below. The DIFT is used to manage incremental flash copy relationships between datasets in system 100.
[0044] Fig. 2 is a schematic block diagram illustrating one embodiment of a replication device 200. The replication device 200 includes a dataset replication module 118 such as the dataset replication module 118 described above with reference to Fig. 1. In one embodiment, the dataset replication module 118 includes a source data module 202, a destination data module 204, an allocation module 206, and a replication module 208. In further embodiments, the dataset replication module 118 may include one or more of: a user interface module 210, a storage group module 212, a dataset update module 214, and a policy module 216. The modules 202 through 216 of the dataset replication module 118 may be interconnected via a port, for example, via a computer bus or other data transmission means.
[0045] In one embodiment, the source data module 202 is configured to identify a source dataset. In some embodiments, the source data module 202 identifies the source dataset from a partially qualified dataset name. As used herein, a partially qualified dataset name refers to a dataset name in which not all qualifiers are fully spelled out. For example, a partially qualified dataset name may include a wildcard character to represent a qualifier and / or a portion of a qualifier. In further embodiments, the source data module 202 identifies the source dataset from a fully qualified dataset name. A fully qualified dataset, as used herein, is one in which all qualifiers are fully spelled out. The source data module 202 may search and / or filter a catalog of dataset names using the received dataset name.
[0046] In one embodiment, the source dataset includes a set of locations on a storage volume. The source dataset may be identified by one or more identifiers, including a logical name, a unique identifier, and the like. In one embodiment, the set of locations includes one or more extensions. In another embodiment, the set of locations includes a grouping of disjointed extensions such that the set of locations includes a range of extensions where one or more extensions in the range do not belong to the dataset.
[0047] In some embodiments, the source data module 202 may define a new source dataset containing each dataset matching the partially qualified dataset name in response to receiving a partially qualified dataset name. This may advantageously enable a user to create a single incremental flash copy relationship for a plurality of associated datasets. In further embodiments, the source data module 202 may identify a plurality of source datasets corresponding to each dataset matching the partially qualified dataset name, and the mapping module 206 may correlate each of the plurality of data source datasets with a target dataset in the replication relationship table. This may advantageously enable a user to populate the replication relationship table with a plurality of incremental flash copy relationships using a single instruction.
[0048] In some embodiments, the source data module 202 identifies the source dataset by determining the set of storage locations that correspond to a name / identifier of the source dataset. For example, the source data module 202 may use the name / identifier of the source dataset to search for the corresponding set of storage locations in a lookup table or similar data structure. In certain embodiments, the source data module 202 receives (e.g., via user input) the name / identifier of the source dataset and proceeds to identify the corresponding set of storage locations. In certain embodiments, the source data module 202 receives (e.g., via user input) the name / identifier of the source dataset and proceeds to identify the corresponding set of storage locations.
[0049] In certain embodiments, source data module 202 includes a user interface module 210 that receives user input defining the source dataset, as described below. Source data module 202 may identify the source dataset based on dataset information, such as a partially qualified dataset name, received from user interface module 210.
[0050] In one embodiment, the target data module 204 is configured to define a target dataset in response to the source data module 202 identifying a source dataset. In certain embodiments, the target data module 204 maps a set of locations on the target volume (e.g., extents) for use by the source dataset, where the one or more mapped locations define the target dataset. In some embodiments, the target data module 204 identifies a previously mapped target dataset associated with the source dataset (e.g., where the named source dataset has been moved). The target data module 204 may specify the target dataset (including name and extent ranges) to the mapping module 206, where the mapping module 206 links the source dataset to the target dataset in the replication relationship table.
[0051] In one embodiment, this target data module 204 receives dataset information such as a target name, a target device, and / or a storage group, where the target data module defines the target dataset based on the dataset information. For example, the target name may identify a particular target volume and / or a particular target dataset. The target data module 202 may identify a plurality of extensions on the particular target volume and / or associated with the specific target dataset and associate them with the source dataset. The dataset information may be user input received from the user interface module 210, as described below.
[0052] In another embodiment, the target data module 204 may receive a target device name identifying a physical device, where the target data module 204 allocates a target data set within the target device. In one embodiment, the allocated target data set within the target device may be part of a storage volume 125 located on the target device. In another embodiment, the allocated target data set within the target device may be distributed across multiple storage volumes 125 located on the target device. In yet another embodiment, the target data module may receive a storage group from the user, where the target data module 204 allocates the target data set from the storage group. In some embodiments, the target data module 204 includes a storage group module 212 that identifies the storage group from the received data set information, as described below.
[0053] In one embodiment, the mapping module 206 is configured to store a replication relationship table that maps the source dataset to a target dataset. In one embodiment, the replication relationship table includes a dataset incremental flash copy (DIFT) table. The mapping module 206 establishes a replication relationship between each pair of source datasets and target datasets. Accordingly, the replication relationship table may include an entry for each source dataset identified by the source data module 202.
[0054] In one embodiment, the target dataset includes a set of storage locations on a target volume. In certain embodiments, the target volume is a different storage volume 125 in the data storage subsystem 120 than the source volume. In one embodiment, the mapping module 206 generates the replication relationship table by mapping the source dataset to the target dataset. In another embodiment, the mapping module 206 modifies an existing replication relationship table to map the source dataset to the target dataset.
[0055] In certain embodiments, the mapping module 206 may receive information identifying the target dataset from the target data module 204. In certain embodiments, the mapping module 206 correlates the target dataset with the source dataset and stores the correlation in the replication relationship table. In some embodiments, the mapping module 206 may include a dataset update module 214 for capturing changes to one or more datasets in the replication relationship table, as described below.
[0056] In one embodiment, the replication module 208 is configured to perform an incremental copy of the data stored in the source dataset based on the replication relationship table. For example, the replication module 208 replicates data stored in the source dataset to the target storage volume 125 of the target dataset defined in the replication relationship table. In one embodiment, the replication module 208 periodically copies data from the source dataset to the target dataset, for example, periodically performing an incremental flash copy using a dataset incremental flash copy (DIFT) table. In some embodiments, the replication module 208 performs the incremental copy of the source dataset at a frequency defined by the replication relationship table.In certain embodiments, different source datasets may be copied at different frequencies. For example, a first source dataset may contain critical user data and may be backed up more frequently than a second source dataset containing less important user data.
[0057] In one embodiment, the replication module 208 monitors changes to the values (data) in each source dataset defined in the replication relationship table. At a predetermined interval (e.g., at a frequency defined by the replication relationship table), the replication module 208 copies these changed values in the source dataset to the corresponding locations in the target dataset defined in the replication relationship table. In some embodiments, the allocation module 208 may include a policy module 216 that defines a replication policy for one or more source datasets in the replication relationship table, as described below.
[0058] In one embodiment, the user interface module 210 is configured to receive dataset information from a user, for example, via the user device 130. The dataset information may include one or more of a source name, a destination name, a destination device, and a storage group. In certain embodiments, the user interface module 210 provides the dataset information to the source data module 202, wherein the source data module 202 identifies the source dataset based on the provided dataset information. In some embodiments, the user interface module 210 provides the dataset information to the mapping module 206, wherein the mapping module 206 identifies a replication relationship between a source dataset and a destination volume and / or a destination dataset based on the dataset information.
[0059] In some embodiments, the user interface module 210 receives a partially qualified dataset name as dataset information, wherein the source state module 202 identifies the source dataset based on the partially qualified dataset name. The partially qualified dataset name may be a wildcard dataset name, wherein the source dataset includes all datasets in the source volume that match the partially qualified dataset name. In further embodiments, the dataset information may include only fully qualified dataset names, wherein the source state module 202 identifies a source dataset based on each fully qualified dataset name.In certain embodiments, the user interface module 202 provides the target name, the target device, and / or the storage group to the target data module 204, wherein the target data module 204 identifies and / or associates the target data set based on the provided information.
[0060] In some embodiments, user interface module 210 includes a human-machine interface that enables a user (e.g., an administrator of data processing system 100) to provide instructions, commands, values, and / or definitions for replicating data in a dataset via an incremental flash copy. User interface module 210 may be used to control data copy manager 110 and / or dataset replication module 118. For example, user interface module 210 may receive user input from user device 130 in the form of instructions, commands, values, and / or definitions for incremental dataset copying via data copy manager 110 and / or dataset replication module 118.The user input may be in the form of system commands, keyboard inputs, mouse inputs, touchscreen inputs, or the like. In one embodiment, the user interface module 210 provides a graphical user interface (GUI) for display on the user device 130.
[0061] A storage group module 212, in one embodiment, is configured to identify a storage group associated with the source data set and / or the target data set. The storage group module 212 may receive data set information, including a storage group, from the user interface module 210. Different classes of user data may be stored in different storage groups, and the storage group module 212 may associate the source data set with a particular storage group based on the class of user data contained in the source data set. Accordingly, the storage group module 212 may identify an appropriate storage group, and the target data module 204 may associate a target data set from a corresponding storage device in the storage subsystem 120 that belongs to the identified storage group.
[0062] A dataset update module 214 is configured, in one embodiment, to monitor changes to the source dataset. In response to detecting a change to the source dataset, the dataset update module 214 may trigger the mapping module 206 to update the replication relationship table (e.g., a DIFT). In one embodiment, the dataset update module 214 may also trigger the target data module 204 to update the target dataset in response to a change to the source dataset.
[0063] As used herein, changes to the source dataset refer to changes to a definition of the source dataset, such as changes to the storage volume 125 containing the source dataset and / or changes to the set of storage locations corresponding to the source dataset. The definition of the source dataset may include a name of the source dataset, a data track associated with the source dataset, an extension associated with the source dataset, a range of physical storage locations on a storage volume corresponding to the dataset, and the like. Examples of changes to the source dataset include, but are not limited to, adding storage locations to the source dataset, deleting storage locations associated with the source dataset, and replacing locations of the source dataset with different locations on the source volume.
[0064] In certain embodiments, the dataset update module 214 monitors an expansion of the source dataset. As used herein, an expansion of the source dataset refers to the addition of storage locations (e.g., extensions) to the source dataset. In one embodiment, the dataset update module 214 expands the target dataset in response to an expansion of the source dataset. In another embodiment, the dataset update module 214 may signal the target data module 204 to expand the target dataset in response to an expansion of the source dataset. In response to the expansion of the source dataset and the target dataset, the mapping module 206 may update the replication relationships table to map the expanded source dataset to the expanded target dataset.
[0065] For example, if the dataset update module 214 identifies the addition of three extents to the source dataset, the target data module 204 may then map three additional extents on the target volume to the target dataset, and the mapping module 206 may update the replication relationship table to include both the updated source dataset and the updated target dataset. The target data module 204 may map the additional extents to available locations on the target volume, even if the target dataset consequently contains non-contiguous extents.
[0066] In some embodiments, the dataset update module 214 monitors the deletion of a location (e.g., extension) of the source dataset, where the target data module 204 removes a corresponding location (e.g., extension) from the target dataset, and the mapping module 206 updates the replication relationships table to delete an entry corresponding to the retired source dataset. For example, if the dataset update module 214 identifies the deletion of extensions from the source dataset, the target data module 204 may subsequently unmap (e.g., delete) a corresponding number of extensions in the target dataset, and the mapping module 206 may update the replication relationships table to reflect both the updated source dataset and the updated target dataset.The undone extensions of the target extensions can be remapped to other changes in the source datasets. In one embodiment, all extensions of the source dataset can be deleted, with the mapping module 206 deleting the entry from the replication relationship table corresponding to the now-empty source dataset.
[0067] In certain embodiments, the dataset update module 214 monitors a retraction of the source dataset, where the mapping module 206 updates the replication relationship table to delete an entry corresponding to the retracted source dataset. In some embodiments, the dataset update module 214 monitors a move of the source dataset. For example, the dataset update module 214 may detect a retraction command that references a source dataset in the replication relationship table, where the mapping module 206 deletes the entry corresponding to the retracted source dataset.
[0068] In one embodiment, the dataset update module 214 may detect a move of the source dataset. In response, the dataset update module 214 may retire (delete) the incremental flash copy relationship for the source extensions corresponding to the old source dataset, identify new source extensions corresponding to the moved source dataset, and initiate an incremental flash copy relationship between the new source extensions and the target dataset, with the mapping module 206 updating the replication relationship table to reflect the new incremental flash copy relationship. In one embodiment, the target data module 204 may map a new target dataset to the moved source dataset. In another embodiment, the target data module 204 may remap the same target dataset to the moved source dataset.
[0069] In certain embodiments, the dataset update module 214 monitors whether a new dataset matches the partially qualified dataset name and updates the source dataset to include the new dataset, wherein the mapping module updates the replication relationship table in response to the dataset update module updating the source dataset. In some embodiments, the dataset update module 214 checks for changes to definitions of each source dataset in the replication relationship table before the replication module 208 performs an incremental copy of data stored in the source dataset. In another embodiment, the dataset update module 214 may periodically check for changes to the source dataset between successive incremental copies by the replication module 208.For example, the dataset update module 214 may identify the frequency with which the source dataset is incrementally copied and check for changes to the source dataset at the same frequency. In further embodiments, the dataset update module 214 continuously monitors for changes to definitions of a source dataset and dynamically updates the replication relationship table in response to detecting a change.
[0070] A policy module 216, in one embodiment, is configured to define a replication policy for the source dataset, wherein the replication module 208 copies data stored in the source dataset according to the defined replication policy. In some embodiments, different source datasets are copied at different intervals, as defined by the replication policy. For example, a source dataset whose data is frequently modified may be replicated at a different interval than a source dataset whose data is rarely modified. In certain embodiments, the replication policy specifies a time of day at which the data stored in the source dataset is replicated. In one embodiment, an entry in the replication relationship table contains a reference to the replication policy for the source dataset.
[0071] Fig. 3A is a schematic block diagram illustrating one embodiment of a dataset incremental flash copy (DIFT) table 300. The DIFT 300 is a replication relationship table that maps one or more source datasets to a corresponding number of target datasets. The DIFT 300 may be organized as a data structure, a database, or the like. The DIFT 300 may be stored in the data copy manager 110, the storage subsystems 120, or combinations thereof.
[0072] The incremental dataset flash copy (DIFT) table 300 includes a plurality of incremental replication relationships 302, such as a plurality of incremental flash copy relationships. Each incremental replication relationship 302 in the DIFT 300 describes an incremental flash copy relationship between a source dataset and a target dataset. In the illustrated embodiment, each incremental replication relationship 302 includes a source dataset identifier 304, a source dataset location 306, a target dataset identifier 308, and a target dataset location 310.
[0073] The source dataset identifier 304 identifies the source dataset on the source volume. In one embodiment, the source dataset is a named dataset, where the source dataset identifier 304 includes a logical name for the source dataset. In another embodiment, the identified dataset may include a partially qualified dataset name. In certain embodiments, the source dataset identifier 304 is an index to the DIFT database and / or the data structure. Likewise, the identifier for the target dataset 308 may uniquely identify the target dataset on the target volume and, in certain embodiments, may be a logical name of the target dataset. In some embodiments, an incremental replication relationship 302 may also include an indicator of a target device or target storage group associated with the target dataset and / or a replication policy for the incremental flash copy relationship.
[0074] The source dataset location 306 specifies a logical and / or physical location of the source dataset in the storage subsystem 120. For example, the source dataset location 306 may include a volume identifier and a range of extents in which the source dataset is located. Likewise, the destination location 310 specifies the logical and / or physical location of the source dataset in the storage subsystem 120. The source dataset location 306 is described in more detail below with reference to Fig. 3B. The target storage location 310 is described in more detail below with reference to Fig. 3C described.
[0075] Fig. Figure 3B illustrates a data structure for the source dataset location 306. As described above with reference to Fig. 3A, the source data set location 306 describes the location of the source data set within the storage subsystem 120. In some embodiments, the source data set location 306 includes one or more source extension areas 312 and a source volume identifier 314 of a storage volume 125 associated with each source extension area 312. In certain embodiments, the source data set may be distributed across a plurality of storage volumes 125, with the source data set location 306 including at least one source extension area 312 and source volume identifier 314 pair for each of the plurality of storage volumes 125 associated with the source data set.
[0076] In one embodiment, a source extension range 312 describes a group of contiguous extensions on a storage volume 125 associated with the source dataset. If the source dataset has non-contiguous extensions, the source dataset storage location 306 contains a plurality of source extension ranges 312, each source extension range 312 identifying a group of contiguous extensions. In another embodiment, the source extension range 312 identifies each extension associated with the dataset for a source volume identifier 314.
[0077] Changes to the source dataset (e.g., changing the storage locations that define the source dataset) are reflected in the source dataset storage location 306. In one embodiment, the source dataset storage location 306 is modified to accommodate an additional source extension region 312 (and a corresponding source volume identifier 314) in response to one or more extensions being added to the source dataset. In another embodiment, an existing source extension region 312 is adapted to accommodate one or more extensions being added to the source dataset.Likewise, the source dataset storage location 306 may be modified so that a source extension area 312 (and its corresponding source volume identifier 314) may be removed and / or a source extension area 312 may be updated in response to one or more extensions being removed from the source dataset.
[0078] Fig. Figure 3C illustrates a data structure for the storage location 310 of the target dataset. As described above with reference to Fig. 3A, the target data set location 310 describes the storage location of the target data set within the storage subsystem 120. In some embodiments, the target data set location 310 includes one or more target extension areas 316 and a target volume identifier 318 of a storage volume 125 associated with each target extension area 316. In certain embodiments, the target data set may be distributed across a plurality of storage volumes 125, with the target data set location 310 including at least one target extension area 316 and target volume identifier 318 pair for each of the plurality of storage volumes 125 associated with the target data set.
[0079] In one embodiment, a target extent range 316 describes a group of contiguous extents on a storage volume 125 associated with the target dataset. If the target dataset has non-contiguous extents, the storage location 310 of the target dataset contains a plurality of target extent ranges 316, where each target extent range 316 identifies a group of contiguous extents. In another embodiment, the target extent range 316 identifies each extent associated with the dataset for a target volume identifier 318.
[0080] Changes to the target dataset (locations that define the target dataset) are reflected in the target dataset location 306. The target dataset changes may occur in response to changes in the source dataset. In one embodiment, the target dataset location 310 is modified to accommodate an additional target extension area 316 (and a corresponding target volume identifier 318) in response to one or more extensions being added to the target dataset. In another embodiment, an existing target extension area 316 is adapted to accommodate one or more extensions being added to the target dataset.Likewise, the storage location 310 of the target dataset may be modified so that a target extension area 316 (and its corresponding target volume identifier 318) may be removed and / or a target extension area 316 may be updated in response to one or more extensions being removed from the target dataset.
[0081] Fig. 4 is a schematic flowchart illustrating one embodiment of a method 400. The method 400 may create the dataset incremental flash copy (DIFT) table 300. The method 400 may be performed using the dataset replication module 118. Alternatively, the method 400 may be performed by a computer program product. The computer program product may comprise a computer-readable storage medium having program instructions embodied thereon. The computer-readable storage medium may be the memory 114, the storage subsystem 120, or a combination thereof. The program instructions may be readable / executable by the processor 112 to perform the method 400.
[0082] The method 400 begins, and in one embodiment, the source data module 202 receives 402 a partially qualified dataset name that identifies a source dataset in a source volume. The source data module 202 determines 404 a source dataset based on the partially qualified dataset name. For example, the partially qualified dataset name may include a dataset name with a wildcard character, where the source data module 202 determines 404 a source dataset that includes all datasets in the source volume that match the partially qualified dataset name.
[0083] The mapping module 206 generates 406 a replication relationship table that maps the source dataset on a target volume to a target dataset. In one embodiment, the replication relationship table comprises a dataset incremental flash copy (DIFT) table. In another embodiment, generating 406 the replication relationship table may include the target data module 204 identifying and / or mapping a target dataset on a target volume that corresponds to the source dataset.
[0084] The replication module 208 periodically executes 408 an incremental copy of data stored in the source dataset based on the replication relationship table. In one embodiment, the replication module 208 executes 408 an incremental flash copy of data stored in the source dataset to the target dataset. The method 400 ends.
[0085] Fig. 5 is a schematic flowchart illustrating one embodiment of an incremental dataset replication method 500. The method 500 may create the above-described dataset flash copy (DIFT) table 300 and perform an incremental replication of a flash copy of a source dataset based on the DIFT 300. The method 500 may be performed using the dataset replication module 118. Alternatively, the method 500 may be performed by a computer program product. The computer program product may include a computer-readable storage medium having program instructions embodied thereon. The computer-readable storage medium may be the memory 114, the storage subsystem 120, or a combination thereof. The program instructions may be readable / executable by the processor 112 to perform the method 500.
[0086] The method 500 begins, and the user interface module 210 receives 502 dataset information from a user (e.g., an administrator of the data processing system 100). The dataset information may include one or more of a source dataset name (e.g., a partially qualified dataset name), a source volume, a destination dataset name, a destination volume name, a destination device, and / or a storage group. The source data module 202 identifies 504 a source dataset based on the received dataset information. In one embodiment, identifying 504 a source dataset includes identifying all datasets in the source volume that match a partially qualified dataset name. In another embodiment, identifying 504 the source dataset includes determining one or more extensions associated with a received source dataset name.
[0087] The target data module 204 identifies 506 a target dataset corresponding to the source dataset. In one embodiment, identifying 506 the target dataset includes associating one or more extents on a target volume and / or device with the source dataset identified 504 by the source data module 202. The association module 206 creates 508 incremental flash copy relationships between the source dataset and the target dataset. In one embodiment, creating 506 the incremental flash copy relationship includes populating a dataset incremental flash copy (DIFT) table, such as DIFT 300. The replication module 208 periodically executes 510 an incremental flash copy of data stored in the source dataset.In one embodiment, executing 510 the incremental copy includes referencing information in DIFT 300 for copying the source dataset to the target dataset. In certain embodiments, replication module 208 periodically executes 510 the incremental copy at a frequency defined in DIFT 300.
[0088] The dataset update module 214 determines 512 whether a change is made to the source dataset. In one embodiment, the dataset update module 214 monitors 512 a definition of the source dataset (e.g., the extensions comprising the source dataset) for changes to the source dataset definition. Examples of changes to the source dataset include adding extensions to the source dataset, removing extensions from the source dataset, and moving the source dataset. If the dataset update module 214 detects a change to the source dataset, the mapping module 206 updates 514 the incremental flash copy relationship. On the other hand, if the dataset update module 214 does not detect a change to the source dataset, the replication module 208 continues with the periodic execution 510 of the incremental flash copy of the source dataset.
[0089] In response to the dataset update module 214 detecting 512 a change to the source dataset, the mapping module 206 updates 514 the replication relationship table based on the detected change. In one embodiment, updating 514 the replication relationship table based on the detected change may include mapping additional extents on a target volume / device to the target dataset and / or removing extents from the target dataset, for example, in response to adding or removing extents to the source dataset. In another embodiment, updating 514 the replication relationship table may include retiring an existing replication relationship in response to a change that includes removing all extensions from the source dataset.In yet another embodiment, updating 514 the replication relationship table based on a detected change may include retiring an existing replication relationship, re-identifying the source dataset and the target dataset, and creating a new replication relationship table between the source dataset and the target dataset. In one embodiment, method 500 continues until there are no more source datasets that have an incremental flash copy relationship with the target dataset (e.g., until all incremental flash copy relationships have been retired).
[0090] Fig. 6 is a schematic flowchart illustrating one embodiment of an incremental dataset replication method 600. The method 600 may create the above-described dataset flash copy (DIFT) table 300 and perform incremental flash copy replication of a source dataset based on the DIFT 300. The method 600 may be performed using the dataset replication module 118. Alternatively, the method 600 may be performed by a computer program product. The computer program product may include a computer-readable storage medium having program instructions embodied thereon. The computer-readable storage medium may be the memory 114, the storage subsystem 120, or a combination thereof. The program instructions may be readable / executable by the processor 112 to perform the method 600.
[0091] The method 600 begins, and in one embodiment, the source data module 202 defines 602 a source dataset. The source data module 202 may receive a partially qualified dataset name and define 602 the source dataset to include all datasets on the source volume that match the partially qualified dataset name. The target data module 204 assigns 604 a target dataset on a target volume that corresponds to the source dataset. In some embodiments, the target data module 204 assigns 604 a target dataset based on the received dataset information, such as a target name and / or a target entity.
[0092] The mapping module 206 updates the replication relationship table based on the defined source dataset in the mapped target dataset. In some embodiments, the replication relationship table is an incremental flash copy dataset table, such as the DIFT 300 described above with reference to Fig.3. An update 606 of the replication relationship table may include adding a new entry that correlates the defined source dataset with the associated target dataset. The replication module 208 periodically executes 608 an incremental copy (e.g., an incremental flash copy) of data stored in the source dataset. In one embodiment, the execution 608 of the incremental copy includes references to information in the DIFT 300 for copying the source dataset to the target dataset. In certain embodiments, the replication module 208 periodically executes 608 the incremental copy at a frequency defined in the DIFT 300.
[0093] The dataset update module 214 determines 610 whether a move of the source dataset is taking place. For example, whether the dataset can be moved to a new location on the source volume (or alternatively, to a different storage volume 125). As another example, the logical name of the dataset can be assigned to a different set of extensions, thereby moving the location of the source dataset.In response to the dataset update module 214 detecting a move of the source dataset, the dataset update module 214 retracts the replication relationship between the source dataset and the target dataset (thereby ceasing the incremental copying of the originally defined extent of the source dataset), the source data module 202 redefines 602 the source dataset, the target data module 204 reassigns a target dataset to the source dataset, and the mapping module 206 updates 606 the replication relationship table.
[0094] If the dataset update module 214 does not detect 610 a move of the source dataset, the dataset update module 214 determines 614 whether an add to the source dataset is occurring. For example, the dataset update module 214 may detect a modification to the source dataset that includes the addition of one or more extensions to the source dataset. In response to the dataset update module 214 detecting an add to the source dataset, the target data module 204 extends 616 the target dataset (e.g., associates additional extensions with the target dataset), and the mapping module 206 updates 606 the replication relationships table.
[0095] If the dataset update module 214 does not detect an addition to the source dataset, the dataset update module 214 determines 618 whether a deletion is occurring in the source dataset. For example, the dataset update module 214 may detect a modification to the source dataset that includes the deletion of one or more extensions from the source dataset. In response to the dataset update module 214 detecting a deletion in the source dataset, the target data module 204 shrinks 620 the target dataset (e.g., removes one or more extensions from the target dataset), and the mapping module 206 updates 606 the replication relationship table.
[0096] The embodiments may be practiced in other specific forms. The described embodiments are to be considered in all respects only as exemplary and not restrictive. The scope of the invention is therefore indicated by the appended claims rather than by the foregoing description. All changes within the meaning and range of equivalence of the appended claims are to be considered as within this scope.
Claims
[1] Device comprising: a source data module that identifies a first source dataset from a partially qualified dataset name, the first source dataset including a first set of extension regions on a first source volume, the first source volume including a plurality of datasets, the plurality of datasets comprising the first source dataset and additional datasets that are different from the first source dataset; a target data module that defines a first target data set in response to the source data module identifying the first source data set, the first target data set including a second set of extension regions on a target volume; a mapping module that stores a replication relationship table, the replication relationship table having a plurality of incremental flash copy relationships and a replication policy corresponding to each incremental flash copy relationship and specifying a copy interval, each incremental flash copy relationship having an identifier of a source dataset, a set of extension ranges corresponding to the identified source dataset, an identifier of a target dataset corresponding to the identified source dataset, and a set of extension ranges corresponding to the identified target dataset, wherein the mapping module maps the first source dataset to the first target dataset and specifies a replication policy for the first source dataset to form a first incremental flash copy relationship; a replication engine that periodically performs an incremental copy of data stored in the source datasets defined in the replication relationship table based on the replication policies, stored in the incremental flash copy relationship, with different source datasets being copied at different intervals based on the corresponding replication policies; and a dataset update module that detects an end-of-volume request, wherein the dataset update module monitors adding a third set of one or more extension ranges on a second source volume to the first source dataset in response to the end-of-volume request, and wherein the dataset- Update module monitors a removal of one or more extension ranges from the first source data set in response to the end-of-volume request, wherein the second source volume is different from the first source volume, wherein the target data module creates a fourth set of one or more additional extension areas on the target data carrier in response to detecting the addition of the third set of one or more multiple extension ranges to the first source dataset, wherein the mapping module updates the first incremental flash copy relationship to include the third set of one or more extension areas on a second source volume and to include the fourth set of one or more additional extension areas on the destination volume, wherein the target data module undoes an allocation of one or more extension areas on the target volume in response to the removal of one or more extension areas from the first source data set, and wherein the allocation module updates the first incremental flash copy relationship to remove from the first target data set the one or more extent regions on the target volume corresponding to the one or more extent regions that were unallocated, wherein at least a portion of the source data module, the target data module, the mapping module, the dataset update module, and the replication module comprises one or more of hardware and executable code, the executable code stored on one or more computer-readable storage media. [2] The apparatus of claim 1, wherein the dataset update module monitors an expansion of the first source dataset in response to the end-of-volume request, wherein the allocation module updates the replication relationship table in response to the expansion of the first source dataset. [3] The apparatus of claim 2, wherein the dataset update module extends the first target dataset in response to an extension of the first source dataset, wherein the replication relationship table associates the extended source dataset with the extended target dataset. [4] The apparatus of claim 2, wherein the dataset update module monitors an extension of the first source dataset between successive iterations of copying the first source dataset. [5] The apparatus of claim 1, wherein the dataset update module further monitors changes to the first source dataset in response to the end-of-disk request, wherein the mapping module updates the replication relationship table in response to a change to the first source dataset, the change to the first source dataset being selected from the group consisting of: Adding extent regions on the first source disk to the first source dataset and replacing extent regions of the first source dataset with extent regions on the first or second source disk. [6] The apparatus of claim 1, wherein the dataset update module that monitors a retirement of the first source dataset in response to the end-of-volume request, wherein the mapping module updates the replication relationship table to delete an entry corresponding to the retired source dataset. [7] The apparatus of claim 1, wherein the dataset update module further monitors whether a new dataset matches the partially qualified dataset name and updates the first source dataset to include the new dataset, wherein the mapping module updates the replication relationship table in response to the dataset update module updating the first source dataset. [8] The apparatus of claim 1, further comprising a user interface module that receives dataset information from a user, the dataset information being selected from the group comprising: a target name, a target device, and a storage group, the target data module defining the first target dataset based on the dataset information. [9] The apparatus of claim 1, wherein the partially qualified dataset name comprises a dataset name with a wildcard character, wherein the first source dataset includes all datasets in the first source volume that match the partially qualified dataset name and all datasets in the second source volume that match the partially qualified dataset name. [10] A method for data replication, comprising: Receiving a partially qualified dataset name; determining a first source dataset on a source volume based on the partially qualified dataset name, the first source volume comprising a plurality of datasets, the plurality of datasets comprising the first source dataset and additional datasets, that differ from the first source dataset; allocating a first target dataset on a target volume in response to determining the first source dataset, the first target dataset including a set of extension regions on a target volume; Adding a first incremental flash copy relationship corresponding to the first source dataset and the first target dataset to a replication relationship table having a plurality of incremental flash copy relationships and an indication of a replication policy corresponding to each incremental flash copy relationship and specifying a copy interval, wherein adding the first incremental flash copy relationship comprises associating the first source dataset with the first target dataset and specifying a replication policy for the first source dataset, wherein each incremental flash copy relationship in the replication relationship table has an identifier of a source dataset, a set of extent ranges corresponding to the identified source dataset, an identifier of a target dataset corresponding to the identified source dataset, and a set of extent ranges belonging to the identified target dataset; performing an incremental copy of data stored in the datasets specified in the replication relationship table. replication relationships defined source datasets are stored based on the replication policies stored in the incremental flash copy relationship, with different source datasets on the first source volume being copied at different intervals based on the corresponding replication policies; Detecting an end-of-disk request; Monitoring the addition of a third set of one or multiple extension areas on a second source volume to the first source dataset in response to the end-of- Disk request, wherein the second source disk is different from the first source disk; allocating a fourth set of one or more additional extension ranges on the destination volume in response to detecting the addition of the third set of one or more extension ranges to the first source data set; Updating the first incremental flash copy relationship to include the third set of one or more extent areas on a second source volume and to include the fourth set of one or more to include multiple additional extension areas on the target disk; Monitoring the removal of one or more Extension ranges from the first source dataset in response to the end-of-disk request; undoing an allocation of one or more extent regions of the target volume in response to removing one or more extent regions from the first source dataset; and Updating the first incremental flash copy relationship to remove from the first incremental flash copy relationship the one or more extended extents on the target volume that correspond to the one or more extended extents that were unassigned. [11] The method of claim 10, further comprising: Monitoring a change to the first source dataset in response to the end-of-disk request, wherein the change to the first source dataset includes one or more of adding a storage location to the first source dataset, replacing a storage location in the first source dataset with another storage location, acquiring a new dataset that matches the partially qualified dataset name, moving the first source dataset, and extending the first source dataset; and Update the replication relationships table in response to the change to the first source dataset. [12] The method of claim 11, wherein performing an incremental copy of data stored in the source datasets defined in the replication relationship table comprises periodically copying changed data stored in the first source dataset, wherein updating the replication relationship table occurs between successive iterations of incremental copying of the source datasets defined in the replication relationship table. [13] The method of claim 10, wherein updating the replication relationship table comprises allocating additional storage space to the first target dataset in response to an expansion of the first source dataset. [14] The method of claim 10, further comprising: Identifying address locations on the first source volume associated with the first source data set in response to identifying the first source data set; and Mapping address locations on the target volume for the first target dataset in response to identifying the address locations on the first source volume, wherein the replication relationship table maps address locations belonging to the first source dataset to address locations on the target volume. [15] The method of claim 10, further comprising deleting an entry in the table for replication relationships associated with the first source dataset in response to retiring the first source dataset from incremental copying. [16] The method of claim 10, wherein performing an incremental copy of data from the first source dataset to the first target dataset comprises creating an incremental flash copy of the first source dataset. [17] The method of claim 10, further comprising: Monitoring a deletion of the first source dataset in response to the end-of-disk request, and Delete the incremental flash copy relationship between the first source dataset and the first destination dataset in response to the end-of-disk request. [18] A computer program product for data replication, the computer program product comprising a computer-readable storage medium having program instructions contained therein, the program instructions being readable / executable by a processor to cause the processor to execute the method according to claim 10.
Citation Information
Patent Citations
Incremental update control for remote copy
US20030158869A1
Block-based sparse backup images of file system volumes
US8200637B1