Abstract:
Provided are a method, system and program for maintaining and using information on updates to a data group after a logical copy is made of the data group. A first logical copy of a data group in a storage at a first point-in-time is established. The first logical copy maintains data to reconstruct the data group as of the first point-in time after the data group has been updated following the first-point-in time. Indication is made of regions of the data group updated at the storage after establishing the first logical copy. A second logical copy of the data group in the storage at a second point-in-time is established. The second logical copy maintains data to reconstruct the data group as of the second point-in time after the data group has been updated following the second point-in time. The indicated regions of the data group updated between the first and second points-in-time are saved in a change list.

Description:
BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   The present invention relates to a method, system, and program for maintaining and using information on updates to a data group after a logical copy is made of the data group. 
   2. Description of the Related Art 
   Backup programs backup data at a computer system to a backup storage device, which may comprise a local storage device or remote storage device. Certain backup programs provide management of the backed up files and may utilize a backup database having information on the status of backed-up files. Such managed backup programs typically store the data in a proprietary storage format and utilize complex backup client and backup server programs to manage the backup operations in a network environment. The managed backup program must be used to restore the files maintained in the proprietary backup format. 
   In addition to maintaining back-ups of data, certain copy programs create logical copies or an image of a volume instantly, without having to physically copy the data subject to the copy operation. After the logical copy is established, any updates to the data subject to the logical copy operation are moved to the logical copy before the update is applied to allow return to the data as of the point-in-time the copy was created. Snapshot copy is a copy program offered by different software vendors that is used to create an instantaneous logical point-in-time copy of data. 
   Certain backup environments employ the use of distributed storage devices, which may be in different locations, to maintain backup copies of data. Although it may be desirable to have a remote machine maintain the logical copies of a backup data group, the logical copies and accompanying data structure of the data group created on one machine may not be useable on another machine with the same or different logical copy program, e.g., Snapshot program. 
   SUMMARY 
   Provided are a method, system and program for maintaining and using information on updates to a data group after a logical copy is made of the data group. A first logical copy of a data group in a storage at a first point-in-time is established. The first logical copy maintains data to reconstruct the data group as of the first point-in time after the data group has been updated following the first-point-in time. Indication is made of regions of the data group updated at the storage after establishing the first logical copy. A second logical copy of the data group in the storage at a second point-in-time is established. The second logical copy maintains data to reconstruct the data group as of the second point-in time after the data group has been updated following the second point-in time. The indicated regions of the data group updated between the first and second points-in-time are saved in a change list. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  illustrates an embodiment of a computing environment. 
       FIG. 2  illustrates an additional embodiment of a computing environment. 
       FIG. 3  illustrates an embodiment of operations performed by a backup program to initiate operations to maintain logical copies of a data group. 
       FIG. 4  illustrates an embodiment of operations to maintain the logical copies of data. 
       FIG. 5  illustrates an embodiment of operations to create-an additional point-in-time copy of data. 
       FIG. 6  illustrates an embodiment of operations to recover a copy of the data group as of a specified point-in-time. 
   

   DETAILED DESCRIPTION 
     FIG. 1  illustrates a computing environment in which embodiments are implemented. A source computer  2   a  includes a processor  4   a  and a memory  6   a  comprised of one or more memory devices including the programs and code executed by the processor  4   a . A backup program  8  executing in the memory  6   a  maintains logical copies  10   a  . . .  10   n  of a data group  12   a  in a source storage  14   a  as of one or more points-in-time (T 0  . . . T n ). The backup program  8  may invoke a logical copy program  16   a , which generates a logical copy  10   a  . . .  10   n  as of a point-in-time. In one embodiment, the copy program  16   a  may utilize Snapshot technology. With Snapshot technology, a logical copy  10   a  . . .  10   n , which may be in a different location in storage from the data group  12   a , is immediately established as of a point-in-time. The Snapshot program copies data to the logical copy in response to receiving an update to that data group  12   a ,  12   b  and before the data is updated if the data has not been updated since the time the logical copy  10   a  . . .  10   n ,  11   a  . . .  11   n  was established. Other logical copy technologies may be used to establish an instant point-in-time copy of the data group  12   a ,  12   b.    
   The backup program  8  may render a user interface  18  to enable the user to enter and review, via user Input/Output (I/O) devices  20  (e.g., such as a mouse, display monitor, keyboard etc.) backup settings indicating a schedule during which the backup program  8  creates a new logical copy, i.e., creates a new Snapshot copy, and other settings, such as a limit on the number of logical copies, etc. When updates are received, the backup program  8  indicates the data that is updated in a change list  22   a  . . .  22   n . The change list  22   a  . . .  22   n  as of a point-in-time, e.g., T i , indicates updates received since the last logical copy was created, e.g., T i , and the current point-in-time (T i+1 ). Thus, the logical copy at the point-in-time T i  plus the updates indicated in the change list T i+1  comprises the data in the data group as of T i+1 . In certain embodiments, the change list  22   a  . . .  22   n  information is maintained independently of the logical copy program  8 , e.g., Snapshot, related operations. Further, Application Programming Interfaces (APIs) may be used to provide an interface to the change lists  22   a  . . .  22   n  to allow the backup program  8  to query the change list  22   a  . . .  22   n  to determine the changed blocks and send those blocks to the target computer  14   a  for remote backup storage. 
     FIG. 1  further shows a target computer  2   b , including many of the components of the source computer  2   a , including a processor  4   b , a memory  4   b , a logical copy program  8   b , an attached target storage  14   b  having a data group  12   b  providing a mirror copy of the data group  12   a  at an initial time (T 0 ), and logical copies  11   a  . . .  11   n  for different points-in-time (T 0  . . . T n ) that correspond to the point-of-times at which logical copies  10   a  . . .  10   n  were established in the source storage  14   a . A data group  12   a ,  12   b  comprises any user specified group of data blocks in the storage  14   a ,  14   b  that has been selected to be included in a backup set managed by the backup program  8 . The data group  12   a ,  12   b  may comprise a volume, selected file sets or other suitable grouping of data in storage. The source  2   a  and target  2   b  computers may communicate over a network  24 , which may comprise a Local Area Network (LAN), Storage Area Network (SAN), Wide Area Network (WAN), wireless network, etc. Alternatively, the computers  2   a  and  2   b  may connect using different connection technologies, such as a Peer-to-Peer connection, parallel cables, etc. 
   The storages  14   a ,  14   b  may be implemented in storage devices known in the art, such as one hard disk drive, a plurality of interconnected hard disk drives configured as Direct Access Storage Device (DASD), Redundant Array of Independent Disks (RAID), Just a Bunch of Disks (JBOD), etc., a tape device, an optical disk device, a non-volatile electronic memory device (e.g., Flash Disk), etc. 
   In one embodiment, the target data group  12   b  replicates the backed-up source data group  12   a , such that the directories and files in the target data group  12   b  are in the native file format of the corresponding source directories and files in the data group  12   a . In such embodiments, the target data group  12   b  files may be directly accessed by the applications that created the files. 
   In one embodiment, the logical copy programs  16   a  and  16   b  on the source  2   a  and target  2   b  computers, respectively, may be from different vendors and use different logical copy (e.g., Snapshot) technologies to establish the logical copies. In one embodiment, the logical copy programs  16   a ,  16   b  may use the same general logical copy technology, e.g., Snapshot, but have implementations of this common technology from different vendors providing different and perhaps incompatible implementations of the logical copy technology. In an additional embodiment, the different logical copy programs  16   a  and  16   b  may use entirely different logical copy technologies. 
   In one embodiment, the backup program  8  is a separate program from the logical copy program  16   a  and may invoke the logical copy program  16   a  via application programming interface (API) calls. In an alternative embodiment, the backup program  8  and logical copy program  16   a  may be integrated in a single copy program. In yet a still further embodiment, to invoke the logical copy program  16   a , the backup program  8  may alert via the user interface  18  the user or administrator to invoke the logical copy programs  16   a  and  16   b  to create logical copies  10   a  . . .  10   n . To invoke the target logical copy program  16   b  to create a logical copy  11   a  . . .  11   n , the backup program  8  may transmit commands over the network  24  to the target logical copy program  16   b  or provide an alert to notify the user/administrator to invoke the target logical copy program  16  to create the target logical copies  11   a  . . .  1   n . In this way, the backup program  8  generates a signal to cause the establishment of a logical copy  11   a  . . .  11   n  or  12   a  . . .  12   n  of the data groups  12   a  or  12   b  at the source  14  or target  14   b  storage. This signal may generate an alert to notify a user/administrator to invoke the logical copy program  16   a  or  16   b  to create the logical copy  11   a  . . .  11   n  or  12   a  . . .  12   n  or comprise a signal that is transmitted to the logical copy program  16   a  or  16   b  to generate the logical copy. 
     FIG. 2  illustrates an alternative embodiment of a computing environment. In the embodiment of  FIG. 2 , the computer  2   c  includes many of the same components found in the source computer  2   a , including a processor  4   c , a memory  6   c , a logical copy program  8   c , an attached target storage  52   b  having a data group  54   b  providing a mirror copy of a data group  54   a  in an attached source storage  52   a  at an initial time (T 0 ). In the embodiment of  FIG. 2 , the computer  2   c  communicates and facilitates data transfer between the source storage  52   a  and target storage  52   b  over a common data communication bus  56 . The computer  2   c  uses a single logical copy program  8   c  to create logical copies  58   a  . . .  58   n  and  60   a  . . .  60   n  on the source  52   a  and target  52   b  storages, respectively. The backup program  8   c  further creates change lists  64   a  . . .  64   n  providing updates made between points-in-time between two consecutive logical copies. In the embodiment of  FIG. 2  a single logical copy program  16   c  is used to create logical copies  58   a  . . .  58   n  and  60   a  . . .  60   n  on both the source  52   a  and target  52   b  storages. 
     FIG. 3  illustrates operations performed by the backup program  8  when invoked to provide a backup copy of a data group  12   a . In response to being invoked (at block  100 ), the backup program  8  copies (at block  102 ) at T 0 , an initial time, the data group  12   a  in the source storage  14   a  to a data group  12   b  in the target storage  14   b  to provide an initial mirror copy in the target storage  14   b  consistent with the source storage  14   a  as of T 0 . The backup program  8  invokes (at block  104 ) the logical copy program  16   a  to establish a logical copy  10   a  of the data group  12   a  in the source storage at a point-in-time of T 0 . When establishing a logical copy  10   a  . . .  10   n ,  11   a . . . .  11   n , the logical copy programs  16   a ,  16   b  may create bitmaps or some other data structures representing the blocks in the data group subject to the logical copy relationship to provide metadata for the blocks in the data group. Such metadata may indicate whether a block has been updated since the logical copy was created. The backup program  8  may invoke the logical copy program  16   a  via an API or be integrated in a backup program having code implementing the functionality of both the backup program  8  and logical copy program  16   a . Alternatively, the backup program  8  may alert a user of the source computer  2   a  to invoke the logical copy program  16   a  to create the initial logical copy  10   a . After the logical copy  10   a  is established, the backup program  8  monitors updates to the data group  12   a  in the source storage  14   a  and indicates (at block  106 ) an update and the blocks updated in a change list (T 0 )  22   a  associated with the logical copy  10   a , such that the change list (T 0 )  22   a  indicates changes subsequent to the initial point-in-time (T 0 ) and prior to the time of a next logical copy, e.g., T 1 . 
     FIG. 4  illustrates operations implemented in the logical copy programs  16   a ,  16   b  to manage (at block  120 ) updates to the data region. In response to receiving (at block  122 ) an update to one or more blocks in the data group  12   a ,  12   b , a determination is made (at block  124 ) as to whether the data being updated has been updated since the logical copy (T 0 . . . T n ) was established. As discussed, the logical copy programs  16   a ,  16   b  maintain bitmaps and metadata indicating blocks subject to the logical copy relationship that have been updated since the logical copy was created. If(at block  124 ) the blocks were not previously updated since the logical copy  10   a  . . .  10   n ,  11   a  . . .  11   n  in was established, then the data to update is copied (at block  126 ) to the logical copy  10   a  . . .  10   n ,  11   a  . . .  11   n . In this way the logical copy maintains data blocks as of the point-in-time (T 0  . . . T n ) that were changed following the creation of the logical copy previous logical copy. From block  126  or the yes branch of block  124 , the received update is applied (at block  128 ) to the data group  12   a ,  12   b.    
     FIG. 5  illustrates an embodiment of operations performed by the backup program  8  to create a new backup set or new point-in-time copy (T 1  . . . T n ) following the initial point-in-time copy (T 0 ). Upon initiating (at block  150 ) an operation to create a new point-in-time copy at T i , which may be created according to a user selected schedule of backups, the backup program  8  invokes (at block  152 ) the logical copy program  16   a  to establish logical copy (T i ) of the data group  12   a  in the source storage at the current point-in-time (T i ). The backup program  8  further transfers (at block  154 ) the updates at the source storage  12   a  indicated in the change list  22   a  . . .  22   n  as of T i  to the target storage  14   b  to apply to the data group  12   b  at the target storage  14   b . The change list  22   a  . . .  22   n  is associated with a logical copy  10   a  . . .  10   n , and change list (T i ) provides updates made to the data storage since the point-in-time (T i ) of the associated logical copy  10   a ,  10   b  . . .  10   n  and before the subsequent logical copy (T i+1 ) is created. Thus, the change list  22   a  . . .  22   n  provides information on the updates to the data group  12   a  between two point-in-time logical copies. The logical copy program  16   b  at the target computer  14   a  is invoked (at block  156 ) to establish logical copy  11   i  for the data group  12   b  in the target storage at the point-in-time T i  after the transferred updates in the are applied. The logical copy program  16   a  at the target computer  14   b  may be invoked by the backup program  8  issuing an API over the network  24  to control the target logical copy program  16   b  or may be invoked by a user or administrator prompted by the backup program  8  to create a point-in-time copy on the target storage  14   b . In this way, the backup program  8  sends a signal to cause the establishment of a logical copy  11   a  . . .  11   n  of the data group  12   b  at the target storage  14   b . This signal may generate an alert to notify a user/administrator to invoke the logical copy program  16   b  to create the logical copy  11   a  . . .  11   n  or a signal that is communicated over the network  24  to the logical copy program  16   b  to generate the logical copy. 
     FIG. 6  illustrates an embodiment of operations performed to recover the data group as of a point-in-time T i . Upon the backup program  8  receiving (at block  170 ) a request to recover the data group as of a point in time Ti, the backup program  8  determines (at block  172 ) whether the data group as of T i  can be recovered from the logical copies  10   a  . . .  10   n  at the source storage  14   a . If so, then the data group as of T i  is recovered (at block  174 ) from the logical copies  10   a  . . .  10 ( i ) at the source storage  14   a . In certain embodiments, the backup program  8  may call an API to invoke the logical copy program  16   a  to restore the data group as of the point-in-time (T i ) or notify the user/administrator to use the logical copy program  16   a  to restore the data group as of the point-in-time. If (at block  172 ) the data group as of T i  cannot be recovered form the source storage  14   a , then the data group as of T i  is recovered (at block  176 ) from the logical copies  11   a  . . .  11 ( i ) at the target storage  14   b  by calls made from the backup program  8  or from a user invoking the copy program  16   b  in response to notifications or alerts from the backup program  8 . 
   In Snapshot embodiments where the logical copies  10   a  . . .  10   n ,  11   a  . . .  11   n  comprise Snapshot copies, the logical copy programs  16   a ,  16   b  may use the current data group  12   a ,  12   b  and the logical copies  10   a  . . .  10   i ,  11   a  . . .  11   i  for logical copies from the initial logical copy to the logical copy as of T i  to recover the data group as of the point-in-time T i  in a manner known in the Snapshot art. For instance, the current active data group  12   a ,  12   b  may be adjusted by processing the logical copies sequentially to obtain the data group as of the point-in-time T i . 
   In the embodiment of  FIG. 2 , the backup program  8   c  may operate as the backup program  8  described with respect to  FIG. 1  except that the backup program  8  or user invokes the same logical copy program  16   c  to create logical copies  58   a  . . .  58   n ,  60   a  . . .  60   n  in the source  52   a  and target  52   b  storages and use the logical copies  58   a  . . .  58   n ,  60   a  . . .  60   n  to recover the data group as of different points-in-time. 
   The described embodiments provide techniques to maintain logical copies of a backup data group at a source and target storages to allow recovery of the data group as of different point-in-times for which the logical copies are maintained. Further, with the described embodiments, only changed data is copied over to the target storage when creating a new backup data group as of a different point-in-time. Still further, with described embodiments, the source and target systems may use different logical copy programs implementing the same logical copy feature, e.g., Snapshot, with non-compatible programs from different vendors or using different logical copy technologies. 
   Additional Embodiment Details 
   The described operations may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, 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 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., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.). Code in the computer readable medium is accessed and executed by a processor. The computer readable 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 to this configuration without departing from the scope of the present invention, and that the article of manufacture may comprise any information bearing medium known in the art. 
   In described embodiments, the Snapshot copy technology was used to create the logical copies. In an alternative embodiment, other logical copy technologies may be used to establish a copy of data without having to create an entire physical copy of the data. 
   The terms “an embodiment”, “embodiment”, “embodiments”, “the embodiment”, “the embodiments”, “one or more embodiments”, “some embodiments”, and “one embodiment” mean “one or more (but not all) embodiments of the present invention(s)” unless expressly specified otherwise. 
   The terms “including”, “comprising”, “having” and variations thereof mean “including but not limited to”, unless expressly specified otherwise. 
   The enumerated listing of items does not imply that any or all of the items are mutually exclusive, unless expressly specified otherwise. 
   The terms “a”, “an” and “the” mean “one or more”, unless expressly specified otherwise. 
   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. 
   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 of the present invention. 
   Further, although process steps, method steps, algorithms or the like may be described in a sequential order, such processes, methods and algorithms may be configured to work in alternate orders. In other words, any sequence or order of steps that may be described does not necessarily indicate a requirement that the steps be performed in that order. The steps of processes described herein may be performed in any order practical. Further, some steps may be performed simultaneously. 
   When a single device or article is described herein, it will be readily apparent that more than one device/article (whether or not they cooperate) may be used in place of a single device/article. Similarly, where more than one device or article is described herein (whether or not they cooperate), it will be readily apparent that a single device/article may be used in place of the more than one device or article or a different number of devices/articles may be used instead of the shown number of devices or programs. The functionality and/or the features of a device may be alternatively embodied by one or more other devices which are not explicitly described as having such functionality/features. Thus, other embodiments of the present invention need not include the device itself. 
   The illustrated operations of  FIGS. 3 ,  4 ,  5 , and  6  show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, steps may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units. 
   The foregoing description of various embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.