Abstract:
Provided are a method, system, and program for generating and indicating incremental backup copies from virtual copies of a data set. A virtual copy operation is initiated to create a virtual copy of a data set, wherein the virtual copy represents the data set at a point-in-time copy, and wherein the virtual copy is completed without transferring the data set to a backup location. An incremental backup operation is initiated with respect to an identified virtual copy, wherein the incremental backup operation copies changes to the data set that occur since a most recent creation of an incremental backup set.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention relates to a method, system, and program for generating and indicating incremental backup copies from virtual copies of a data set 
         [0003]    2. Description of the Related Art 
         [0004]    In many systems, data on one storage system may be copied to the same or another storage system so that access to data volumes can be provided from two different storage systems. A point-in-time copy involves physically copying all the data from source volumes to target volumes so that the target volume has a copy of the data as of a point-in-time. A point-in-time copy can also be made by logically making a copy of the data and then only copying data over when necessary, in effect deferring the physical copying. This virtual copy operation is performed to minimize the time during which the target and source volumes are inaccessible. 
         [0005]    With a virtual copy operation, the copy services performing the virtual copy create metadata and data structures providing a logical representation of source data as a point in time. The virtual copy is completed almost instantly, in the time taken to create the metadata and data structures and is completed without any physical copying of the data. If the source data subject to a virtual copy is updated following the creation of the virtual copy, then the original data in the source data is copied to a storage pool maintained for the virtual copy before the data is updated. In this way, the source data as of the point-in-time of the virtual copy may be reconstructed from the unchanged source data and the original data that was overwritten in the source data maintained in the virtual copy storage pool. Examples of a virtual copy operation include the International Business Machines Corporation&#39;s® Snapshot copy and FlashCopy® 0  operations. (FlashCopy and International Business Machines are registered trademarks of International Business Machines Corp. in the United States and other countries). 
         [0006]    A user or application may also use a database or other program to create incremental backups of source data. An incremental backup is performed with respect to a base data set, comprising a full copy of a data set at an initial point-in-time, and includes data that has changed since the full copy of the data set or a most recently created incremental backup set. In this way, the incremental backup set includes only data that has changed since the last created full or incremental backup set. 
         [0007]    There is a need in the art to utilize both virtual copy and incremental backup operations in a backup environment. 
       SUMMARY 
       [0008]    Provided are a method, system, and program for generating and indicating incremental backup copies from virtual copies of a data set. A virtual copy operation is initiated to create a virtual copy of a data set, wherein the virtual copy represents the data set at a point-in-time copy, and wherein the virtual copy is completed without transferring the data set to a backup location. An incremental backup operation is initiated with respect to an identified virtual copy, wherein the incremental backup operation copies changes to the data set that occur since a most recent creation of an incremental backup set. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]      FIG. 1  illustrates an embodiment of a backup computing environment. 
           [0010]      FIG. 2  illustrates an embodiment of virtual copy information known in the prior art. 
           [0011]      FIG. 3  illustrates an embodiment of incremental backup information with respect to a source virtual copy. 
           [0012]      FIG. 4  illustrates an embodiment of operations by a production server to create a virtual copy. 
           [0013]      FIG. 5  illustrates an embodiment of operations by a production server to create an incremental backup. 
           [0014]      FIG. 6  illustrates an embodiment of operations by a backup server to read a shared repository and generate an incremental backup set. 
           [0015]      FIG. 7  illustrates an embodiment of operations by a production server to read a shared repository. 
           [0016]      FIG. 8  illustrates an embodiment of operations to restore a data set. 
       
    
    
     DETAILED DESCRIPTION 
       [0017]      FIG. 1  illustrates an embodiment of a network backup computing environment. A production server  2  manages access to data sets  4  in storage  6 . The data sets  4  may comprise user data, such as database data, files, application data, etc. The production server  2  includes a production database  8  that maintains information on backups of the data sets  4  maintained in a backup storage  10  and copy services  12  to backup and copy the data sets  4  managed by the production server  2 . The copy services  12  may create virtual copies  22  of the data sets  4  and incremental backups  24 . A virtual copy  22  comprises a point-in-time copy of a data set that is immediately created without copying the underlying data. 
         [0018]    One or more backup servers  14  each include a backup database  16  to maintain information on backed-up data sets  4  and backup copy services  18  to perform backup operations. The backup database  16  (or the backup database  16  and the incremental backup repository  30 ) may comprise a virtual copy of the production database  8  (or the production database  8  and the incremental backup repository  32 ). The production copy services  12  and backup copy services  18  may communicate backup related requests and status via a shared repository  20 . In one embodiment, a virtual copy  22  of the data set  4  is associated with a backup server  14 . In such case, the data in the backup server  14  and the virtual copy  22  comprise the data in the production server  2  and data set  4  at the time the virtual copy was created. In this way, the backup database  16  provides a “historic version” of the production database  8 . 
         [0019]    The backup database  16  may further be used to create an incremental backup  24  of the data stored within the virtual copy  22 . The backup database  16  stores information about an incremental backup created from the virtual copy  22  in a backup incremental backup repository  30 . The backup information in the backup incremental backup repository  30  may be stored in the virtual copy  22  of the data sets  4  and thus alter the content of the virtual copy  22  of the data sets  4 . The backup database  16  may update the shared repository  20  with information indicating that a successful incremental backup  24  was created from a virtual copy  22 . The production database  8  extracts this information from the shared repository  20  and updates an incremental backup repository  32  with the appropriate information on the incremental backup  24  created by the backup server  14 . The information on the incremental backup  24  that is stored in the incremental backup repository  32  may be created as if the incremental backup  24  was taken at the time when the virtual copy  22  was created. The backup information in the production incremental backup repository  32  may be stored in the data sets  4  from which the virtual copy  22  is created. 
         [0020]    The production server  2  copy services  12  creates virtual copies  22  maintained in the backup storage  10  of one of the data sets  4  at different points-in-time. After a virtual copy, e.g., Snapshot, FlashCopy®, of a data set  4  is created, original data about to be overwritten in the data set  4  following the point-in-time of the virtual copy is saved in a storage pool, which may be in the backup storage  10 . The storage pool maintains the set-aside original data in the data set as of the point-in-time of the virtual copy that is about to be overwritten following the point-in-time. 
         [0021]    The backup database  16  may create incremental backups  24  from one virtual copy  22 , including a full-backup  26  of the data set  4  as of the point-in-time of the virtual copy  22  and incremental backup sets  28 , where each incremental backup set  28  includes data in the data set  4  that has changed since the time of a last incremental backup or the full backup  26 . The full backup  26  may be considered as an incremental backup whose point-in-time is the point-in-time of the virtual copy. 
         [0022]    A network  30  enables the production  2  and backup servers  14  to communicate with the data storage  6  and backup storage  10 . The shared repository  20  may comprise storage included in the production server  2  or backup servers  14  or some other storage device. 
         [0023]    The production  2  and backup  14  servers may comprise suitable server class machines or other computational devices. The network  30  may comprise a Local Area Network (LAN), Storage Area Network (SAN), Wide Area Network (WAN), wireless network, direct connection etc. The storages  6  and  10  may be implemented with 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), a tape library, etc. In one embodiment, the storage  6  for the data sets  4  may comprise a relatively high speed storage device, such as hard disk drives. The backup storage  10  may comprise a storage device intended to archive data, such as a tape storage medium, disk drives, etc. In one embodiment, the data sets  4  are maintained in a storage media  6  separate from the storage media  10  storing the virtual copies  22  and incremental backups for virtual copies  24 . In a further embodiment, the virtual copies  22  may be stored in a separate storage medium from the storage medium that stores the incremental backup sets  24 . For instance, the incremental backups  24  may be stored in a tape storage media and the virtual copies  22  may be stored in a disk drive storage system. In a yet further embodiment, the storage  6 , virtual copy  22 , and incremental backups  24  may each be implemented on a separate storage device. In a yet still further embodiment, the storage  6  and virtual copy  22  may be implemented one storage device and the incremental backups  14  may be stored on another storage device. 
         [0024]      FIG. 2  illustrates an embodiment of a virtual copy data structure  50  known in the prior art having information on one virtual copy  22   a ,  22   b  . . .  22   n , including: a unique identifier  52  of the virtual copy; a source data set  54  that is the subject of the virtual copy relationship; a change bitmap  56  or other data structure indicating tracks or other data units, e.g., blocks, in the source data set  54  that have been changed since the point-in-time at which the virtual copy was created; and the location  58  of overwritten data comprising the original data from the source data set  54  that was updated after the point-in-time of the virtual copy. As mentioned, for an active virtual copy, if there is an attempt to overwrite original data in the data set  4  at the point-in-time of the virtual copy, such original data is copied to the location  58  of overwritten data for the virtual copy so that the virtual copy maintains the data as of the point-in-time. 
         [0025]      FIG. 3  illustrates an embodiment of incremental backup information  70  maintained in the production  8  and backup  16  databases, including an incremental backup identifier (ID)  72  identifying an incremental backup for the production database  8 ; a backup set  74  indicating a full backup  26  or an incremental backup set  28 , which can be created from a data set  4  directly or from a virtual copy  22 ; and an incremental backup point-in-time  76  indicating the time at which the incremental backup was created, such that the incremental backup set includes changes to the data set  4  represented by the source virtual copy  74  between the point-in-time of the most recent previous incremental backup and the incremental backup point-in-time  76 . In one embodiment the incremental backup point-in-time may comprise a LSRN (log record sequence number) which uniquely identifies a point-in-time of the data set  4 . 
         [0026]      FIG. 4  illustrates an embodiment of operations performed at the production server  2  to create a virtual copy  22  of a data set  4  in the storage  6  managed by the production server  2 . This virtual copy  22  may be associated with the backup database  16  to use for creating incremental backups for the virtual copy  24 . Upon receiving (at block  100 ) a request to create a virtual copy  22  of a data set  4 , which may originate from a user or application program, the production copy services  12  are invoked (at block  102 ) to create virtual copy  22  of data set  4  as of a point-in-time. The production database  8  may be updated (at block  104 ) to indicate the virtual copy  22 . The copy services  12  (or production server  2 ) may further write (at block  104 ) information indicating the virtual copy  22 , such as the virtual copy information  50  ( FIG. 2 ), to the shared repository  20 . 
         [0027]      FIG. 5  illustrates an embodiment of operations performed at the production server  2  to create an incremental backup  26 ,  28  for a virtual copy  22 . Upon the copy services  12  (or production database  8 ) receiving (at block  120 ) a request to create an incremental backup for a virtual copy  22 , which may originate from a user or application program, the copy services  12  (or production database  8 ) writes (at block  122 ) a request/command to create an incremental backup to the shared repository  20 . The incremental backup command identifies a virtual copy  22  representing a source data set  4  as of a point-in-time, which is the base set for the incremental backups, and a backup server  14  to process the request. 
         [0028]      FIG. 6  illustrates an embodiment of operations performed by the backup server  14  copy services  18  to read the shared repository  20 . Upon reading (at block  150 ) the shared repository  20 , if (at block  156 ) there is a request to create an incremental backup specifying the backup server and a virtual copy  22 . If not, control ends. Otherwise, if the incremental backup request/command identifies the backup server  14  reading the shared repository  20 , then the copy services  18  calls (at block  158 ) the backup database  16  to perform the incremental backup copy operation. In an alternative embodiment, the copy servers  18  may perform the incremental backup operation, using the backup database  16  to maintain information on incremental backups for virtual copies  24 . 
         [0029]    The backup database  16 , in response to the call, determines (at block  160 ) whether the backup database  16  identifies an incremental backup for the specified virtual copy, i.e., incremental backup  70  information ( FIG. 3 ) in the backup database  16  identifying the specified virtual copy as the source  74 . If (at block  160 ) there is an incremental backup  70  for the specified virtual copy, then the backup database  16  determines (at block  162 ) a point-in-time of a last incremental backup for the specified virtual copy. The last incremental backup may comprise a full backup  26  of the specified virtual copy  22  or an incremental backup set  28  having changes between different points-in-time since the point-in-time of the specified virtual copy  22 . The backup database  16  creates (at block  164 ) an incremental backup set  28  from the determined point-in-time (of the last formed incremental backup set) and a current time. The incremental backup may be formed by copying data in the data set  4  in storage  6  that was modified between the determined point-in-time and current time to an incremental backup set  28  in the backup storage  10 . 
         [0030]    If (at block  160 ) there are no incremental backups for the specified virtual copy indicated in the backup database  16 , then the backup database  16  creates (at block  166 ) a first incremental backup comprising a full backup  26  of the data set represented by the virtual copy  22 . The incremental backup  26  or  28  is copied (at block  168 ) to the backup storage  10 . The backup database  16  may update the backup incremental backup repository  30  (at block  170 ) to indicate the incremental backup set. 
         [0031]    The copy services  18  may further write (at block  172 ) information indicating that the requested incremental backup completed to the shared repository  20 . 
         [0032]      FIG. 7  illustrates an embodiment of operations performed by the production server copy services  12  to read the shared repository  20 . In response to reading (at block  200 ) the shared repository  20 , the copy services  12  determines (at block  202 ) whether there is indication of completion of an incremental backup request. If not, control ends. Otherwise, if there is such indication, then the copy services  12  updates (at block  204 ) the production incremental backup repository  32  to indicate that the incremental backup completed. 
         [0033]      FIG. 8  illustrates an embodiment of operations performed at the production  2  server by a user or application program to restore a data set  4  to the storage  6 . A user (or application) may initiate the restore (at block  220 ) to restore using the virtual copies  22  or the incremental backups for a virtual copy  24 . If (at block  222 ) the restore involves the incremental backups, then the production  8  database determines (at block  224 ) all incremental backup data sets. The user may specify the incremental backup sets to select by specifying a virtual copy, and then the production  6  database determines the incremental backup data sets  24  for the selected virtual copy  22 . Alternatively, the user (or application) may determine the most recent incremental backups  24  and then select one group of incremental backups  24  providing incremental backups to a point-in-time to which the user wants to restore the data set  4 . The production database  8  (or other component) may then form (at block  226 ) the full data set  5  from all determined incremental backup sets. If (at block  222 ) the restore involves the use of a selected virtual copy  22 , then the production  12  or backup  18  copy services restores (at block  228 ) the data set from the virtual copy to the data set  4  as of the point-in-time of the selected virtual copy  22 . 
         [0034]    Described embodiments provide techniques for a production database  8  to maintain information on incremental backup operations completed by the backup server  16 . With the described embodiments, the production server  2  may create backups according to two different backup methods and also perform restores for both methods, virtual copy and incremental backup. The backup server  14  may create an incremental backup  14  from a virtual copy  22  after the virtual copy  22  has been created. 
         [0035]    Further, with the described embodiments, the incremental backup operation is offloaded from the production server  2  to the backup server  14 . If the backup database  16  does not complete the incremental backup set operation, then the backup database  16  may retry the incremental backup without involving the production server  2 . If the production database  8  maintains information on successfully created incremental backup sets  28 , then the production database  8  will have information to allow a user or application to request an incremental backup as of a point-in-time for which an incremental backup set was not previously created by another backup database  16  because the production database  8  maintains information on previously created incremental backups for virtual copies  24 . 
       Additional Embodiment Details 
       [0036]    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 described operations may be implemented as code maintained in a “computer readable medium”, where a processor may read and execute the code from the computer readable medium. A computer readable medium may comprise media such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, DVDs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash Memory, firmware, programmable logic, etc.), etc. The code implementing the described operations may further be implemented in hardware logic in a hardware device (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.). Still further, the code implementing the described operations may be implemented in “transmission signals”, where transmission signals may propagate through space or through a transmission media, such as an optical fiber, copper wire, etc. The transmission signals in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The transmission signals 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. An “article of manufacture” comprises computer readable medium, hardware logic, and/or transmission signals in which code may be implemented. A device in which the code implementing the described embodiments of operations is encoded may comprise a computer readable medium or hardware logic. 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 suitable information bearing medium known in the art. 
         [0037]    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. 
         [0038]    The terms “including”, “comprising”, “having” and variations thereof mean “including but not limited to”, unless expressly specified otherwise. 
         [0039]    The enumerated listing of items does not imply that any or all of the items are mutually exclusive, unless expressly specified otherwise. 
         [0040]    The terms “a”, “an” and “the” mean “one or more”, unless expressly specified otherwise. 
         [0041]    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. 
         [0042]    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. 
         [0043]    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. 
         [0044]    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. 
         [0045]    The illustrated operations of  FIGS. 4 ,  5 ,  6 ,  7 , and  8  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. 
         [0046]    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.