WO2011123471A1 - Stubbing systems and methods in a data replication environment - Google Patents

Stubbing systems and methods in a data replication environment Download PDF

Info

Publication number
WO2011123471A1
WO2011123471A1 PCT/US2011/030396 US2011030396W WO2011123471A1 WO 2011123471 A1 WO2011123471 A1 WO 2011123471A1 US 2011030396 W US2011030396 W US 2011030396W WO 2011123471 A1 WO2011123471 A1 WO 2011123471A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
replication
stub
storage device
stub files
Prior art date
Application number
PCT/US2011/030396
Other languages
French (fr)
Inventor
Anand Prahlad
Vijay H. Agrawal
Original Assignee
Commvault Systems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/749,953 external-priority patent/US8352422B2/en
Priority claimed from US12/749,949 external-priority patent/US8725698B2/en
Priority claimed from US12/750,067 external-priority patent/US8504515B2/en
Application filed by Commvault Systems, Inc. filed Critical Commvault Systems, Inc.
Publication of WO2011123471A1 publication Critical patent/WO2011123471A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments

Definitions

  • the present disclosure relates to performing copy and/or data management operations in a computer network and, in particular, to systems and methods for managing stub files in a data replication system.
  • CDR continuous data replication
  • stubbing systems and methods are provided for destination storage devices in a CDR system. For instance, data on a destination storage device can be selectively moved to secondary storage based on archive, de-duplication, or other storage policies, to free up space on the destination system.
  • certain embodiments of the invention involve the de- duplication, or single-instancing, of replication data.
  • de-duplicated data blocks on the replication storage device can be replaced with substantially smaller stub files that serve as pointers to, or placeholders for, the actual data.
  • a data migration module of the replication system periodically examines the replication data to identify common blocks that have not been accessed for a period of time and that can be replaced by smaller stub files, while a copy of the actual data is archived to secondary storage, such as a less-expensive medium or the like.
  • certain embodiments of the invention use priority tags.
  • the tagged stub files can be used to recall the archived data prior to performing the requested operation so that an accurate replica of the source data can be compiled.
  • Certain embodiments of the invention include a method for performing data management operations on replicated data of a destination storage device.
  • the method includes processing, with one or more routines, at least one log file having a plurality of log entries indicative of operations generated by a computer application executing on a source system, the operations being directed to data on a source storage device.
  • the method further includes replaying, with the one or more routines, the operations on a destination storage device to modify replication data on the destination storage device, wherein said replaying further comprises: (i) identifying a plurality of stub files within the replication data, wherein the plurality of stub files comprises one or more first stub files each comprising a predetermined tag value, and wherein the plurality of stub files further comprises one or more second stub files that do not comprise the predetermined tag value; (ii) for each of the one or more first stub files, recalling from a secondary storage one or more data objects represented by each of the one or more first stub files and replacing each of the one or more first stub files with the corresponding data object prior to modifying the replication data; and (iii) modifying the replication data on the destination storage device to match the data on the source storage device.
  • Certain embodiments of the invention further include a destination system for performing data replication in a computer network.
  • the destination system comprises a destination storage device, at least one replication log file, a replication module and a migration module.
  • the destination storage device stores replication data having a plurality of stub files, the plurality of stub files comprising one or more first stub files each having at least one predetermined tag value and one or more second stub files that do not have the at least one predetermined tag value.
  • the at least one replication log file comprises a plurality of log entries indicative of data operations generated by a computer application for execution on a source storage device.
  • a replication module traverses the plurality of log entries in the replication log file(s) and copies the log entries to execute the data operations on replication data of the destination storage device.
  • the migration module restores copied data from a secondary storage device to the destination storage device based on the one or more first stub files.
  • the replication module is further configured to identify the first stub file(s) and instruct the migration module to replace the first stub file(s) with the copied data from the secondary storage device prior to executing the data operations on the replication data.
  • a destination system for performing data replication in a computer network.
  • the destination system comprises means for storing replication data having a plurality of stub files, the plurality of stub files comprising one or more first stub files each comprising at least one predetermined tag value and one or more second stub files that do not comprise the at least one predetermined tag value.
  • the system further includes means for receiving a plurality of log entries indicative of data operations generated by a computer application for execution on a source storage device, and means for traversing the plurality of log entries in the receiving means and for copying the log entries to execute the data operations on replication data of the storing means.
  • the system further includes means for restoring copied data from a secondary storage device to the storing means based on the first stub file(s). Furthermore, the traversing means can identify the first stub file(s) and instruct the restoring means to replace the first stub file(s) with the copied data from the secondary storage device prior to executing the data operations on the replication data.
  • a method for performing data management operations in a computer network.
  • the method includes monitoring operations associated with a source computing device, the operations operative to write data to a source storage device.
  • the method further includes copying the data to a destination storage device based at least in part on the operations, the data comprising at least one first stub file, and scanning the data of the destination storage device to identify a common data object repeated between multiple portions of the data on the destination storage device.
  • the method also includes archiving a copy of the common data object on a second storage device and determining a last access time of each of the multiple data portions of the destination storage device having the common data object.
  • the method For each of the multiple data portions having a last access time at or before the time of the archiving of the copy of the common data object, the method includes replacing the common data object of the particular data portion with a second stub file, wherein the second stub file comprises a tag value not possessed by any of the first stub file(s), and wherein the second stub file comprises information indicative of a location of the copy of the common data object.
  • a continuous data replication system comprising a first storage device, at least one monitoring module, a replication module and a migration module.
  • the first storage device stores data write operations from at least one computer application at a first location, the first location comprising at least one first stub file.
  • the at least one module monitors the data write operations and generates first log entries based on the data write operations.
  • the second storage device comprises second log entries, wherein the second log entries comprise copies of at least a portion of the first log entries.
  • the replication module is in communication with the second storage device and is configured to process the second log entries to modify replicated data stored in a second location to substantially mirror the data of the first location, the replicated data comprising a copy of the first stub file(s).
  • the migration module is configured to archive select data objects of the replicated data to a third location and to replace each of the select data objects of the replicated data with a second stub file, wherein each of the second stub files comprises an identifier not possessed by the first stub file(s) and wherein each of the second stub files comprises information indicative of a location of the archived copy of the data object at the third location.
  • a continuous data replication system comprises means for storing data write operations from at least one computer application at a first location, the first location comprising at least one first stub file.
  • the replication system further includes means for monitoring the data write operations and for generating first log entries based on the data write operations and also means for receiving second log entries, wherein the second log entries comprise copies of at least a portion of the first log entries.
  • the replication system further includes means for processing the second log entries to modify replicated data stored in a second location to substantially mirror the data of the first location, the replicated data comprising a copy of the first stub file(s), and means for archiving select data objects of the replicated data to a third location and for replacing each of the select data objects of the replicated data with a second stub file, wherein each of the second stub files comprises an identifier not possessed by the first stub file(s) and wherein each of the second stub files comprises information indicative of a location of the archived copy of the data object at the third location.
  • a method for restoring data in a continuous data replication system.
  • the method includes receiving, with a first computing device, a request to restore data of one or more snapshots of replication data of a destination storage device, the replication data having first stub files replicated from a source system and second stub files indicative of select data blocks of the replication data copied to a secondary storage device from the destination storage device.
  • the method further includes mounting the snapshot(s); identifying the second stub files captured by the snapshot(s); and recalling to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files.
  • the method includes, following said recalling, restoring the replication data from the snapshot(s), the restored data comprising each of the first stub files and comprising none of the second stub files.
  • a system for restoring data in a continuous data replication environment.
  • the system includes a first storage device comprising data replicated from a source storage system, the replicated data comprising first stub files replicated from the source storage system and second stub files indicative of select data blocks of the replicated data copied to a secondary storage device.
  • the system also includes a restore module configured to mount a snapshot of the replicated data, the snapshot representing a point-in-time image of the replicated data, wherein the restore module is further configured to identify the second stub files captured by the snapshot(s).
  • the system further includes a migration module in communication with the restore module, the migration module being configured to recall to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files.
  • the restore module is configured to restore the replication data represented by the snapshot, the restored data comprising each of the first stub files and comprising none of the second stub files.
  • a system for restoring data in a continuous data replication environment.
  • the system comprises means for storing data replicated from a source storage system, the replicated data comprising first stub files replicated from the source storage system and second stub files indicative of select data blocks of the replicated data copied to a secondary storage device.
  • the system also comprises means for mounting a snapshot of the replicated data, the snapshot representing a point-in-time image of the replicated data, wherein the mounting means further identifies the second stub files captured by the one or more snapshots.
  • the system comprises means for recalling to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files, and wherein the mounting means further restores the replication data represented by the snapshot, the restored data comprising each of the first stub files and comprising none of the second stub files.
  • FIGURE 1 illustrates a block diagram of a data replication system, according to certain embodiments of the invention.
  • FIGURE 2 illustrates a block diagram of an exemplary embodiment of a destination system of the data replication system of FIGURE 1.
  • FIGURE 3 illustrates an exemplary de-duplication stub file usable with the destination system of FIGURE 2.
  • FIGURES 4-6 illustrate flowcharts of an exemplary embodiment of a de-duplication method for destination data of a CDR system, such as the data management system of FIGURE 1.
  • FIGURE 4 illustrates a flowchart of an exemplary embodiment of a scan process of the de-duplication method
  • FIGURE 5 illustrates a flowchart of an exemplary embodiment of an archive process of the de-duplication method
  • FIGURE 6 illustrates a flowchart of an exemplary embodiment of a stubbing process of the de-duplication method.
  • FIGURE 7 illustrates a flowchart of an exemplary embodiment of a synchronization process usable by the data replication system of FIGURE 1.
  • FIGURE 8 illustrates a flowchart of an exemplary embodiment of a restore process usable by the data replication system of FIGURE 1.
  • systems and methods are provided for intelligent and efficient data management. For instance, certain embodiments of the invention provide for improved CDR systems that reduce the amount of space required for replication data on a destination system. Such systems can utilize stub files or the like to replace migrated, de-duplicated or otherwise copied data that has been moved from the destination system to secondary storage. Disclosed systems and methods further provide access to the replication data in a manner that is transparent to the user and/or without substantially impacting the CDR, or like replication, process.
  • embodiments of the invention are directed to the de-duplication, or single-instancing, of replication data.
  • de- duplicated data blocks on the destination storage device can be replaced with stub files that serve as pointers to the storage locations of the actual data.
  • stub files can be used to reference the same common data block that has been de-duplicated from the destination system.
  • a migration module on the destination system periodically examines the replication data to identify the common data blocks that have not been accessed for a period of time and that can be replaced by the smaller stub file, while a copy of the actual data is archived to secondary storage.
  • embodiments of the invention can advantageously utilize priority tags or like identifiers.
  • the tagged stub files can be used to recall the archived data prior to performing the requested operation so that an accurate replica of the source data is generated.
  • Embodiments of the invention can also be used to restore data from one or more snapshots that represent replicated data in a "known good,” “stable” or “recoverable” state, even when the snapshots comprise one or more stub files. Certain tags or other priority identifiers can be used to distinguish the stub files that represent migrated replication data from those stub files that had been replicated from a source machine.
  • FIGURE 1 illustrates a block diagram of a data management or replication system 100 according to certain embodiments of the invention.
  • the data replication system 100 can engage in continuous data replication between source and destination device(s), such that the replicated data is substantially synchronized with data on the source device(s).
  • the data replication system 100 advantageously provides for further migration of the destination data, such as based on de-duplication or other storage policies, to conserve available disk space of the destination system.
  • the data replication system 100 is advantageously configured to identify replication data that has been migrated and to account for the migrated data when engaging in additional data management operations, such as when modifying and/or restoring replication data.
  • the data replication system 100 comprises a source system 102 capable of communicating with a destination system 104 by sending and/or receiving data over a network 106.
  • the destination system 104 receives and/or stores a replicated copy of at least a portion of data, such as application-specific data, associated with the source system 102, such as on a source storage device 112.
  • the illustrated network 106 advantageously comprises any means for communicating data between two or more systems or components.
  • the network 106 comprises a computer network.
  • the network 106 may comprise a public network such as the Internet, a virtual private network (VPN), a token ring or TCP/IP based network, a wide area network (WAN), a local area network (LAN), an intranet network, a point-to-point link, a wireless network, a cellular network, a wireless data transmission system, a two-way cable system, an interactive kiosk network, a satellite network, a broadband network, a baseband network, combinations of the same or the like.
  • the network 106 may represent a communications socket or other suitable internal data transfer path or mechanism.
  • the source system 102 can comprise any computing device or means for processing data and includes, for example, a server computer, a workstation, a personal computer, a cell phone, a portable computing device, a handheld computing device, a personal digital assistant (PDA) or the like.
  • a server computer a workstation
  • a personal computer a cell phone
  • a portable computing device a handheld computing device
  • PDA personal digital assistant
  • the source system 102 comprises one or more applications 108 residing on and/or being executed by a computing device.
  • the applications 108 may comprise software applications that interact with a user to process data and may include, for example, database applications (e.g., SQL applications), word processors, spreadsheets, financial applications, management applications, e-commerce applications, browsers, combinations of the same or the like.
  • the applications 108 may comprise one or more of the following: MICROSOFT EXCHANGE, MICROSOFT SHAREPOINT, MICROSOFT SQL SERVER, ORACLE, MICROSOFT WORD and LOTUS NOTES.
  • the source system 102 further comprises one or more processes, such as filter drivers 110, that interact with data (e.g., production data) associated with the applications 108 to capture information usable to replicate application data to the destination system 104.
  • the filter driver 1 10 may comprise a file system filter driver, an operating system driver, a filtering program, a data trapping program, an application, a module of the application 108, an application programming interface ("API"), or other like software module or process that, among other things, monitors and/or intercepts particular application requests targeted at a file system, another file system filter driver, a network attached storage ("NAS"), a storage area network (“SAN”), mass storage and/or other memory or raw data.
  • the filter driver 110 may reside in the I/O stack of the application 108 and may intercept, analyze and/or copy certain data traveling from the application 108 to a file system.
  • the filter driver 110 may intercept data modification operations that include changes, updates and new information (e.g., data writes) with respect to application(s) 108 of interest.
  • the filter driver 110 may locate, monitor and/or process one or more of the following with respect to a particular application 108, application type or group of applications: data management operations (e.g., data write operations, file attribute modifications), logs or journals (e.g., NTFS change journal), configuration files, file settings, control files, other files used by the application 108, combinations of the same or the like.
  • data management operations e.g., data write operations, file attribute modifications
  • logs or journals e.g., NTFS change journal
  • configuration files e.g., file settings, control files, other files used by the application 108, combinations of the same or the like.
  • such data may also be gathered from files across multiple storage systems within the source system 102.
  • the filter driver 1 10 may be configured to monitor changes to particular files, such as files identified as being associated with data of the application(s) 108.
  • multiple filter drivers 110 may be deployed on a computing system, each filter driver being dedicated to data of a particular application 108. In such embodiments, not all information associated with the client system 102 may be captured by the filter drivers 110 and, thus, the impact on system performance may be reduced.
  • the filter driver 1 10 may be suitable for use with multiple application types and/or may be adaptable or configurable for use with multiple applications 108. For example, one or more instances of customized or particular filtering programs may be instantiated based on application specifics or other needs or preferences.
  • the illustrated source system 102 further comprises the source storage device 112 for storing production data of the application(s) 108.
  • the source storage 112 may include any type of physical media capable of storing electronic data.
  • the source storage 112 may comprise magnetic storage, such as a disk or a tape drive, or other type of mass storage.
  • the source storage 1 12 may be internal and/or external to (e.g., remote to) the computing device(s) having the applications 108 and the filter drivers 1 10.
  • the source storage 1 12 can include a NAS or the like.
  • the source storage 112 can comprise one or more databases and database logs.
  • database transactions directed to the source storage 112 may be first written to a file in the database logs and subsequently committed to the database in accordance with data management techniques for enhancing storage operation performance.
  • the destination system 104 comprises a replication module 114 and a destination storage device 116.
  • the replication module 114 is configured to monitor and/or manage the copying of data from the source system 102 to the destination system 104, such as data associated with the information obtained by the filter drivers 110.
  • the replication module 114 can comprise any computing device capable of processing data and includes, for example, a server computer, a workstation, a personal computer or the like.
  • the replication module 1 14 is a "dumb" server or terminal that receives and executes instructions from the source system 102.
  • the destination storage 116 may include any type of physical media capable of storing electronic data, such as replication data sent from the source system 102.
  • the destination storage 1 16 may comprise magnetic storage or other type(s) of mass storage.
  • the destination storage 116 may be internal and/or external to the computing device(s) having the replication module 114.
  • the source storage 112 and/or the destination storage 1 16 may be implemented as one or more storage "volumes" that include physical storage disks defining an overall logical arrangement of storage space. For instance, disks within a particular volume may be organized as one or more groups of redundant array of independent (or inexpensive) disks (RAID).
  • RAID redundant array of independent (or inexpensive) disks
  • either or both of the storage devices 1 12, 116 may include multiple storage devices of the same or different media.
  • the data replication system 100 further includes a data migration module 118 in communication with the destination storage 1 16.
  • the migration module 118 is configured to copy, or migrate, data from the destination storage 116 to a secondary storage 120.
  • the migration module 118 can selectively archive, back up or otherwise copy certain portions of the replication data on the destination storage 116 to the secondary storage 120.
  • the migration module 118 is further configured to truncate data on the destination storage 116.
  • the migration module 118 is configured to perform file or block-level single instancing, or de-duplication, of the data stored on the destination storage 116. Examples of single instancing methods and structures usable with embodiments of the invention are discussed in U.S. Patent Application No. 12/145,342, filed June 24, 2008, published as U.S. Patent Application Publication No. 2009-0319585 A1 , which is hereby incorporated herein by reference in its entirety to be considered part of this specification.
  • the migration module 118 is configured to perform one or more of the following copy operations: archiving, backup, Hierarchical Storage Management ("HSM”) copies, Information Lifecycle Management (“ILM”) copies or the like.
  • the migration module 118 can advantageously replace the copied data on the destination storage 116 with a stub file or like object that indicates the new location of the migrated data on the secondary storage 120.
  • the stub file can comprise a relatively small, truncated file (e.g., several kilobytes) having the same name as the original file.
  • the stub file can also include metadata that identifies the file as a stub and that can be used by the storage system to locate and restore the migrated data to the destination storage 116 or other location.
  • the secondary storage 120 can include any type of physical media capable of storing electronic data, such as the migrated data from the destination storage 116.
  • secondary storage 120 comprises media configured for long-term data retention, such as tape media or the like.
  • the secondary storage 120 can comprise a disk or other type of mass storage.
  • the secondary storage 120 advantageously comprises a slower access time and/or a less expensive storage medium than the destination storage 116.
  • the migration module 1 18 and the secondary storage 120 are illustrated as being external to the destination system 104, it will be understood that either or both of these components can be integrated into the destination system 104.
  • the replication module 114 can include the migration module 118, and/or the destination storage 116 can include the secondary storage 120.
  • FIGURE 2 illustrates a block diagram of an exemplary embodiment of a destination system 204 that provides for de-duplication of data in a CDR system.
  • the destination system 204 can be advantageously configured to maintain a replication copy of data from a source system while conserving space used on the destination storage device.
  • the destination system 204 can be used in the data replication system 100 of FIGURE 1.
  • certain components of the destination system 204 of FIGURE 2 will not be redescribed in detail if they were described above. Rather, the components of the destination system 204 will be given a reference numeral that retains the same last two digits as the reference numeral used in data replication system 100 of FIGURE 1 , and the last two digits will be preceded with a numeral "2.”
  • the destination system 204 comprises a replication agent 230 and one or more processes, such as threads 232, that populate a destination storage 216.
  • the replication agent 230 comprises one or more software modules that coordinate the transfer of data from a source system, such as the source system 102 to the destination storage 216.
  • the replication agent 230 can manage replication based on one or more predefined preferences, storage policies or the like.
  • the replication agent 230 instantiates an appropriate number of threads, processes, or routines, 232 for copying data from replication log files 233 to the destination storage 216 to maintain a replicated copy of a source storage device.
  • the threads 232 advantageously process or traverse the entries of the replication logs 233 for particular types of data and then copy that data to certain locations on one or more replication volumes based on data paths identified by the replication agent 230 and/or associated with each thread 232.
  • the replication logs 233 can contain a copy of the data stored on source logs of a client system and/or particular data operations being performed on the source system data.
  • Such replication logs 233 can comprise any type of memory capable of storing data including, for example, cache memory.
  • the replication logs 233 may reside on the destination system 204, such as, for example, on the destination storage 216, or at least a portion of the replication logs 233 may be external to the destination system 204.
  • the data on the source logs is available to be erased and/or overwritten to conserve memory space.
  • one thread 232 may write to one or more volumes of the destination storage 216 and/or multiple threads 232 may write to a single volume in parallel.
  • each thread 232 can be assigned to a hard- coded path pair, which includes (i) a source path identifying the location on the source storage device associated with a data management operation (e.g., "C: ⁇ Folder ⁇ ”) and (ii) a destination path identifying the location on the destination storage 216 to receive the replicated data (e.g., "D: ⁇ folder ⁇ ”) from the thread 232.
  • the destination system 204 further includes a de-duplication module 218 that traverses the data in the destination storage 216 to identify common data objects within one or more files on the destination storage 216. For instance, in certain embodiments, the de-duplication module 218 performs block- level de-duplication to identify common 64 KB blocks of data on the destination storage 216.
  • the de-duplication module 218 generates a substantially unique identifier for each 64 KB block, such as by performing a cryptographic hash function (e.g., message-digest algorithm 5 (MD5)), a secure hash algorithm (e.g., SHA-256), a (digital) digital fingerprint, a checksum, combinations of the same or the like. For each block having a matching identifier, the de-duplication module 218 can assume that such blocks contain identical data. For instance, the de-duplication module 218 can generate the substantially unique identifier for each block on-the-fly while traversing the blocks of the destination storage 216.
  • a cryptographic hash function e.g., message-digest algorithm 5 (MD5)
  • MD5 message-digest algorithm 5
  • SHA-256 secure hash algorithm
  • a (digital) digital fingerprint e.g., SHA-256
  • checksum e.g., SHA-256
  • the de-duplication module 218 can assume that such blocks contain identical data
  • the identifier for each block can be calculated by a module other than the de-duplication module 218, such as by a media agent, the replication agent 230 or the like.
  • the identifier can be generated, in certain embodiments, when the block is initially stored on the destination storage 216, as part of the replication process from the source system 102 to the destination system 104, or at any other time prior to the comparison by the de-duplication module 218.
  • each set of common or identical blocks of data found in the destination storage 216 can be stored as a single block in the de-duplication storage 220.
  • the de-duplication module 218 can replace each of the common blocks on the destination storage 216 with a substantially smaller stub file that indicates that the actual data block has been copied to the de- duplication storage 220.
  • the destination storage 216 comprises three files, File A 234, File B 236 and File C 238. Two of the files, File A 234 and File C 238, have a common data block, which has been replaced with a de- duplication stub file (i.e., Stub X 240) by the de-duplication module 218. This common data block is stored in the de-duplication storage 232 as common block 244.
  • a de- duplication stub file i.e., Stub X 240
  • the de-duplication stub file 240 is distinguishable from other stub files via a tag, a header entry or other like identifier. Such identification can be advantageous in a replication system, such as the destination system 204, so that the system can distinguish between stubs that have been replicated to the destination storage 216 from a source storage device and stubs that represent actual data on the destination storage 216 that has been archived, de-duplicated or otherwise migrated from the destination storage 216 to de-duplication storage 220.
  • File B 242 on the destination storage 216 also includes a stub file (i.e., Stub Y 242) that has been replicated from a source storage device.
  • Stub Y 242 a non de-duplication stub file, does not necessarily correspond to a common block stored on the de-duplication storage 220 and does not include the same tag or other identifier contained by the de-duplication stub files.
  • the de-duplication module 218 further maintains a tag index 239 that tracks tag values used by stubs on the destination storage 216.
  • the index 239 can indicate which tag value(s) are assigned to de-duplication stub files (e.g., Stub X 240) and/or replicated stub files (e.g., Stub Y 242).
  • the de-duplication module 218 can access the index 239 any time it encounters a stub file on the destination storage 216 based on the tag value contained by the stub.
  • the index 239 can be maintained on the destination storage 216, the de-duplication storage 220 or other component of the destination system 204.
  • the destination system 204 can further comprise a de-duplication database that associates de-duplication stub files 240 on the destination storage 216 with their corresponding common block(s) 244 on the de-duplication storage 220.
  • the de-duplication module 218 can be configured to maintain and/or access a table, index, linked list or other structure that stores entries for each of the de-duplication stub files 240 on the destination storage 216 and the location of the corresponding common block 244 on the de-duplication storage 220.
  • the stub files illustrated in FIGURE 2 have been described with reference to common data blocks, in other embodiments of the invention the stub files can be used to identify other identical data objects, such as files, strings or the like.
  • the common data objects need not be limited to 64 KB but may be larger or smaller depending on the specifications (e.g., operating system) of the applicable system.
  • the de-duplication module 218 can further be configured to restore and/or recall data from the de-duplication storage 220. For instance, as discussed in more detail below, the de-duplication module 218 can advantageously retrieve the de-duplication or archived data in response to a request to access the replication data on the destination storage 216.
  • destination system 204 of FIGURE 2 has been described with reference to de-duplication of data, it will be understood from the disclosure herein that other embodiments of the destination system 204 can be configured to perform other migration processes, as disclosed above, that result in the copying and/or stubbing of data.
  • the replication agent 230 can communicate directly with the de-duplication module 218.
  • the two components can schedule access to replication data on the destination storage 216, and/or the replication agent 230 can instruct the de- duplication module to restore data, such as the common block 244, from the de- duplication storage 220 to the destination storage 216.
  • FIGURE 3 illustrates an exemplary de-duplication stub file 340 usable with the destination system 204 of FIGURE 2.
  • the de-duplication stub file 340 contains information that is necessary to locate and/or recall a migrated file or data object.
  • the de-duplication stub file 340 comprises a self-describing stub that distinguishes the stub 340 from other types of stubs, such as those that have been replicated from a source system in a replication system.
  • the de-duplication stub file 340 comprises a 4 KB file that represents a common 64 KB block of data.
  • the de-duplication module 218 or other like module utilizes the data within the stub 340 to retrieve the 64 KB data block in response to a data modification or restore operation request for the replication data.
  • the de-duplication stub file 340 can reference a block offset of the corresponding 64 KB data block 244 within the de-duplication storage 220.
  • the stub file 340 can represent an entire file or data object rather than a fixed block size.
  • the de-duplication stub file 340 is shown in FIGURE 3 with a plurality of fields. It will be understood that the illustrated stub file 340 is merely exemplary and that one or more of such fields can be optional and/or dependent on the type of operating system(s) used in the replication system.
  • the stub file 340 includes a tag value field 352.
  • the tag value 352 distinguishes the de-duplication stub file 340 from regular stub files.
  • the tag value 352 can be one of two preset values: a first value that identifies the stub file as a de- duplication stub file or a second value associated with a replicated stub file that represents a file migrated from a source storage device (e.g., a stub file that was itself replicated in a copy operation).
  • the tag value 352 could comprise a single bit to distinguish the two types of stub files.
  • the tag value 352 can comprise a unique, substantially unique or other identifier (e.g., an alphanumeric value) that can be used in accessing a lookup table or like structure (e.g., index 239) to determine if the stub file 340 is a de-duplication stub file or a regular stub file.
  • a unique, substantially unique or other identifier e.g., an alphanumeric value
  • a lookup table or like structure e.g., index 239
  • a time stamp field 354 can store an indication of when the represented file was migrated to secondary storage and replaced with the stub file.
  • the file size field 356 can indicate the size of the file and/or block represented by the stub file 340. In environments wherein all stub files reference a predetermined block size, the stub file 340 may not have such a field.
  • a file name field 358 indicates the name of the file referenced by the stub file 340.
  • the stub file 340 itself is assigned the same name as the migrated file, thereby presenting the appearance that the actual file is located in the particular storage location.
  • the stub file 340 further includes a file location information field 360 containing data for locating and/or retrieving the migrated file.
  • the field 360 can comprise an archive file identifier, volume identifier, one or more offset values, a pathname, an address, combinations of the same or the like. It will be understood from the disclosure herein that the field 360 is illustrated as one field for simplification purposes and that other embodiments of the stub file 340 can comprise multiple fields (adjacent or non-adjacent) with information relating to the location of the migrated file. In general, the field 360 comprises enough information such that a migration module (e.g., migration module 118) can access the migrated file.
  • a migration module e.g., migration module 118
  • a checksum field 362 includes data for verifying that a restored file is not corrupted and/or accurately represents the data object that was migrated. For instance, when restoring a migrated file or object, the value in the checksum field 362 of the corresponding stub file 340 can be compared with a checksum of the restored file to validate the data.
  • the stub file 340 further includes a flag field 364 that contains other information regarding the migrated file or data object.
  • the flag field 364 can indicate whether or not the migrated file is encrypted, compressed or the like.
  • the stub file 340 can function without the flag field 364.
  • the de-duplication stub file 340 has been described with respect to particular embodiments, it will be understood from the disclosure herein that the stub file 340 can comprise more or fewer fields or information than what is illustrated in FIGURE 3.
  • the stub file 340 may comprise a file between 51 1 bytes and 16 KB in size.
  • FIGURES 4-6 illustrate three flowcharts of an exemplary embodiment of a method for de-duplicating, or single instancing, replicated data in a data replication system, such as a CDR system.
  • the illustrated de- duplication method provides for the migrating and stubbing of common data objects on a destination storage device without significantly impacting the performance of data replication to the destination storage device.
  • the blocks of the flowcharts of FIGURE 4-6 will be described with reference to the components of the destination system 204 of FIGURE 2.
  • FIGURE 4 a flowchart is shown of an exemplary embodiment of a scan process 400 of a de-duplication method for the destination system 204.
  • the scan process 400 involves identifying common data objects within replication data of a destination storage device.
  • the replication agent 230 and thread(s) 232 replicate data from a source storage device to the destination storage device 216.
  • this block continues to be executed throughout the scan process 400 and/or other processes of FIGURES 5 and 6.
  • the replication of data to the destination storage 216 is given priority over one or more other data operations of the de-duplication method described below in order to maintain substantial coherency between the replicated data and the source system data.
  • the de-duplication of the replicated data can be performed without significantly impacting the primary data replication process.
  • the de-duplication module 218 receives a command to archive data on the destination machine.
  • the de- duplication module 218 initiates archiving based on a storage policy and/or user input.
  • the storage policy can dictate that archiving be performed daily or on another periodic basis.
  • archiving can be performed based on an available storage capacity of the destination storage 216.
  • the de-duplication module 218 scans the destination storage 216 to identify common data objects. For instance, the de-duplication module 218 can identify 64 KB data blocks on the destination storage 216, such as from different files, that comprise identical data. In certain embodiments, the de- duplication module 218 can perform a cryptographic hash function or other algorithm, as discussed previously, to generate a substantially unique identifier based on the data contained in each block. For each block having the same identifier, the de-duplication module 218 can identify the block as a candidate for de- duplication together with the other like blocks, such as through a flag or other marker, listing the blocks in a data structure, or the like.
  • data object is a broad term and is used in its ordinary sense and includes, without limitation, any distinct or identifiable grouping of electronic information that exists in storage and/or on which operations can be performed.
  • a data object can comprise a data file, a data block, a program, an array, any other collection of electronic information or the like.
  • the de-duplication module 218 can identify those common data objects on the destination storage 216 that have not been modified and/or accessed within a predetermined period of time (e.g., within the last seven days).
  • the process 400 records the scan time of the destination data.
  • the scan time can advantageously be used to determine whether or not a particular data object should be stubbed. It will be understood that Block 420 can comprise recording of individual scan times for each data object on the destination storage 216 or the time that the scan process was initiated for the entire set of replication data.
  • the de-duplication module 218 maintains a list or other record of the common data objects that were identified on the destination storage as being candidates for de-duplication.
  • the scan process 400 has been described with respect to particular blocks, other embodiments of the process can include different and/or fewer blocks than those described above.
  • the process 400 can conduct an initial scan of the destination storage 216 for all data objects that have not been modified and/or accessed for a predetermined period of time (e.g., more than seven days), which data objects are identified as candidates for archiving or migration to secondary storage.
  • a second pass is then made by the de-duplication module 218 through these identified data objects to locate common data objects that can be de-duplicated to the de-duplication storage 220.
  • FIGURE 5 illustrates a flowchart of an exemplary embodiment of an archive process 500 of the de-duplication method for a replication system.
  • this archive process 500 involves determining appropriate times to migrate or copy replication data from the destination storage 216.
  • the de-duplication module 505 accesses a common data object identified in the list created in Block 425. Before archiving each data object, the de-duplication module 218 at Block 510 determines if the particular data object is currently in use by a CDR process (e.g., is being modified based on changes to source system data). If the data object is currently in use, the de- duplication module 515 pauses the archive process 500 until the CDR process has completed (Block 515). In yet other embodiments, the de-duplication module 218 can move to a next identified data object for archiving.
  • a CDR process e.g., is being modified based on changes to source system data.
  • Block 520 if the current data object is not in use by a CDR process, the de-duplication module 218 archives the current data object in secondary storage 220. In certain embodiments, Block 520 comprises storing only a single common block 244 in the de-duplication storage 220 for identical data blocks within the replication data set. [0093] The archive process 500 then determines if there are additional data objects on the destination storage 216 that have been identified for archiving (Block 525). If there are additional data objects, the de-duplication module 218 moves to the next data object (Block 530), and the archive process 500 returns to Block 510. Otherwise, the archive process 500 completes, and the de-duplication method commences with stubbing.
  • process 500 has been described with reference to “archiving,” it should be understood that the process 500 can apply similarly to migrating, de-duplicating, single instancing or other types of copy operations. Rather, the term “archiving” is used with respect to process 500, and the remainder of the de-duplication process, for simplification purposes.
  • FIGURE 6 illustrates a flowchart of an exemplary embodiment of a stubbing process 600 usable with the destination system 204.
  • the process 600 can be performed on each of the data objects archived by the process 500 to replace the objects with stub files or like truncation objects in order to conserve space on a destination storage device of a replication system.
  • the data of a replicated file can change on the destination storage 216 between the time of a scan of the destination storage (Block 415) and the time at which the data object is to be stubbed.
  • the process 600 advantageously accounts for such data modifications by requiring the de-duplication module 218 to first access the metadata of each data object on the destination storage 216 that has been archived on secondary storage 220 to determine a last accessed and/or modified time for the data object (Block 605).
  • such data objects can be tagged or otherwise identified or recorded during the scan process 400 and or archive process 500 such that the de-duplication module 218 can quickly locate the data objects during the process 600.
  • the de-duplication module 218 does not proceed with replacing the data object with a stub file (Block 615). In such situations, it is possible that the data object archived on secondary storage 220 is no longer consistent with the data object on the destination storage 216.
  • the process 600 determines at Block 610 if the last accessed and/or modified time is after a time that the data object was archived or copied instead of the scan time. If so, the process 600 continues with Block 615.
  • the de-duplication module 218 replaces the archived data object with a stub file, such as the de-duplication stub file 340 illustrated in FIGURE 3.
  • the stub file can advantageously be a self- describing stub file that is used to identify archived and/or de-duplicated data and can differ in content and/or structure from other types of stub files.
  • multiple data objects on the destination storage 216 can be replaced with the same stub file or a stub file with the same tag, which references a common data block on the secondary storage 220.
  • systems and methods can immediately replace archived data objects with stub files on the destination storage 216 prior to continuing with scanning the entire storage device.
  • the likelihood of the data object being accessed and/or modified between the time of the scan and the time of stubbing is decreased substantially.
  • the source system 102 communicates with the associated destination system 104 to verify that the two systems are synchronized. For instance, the source system 102 may receive from the destination system 104 an identification (e.g., unique serial number) of the data operation currently being replicated by the destination system. The source system 102 may then compare the received identification with the data operation being forwarded to the source storage 112.
  • an identification e.g., unique serial number
  • FIGURE 7 illustrates a flowchart of an exemplary embodiment of a synchronization process 700 usable in a data replication environment.
  • the synchronization process 700 is capable of modifying files on a destination storage device of a replication system that have been stubbed according to a de-duplication policy, archive policy, migration policy or the like.
  • the synchronization process 700 will be described with reference to the components of the data replication system 100 of FIGURE 1.
  • the synchronization process 700 identifies a modification to data on the source system 102. For instance, a log file indicative of data modifications of the source system 102 data can be sent over a network to the destination system 104 via a CDR process. Examples of CDR processes and configurations usable with embodiments of the invention are described in U.S. Patent No. 7,651 ,593, issued January 26, 2010, which is hereby incorporated herein by reference in its entirety.
  • the replication module 1 14 receives the command to modify the replication data on the destination storage 116 based on changes made to the source data (Block 710). Prior to doing so, the replication module 114 determines if the replication data to be modified includes a stub file (Block 715). For instance, the replication module 114 can read metadata of the replication data to determine if any of the data comprises a stub file. In yet other embodiments, the replication module 114 can access an index or cache that maintains a record of the stub files within the replication data. Such a cache or index may be maintained, for example, by the migration module 118.
  • the process 700 continues with Block 720 to determine if the stub file includes a tag or other predetermined value (e.g., via tag value 352).
  • the tag value distinguishes the particular stub file as being associated with replication data that has been migrated, archived, de-duped or otherwise moved to secondary storage 120 by the migration module 1 18 as opposed to a stub file replicated from the source storage 112.
  • the tag value can comprise an identifier that is compared with a list of identifiers in a migration table or index to determine if the stub file is a de-duplication stub file or a replicated stub file.
  • the process 700 recalls the actual data object(s) referenced by the stub file and restores the data to the destination storage 116.
  • the replication module 114 can invoke the migration module 118 to recall the data.
  • the recall function can take priority over other jobs being performed or scheduled to be performed by the migration module 1 18 because the CDR process is halted until the pertinent replication data is recalled and restored to the destination storage 116 from secondary storage 120.
  • FIGURE 8 illustrates a flowchart of an exemplary embodiment of a process 800 for restoring data from one or more snapshots in a CDR system.
  • the restore process 800 is capable of restoring data from a snapshot including one or more stub files representing replication data that has been de- duplicated, archived, migrated or the like.
  • the restore process 800 will be described with reference to the components of the data replication system 100 of FIGURE 1.
  • the replication module 114 identifies a point in time when the data of destination storage device 1 16 represents a "known good,” “stable” or “recoverable” state.
  • a state may be defined as when particular computing operations of the application(s) 108 are complete to a point such that further operation, recovery and/or rolling back of the application(s) 108 may occur, based on the recorded or replicated data, without the loss of critical information or computing operations needed for operation of the application(s) 108.
  • This point of referential integrity is generally referred to herein as a "known good" state of the application data.
  • a consistency point marker in one or more CDR log files can identify when replication data represents a known good state. For instance, such a marker can be generated and/or inserted in the log files by the filter driver 110 and/or a data agent denoting that a "consistency point” or “consistency recovery point” has been reached.
  • the consistency point marker further indicates the time at which the application 108 was in the known good state. Additional details on such consistency point markers are disclosed in U.S. Patent No. 7,651 ,593, issued January 26, 2010, which is hereby incorporated herein by reference in its entirety.
  • the consistency point marker is replicated to the destination system 104 along with replicated data.
  • the replication marker 114 knows that the replication data, at that point in time, represents a known good state.
  • the replication module 114 can advantageously perform a snapshot on the replication data (Block 810). As a result, the snapshot represents a point-in-time copy of the replication data in a known good state.
  • the process 800 later receives a request to restore the data that was the subject of the snapshot.
  • the data restore request may be in response to a system crash or failure, and can involve restoring the storage device or volume to a previous or most recent known good state.
  • the restore request comprises the replication module 114 or other component mounting the snapshot to obtain a full logical file system of the replication data at the time the snapshot was taken.
  • the replication module 1 14 then identifies whether or not the snapshot comprises any stub files (Block 820). If the snapshot comprises stub files, the process 800 determines if any of the stub files includes a particular tag or like identifier (Block 825). For instance, the replication module 1 14 can determine if a tag value of the stub file matches one or more predetermined values that identify stub files as representing migrated, archived or de-duplicated data as opposed to a stub file that was replicated from the source system 102.
  • the process 800 recalls the actual data represented by the stub file to a staging area that serves as a temporary repository for the recalled data while the restore process 800 is being performed (Block 830).
  • a staging area can be a temporary folder created to receive the recalled data for a brief duration until it is restored, after which the temporary folder can be deleted.
  • the replication module 1 14 restores the data from the snapshot (Block 835). While performing the restore, when the replication module 114 comes across a stub file referenced by the snapshot, the replication module 114 can restore the appropriate data from the staging area rather than restore the stub file.
  • process 800 has been described with reference to particular arrangements, other embodiments of the process 800 can have more or fewer blocks than those described above. For instance, the process 800 can be performed on snapshots that do not represent the replication data in a known good or recoverable state.
  • data replication systems and methods may be used in a modular storage management system, embodiments of which are described in more detail in U.S. Patent No. 7,035,880, issued April 5, 2006, which is hereby incorporated herein by reference in its entirety.
  • the data replication system may be part of a storage operation cell that includes combinations of hardware and software components directed to performing storage operations on electronic data.
  • Exemplary storage operation cells usable with embodiments of the invention include CommCells as embodied in the QNet storage management system and the QINETIX or SIMPANA storage management systems offered by CommVault Systems, Inc. (Oceanport, New Jersey), and as further described in U.S. Patent No.
  • Systems and modules described herein may comprise software, firmware, hardware, or any combination(s) of software, firmware, or hardware suitable for the purposes described herein.
  • Software and other modules may reside on servers, workstations, personal computers, computerized tablets, PDAs, and other devices suitable for the purposes described herein.
  • Software and other modules may be accessible via local memory, via a network, via a browser, or via other means suitable for the purposes described herein.
  • Data structures described herein may comprise computer files, variables, programming arrays, programming structures, or any electronic information storage schemes or methods, or any combinations thereof, suitable for the purposes described herein.
  • User interface elements described herein may comprise elements from graphical user interfaces, command line interfaces, and other interfaces suitable for the purposes described herein.
  • Embodiments of the invention are also described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the acts specified in the flowchart and/or block diagram block or blocks.
  • These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to operate in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the acts specified in the flowchart and/or block diagram block or blocks.
  • the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operations to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the acts specified in the flowchart and/or block diagram block or blocks.

Abstract

Stubbing systems and methods are provided for intelligent data management in a replication environment, such as by reducing the space occupied by replication data on a destination system. In certain examples, stub files or like objects replace migrated, de-duplicated or otherwise copied data that has been moved from the destination system to secondary storage. Access is further provided to the replication data in a manner that is transparent to the user and/or without substantially impacting the base replication process. In order to distinguish stub files representing migrated replication data from replicated stub files, priority tags or like identifiers can be used. Thus, when accessing a stub file on the destination system, such as to modify replication data or perform a restore process, the tagged stub files can be used to recall archived data prior to performing the requested operation so that an accurate copy of the source data is generated.

Description

COMMV.066WO PATENT
STUBBING SYSTEMS AND METHODS IN A DATA REPLICATION
ENVIRONMENT
BACKGROUND
Field
[0002] The present disclosure relates to performing copy and/or data management operations in a computer network and, in particular, to systems and methods for managing stub files in a data replication system.
Description of the Related Art
[0003] Computers have become an integral part of business operations such that many banks, insurance companies, brokerage firms, financial service providers, and a variety of other businesses rely on computer networks to store, manipulate, and display information that is constantly subject to change. Oftentimes, the success or failure of an important transaction may turn on the availability of information that is both accurate and current. Accordingly, businesses worldwide recognize the commercial value of their data and seek reliable, cost- effective ways to protect the information stored on their computer networks.
[0004] To address the need to maintain current copies of electronic information, certain data replication systems have been provided to "continuously" copy data from one or more source machines to one or more destination machines. These continuous data replication (CDR) systems provide several advantages for disaster recovery solutions and can substantially reduce the amount of data that is lost during an unanticipated system failure.
[0005] One drawback of such CDR systems is that synchronization of the source and destination machines generally requires the same amount of storage space on both the source and destination. Thus, not only do many conventional CDR systems require large amounts of disk space, but they also tend to be less useful for general data backup purposes. SUMMARY
[0006] In view of the foregoing, a need exists for improved systems and methods for the managing replication data in a storage system, such as a CDR system. For example, there is a need for conserving disk space on a destination storage device, while maintaining the ability to provide sufficient and timely recovery of the replicated data. Moreover, there is a need for providing user access to the replicated data in a manner that is transparent to the user and/or without substantially impacting the CDR, or other replication, process.
[0007] In certain embodiments of the invention disclosed herein, stubbing systems and methods are provided for destination storage devices in a CDR system. For instance, data on a destination storage device can be selectively moved to secondary storage based on archive, de-duplication, or other storage policies, to free up space on the destination system.
[0008] For example, certain embodiments of the invention involve the de- duplication, or single-instancing, of replication data. In such systems, de-duplicated data blocks on the replication storage device can be replaced with substantially smaller stub files that serve as pointers to, or placeholders for, the actual data. In certain embodiments, a data migration module of the replication system periodically examines the replication data to identify common blocks that have not been accessed for a period of time and that can be replaced by smaller stub files, while a copy of the actual data is archived to secondary storage, such as a less-expensive medium or the like.
[0009] In order to distinguish the stub files representing migrated replication data from original stub files that have been replicated from the source system, certain embodiments of the invention use priority tags. Thus, when accessing a stub file on the destination system, such as to modify the replication data or to perform a system restore process, the tagged stub files can be used to recall the archived data prior to performing the requested operation so that an accurate replica of the source data can be compiled.
[0010] Certain embodiments of the invention include a method for performing data management operations on replicated data of a destination storage device. The method includes processing, with one or more routines, at least one log file having a plurality of log entries indicative of operations generated by a computer application executing on a source system, the operations being directed to data on a source storage device. The method further includes replaying, with the one or more routines, the operations on a destination storage device to modify replication data on the destination storage device, wherein said replaying further comprises: (i) identifying a plurality of stub files within the replication data, wherein the plurality of stub files comprises one or more first stub files each comprising a predetermined tag value, and wherein the plurality of stub files further comprises one or more second stub files that do not comprise the predetermined tag value; (ii) for each of the one or more first stub files, recalling from a secondary storage one or more data objects represented by each of the one or more first stub files and replacing each of the one or more first stub files with the corresponding data object prior to modifying the replication data; and (iii) modifying the replication data on the destination storage device to match the data on the source storage device.
[0011] Certain embodiments of the invention further include a destination system for performing data replication in a computer network. The destination system comprises a destination storage device, at least one replication log file, a replication module and a migration module. The destination storage device stores replication data having a plurality of stub files, the plurality of stub files comprising one or more first stub files each having at least one predetermined tag value and one or more second stub files that do not have the at least one predetermined tag value. The at least one replication log file comprises a plurality of log entries indicative of data operations generated by a computer application for execution on a source storage device. A replication module traverses the plurality of log entries in the replication log file(s) and copies the log entries to execute the data operations on replication data of the destination storage device. The migration module restores copied data from a secondary storage device to the destination storage device based on the one or more first stub files. In certain embodiments, the replication module is further configured to identify the first stub file(s) and instruct the migration module to replace the first stub file(s) with the copied data from the secondary storage device prior to executing the data operations on the replication data.
[0012] In certain embodiments, a destination system is disclosed for performing data replication in a computer network. The destination system comprises means for storing replication data having a plurality of stub files, the plurality of stub files comprising one or more first stub files each comprising at least one predetermined tag value and one or more second stub files that do not comprise the at least one predetermined tag value. The system further includes means for receiving a plurality of log entries indicative of data operations generated by a computer application for execution on a source storage device, and means for traversing the plurality of log entries in the receiving means and for copying the log entries to execute the data operations on replication data of the storing means. The system further includes means for restoring copied data from a secondary storage device to the storing means based on the first stub file(s). Furthermore, the traversing means can identify the first stub file(s) and instruct the restoring means to replace the first stub file(s) with the copied data from the secondary storage device prior to executing the data operations on the replication data.
[0013] In certain embodiments, a method is disclosed for performing data management operations in a computer network. The method includes monitoring operations associated with a source computing device, the operations operative to write data to a source storage device. The method further includes copying the data to a destination storage device based at least in part on the operations, the data comprising at least one first stub file, and scanning the data of the destination storage device to identify a common data object repeated between multiple portions of the data on the destination storage device. The method also includes archiving a copy of the common data object on a second storage device and determining a last access time of each of the multiple data portions of the destination storage device having the common data object. For each of the multiple data portions having a last access time at or before the time of the archiving of the copy of the common data object, the method includes replacing the common data object of the particular data portion with a second stub file, wherein the second stub file comprises a tag value not possessed by any of the first stub file(s), and wherein the second stub file comprises information indicative of a location of the copy of the common data object.
[0014] In further embodiments, a continuous data replication system is disclosed that comprises a first storage device, at least one monitoring module, a replication module and a migration module. The first storage device stores data write operations from at least one computer application at a first location, the first location comprising at least one first stub file. The at least one module monitors the data write operations and generates first log entries based on the data write operations. The second storage device comprises second log entries, wherein the second log entries comprise copies of at least a portion of the first log entries. The replication module is in communication with the second storage device and is configured to process the second log entries to modify replicated data stored in a second location to substantially mirror the data of the first location, the replicated data comprising a copy of the first stub file(s). The migration module is configured to archive select data objects of the replicated data to a third location and to replace each of the select data objects of the replicated data with a second stub file, wherein each of the second stub files comprises an identifier not possessed by the first stub file(s) and wherein each of the second stub files comprises information indicative of a location of the archived copy of the data object at the third location.
[0015] In certain embodiments a continuous data replication system is disclosed that comprises means for storing data write operations from at least one computer application at a first location, the first location comprising at least one first stub file. The replication system further includes means for monitoring the data write operations and for generating first log entries based on the data write operations and also means for receiving second log entries, wherein the second log entries comprise copies of at least a portion of the first log entries. The replication system further includes means for processing the second log entries to modify replicated data stored in a second location to substantially mirror the data of the first location, the replicated data comprising a copy of the first stub file(s), and means for archiving select data objects of the replicated data to a third location and for replacing each of the select data objects of the replicated data with a second stub file, wherein each of the second stub files comprises an identifier not possessed by the first stub file(s) and wherein each of the second stub files comprises information indicative of a location of the archived copy of the data object at the third location.
[0016] In certain further embodiments, a method is disclosed for restoring data in a continuous data replication system. The method includes receiving, with a first computing device, a request to restore data of one or more snapshots of replication data of a destination storage device, the replication data having first stub files replicated from a source system and second stub files indicative of select data blocks of the replication data copied to a secondary storage device from the destination storage device. The method further includes mounting the snapshot(s); identifying the second stub files captured by the snapshot(s); and recalling to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files. In addition, the method includes, following said recalling, restoring the replication data from the snapshot(s), the restored data comprising each of the first stub files and comprising none of the second stub files.
[0017] In certain embodiments, a system is disclosed for restoring data in a continuous data replication environment. The system includes a first storage device comprising data replicated from a source storage system, the replicated data comprising first stub files replicated from the source storage system and second stub files indicative of select data blocks of the replicated data copied to a secondary storage device. The system also includes a restore module configured to mount a snapshot of the replicated data, the snapshot representing a point-in-time image of the replicated data, wherein the restore module is further configured to identify the second stub files captured by the snapshot(s). The system further includes a migration module in communication with the restore module, the migration module being configured to recall to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files. Moreover, in certain embodiments, the restore module is configured to restore the replication data represented by the snapshot, the restored data comprising each of the first stub files and comprising none of the second stub files.
[0018] In certain embodiments, a system is disclosed for restoring data in a continuous data replication environment. The system comprises means for storing data replicated from a source storage system, the replicated data comprising first stub files replicated from the source storage system and second stub files indicative of select data blocks of the replicated data copied to a secondary storage device. The system also comprises means for mounting a snapshot of the replicated data, the snapshot representing a point-in-time image of the replicated data, wherein the mounting means further identifies the second stub files captured by the one or more snapshots. Moreover, the system comprises means for recalling to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files, and wherein the mounting means further restores the replication data represented by the snapshot, the restored data comprising each of the first stub files and comprising none of the second stub files.
[0019] For purposes of summarizing the disclosure, certain aspects, advantages and novel features of the inventions have been described herein. It is to be understood that not necessarily all such advantages may be achieved in accordance with any particular embodiment of the invention. Thus, the invention may be embodied or carried out in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other advantages as may be taught or suggested herein.
BRIEF DESCRIPTION OF THE DRAWINGS
[0020] FIGURE 1 illustrates a block diagram of a data replication system, according to certain embodiments of the invention.
[0021] FIGURE 2 illustrates a block diagram of an exemplary embodiment of a destination system of the data replication system of FIGURE 1.
[0022] FIGURE 3 illustrates an exemplary de-duplication stub file usable with the destination system of FIGURE 2. [0023] FIGURES 4-6 illustrate flowcharts of an exemplary embodiment of a de-duplication method for destination data of a CDR system, such as the data management system of FIGURE 1. In particular, FIGURE 4 illustrates a flowchart of an exemplary embodiment of a scan process of the de-duplication method; FIGURE 5 illustrates a flowchart of an exemplary embodiment of an archive process of the de-duplication method; and FIGURE 6 illustrates a flowchart of an exemplary embodiment of a stubbing process of the de-duplication method.
[0024] FIGURE 7 illustrates a flowchart of an exemplary embodiment of a synchronization process usable by the data replication system of FIGURE 1.
[0025] FIGURE 8 illustrates a flowchart of an exemplary embodiment of a restore process usable by the data replication system of FIGURE 1.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0026] As will be seen from the disclosure herein, systems and methods are provided for intelligent and efficient data management. For instance, certain embodiments of the invention provide for improved CDR systems that reduce the amount of space required for replication data on a destination system. Such systems can utilize stub files or the like to replace migrated, de-duplicated or otherwise copied data that has been moved from the destination system to secondary storage. Disclosed systems and methods further provide access to the replication data in a manner that is transparent to the user and/or without substantially impacting the CDR, or like replication, process.
[0027] In certain examples, embodiments of the invention are directed to the de-duplication, or single-instancing, of replication data. In such systems, de- duplicated data blocks on the destination storage device can be replaced with stub files that serve as pointers to the storage locations of the actual data. For instance, like stub files can be used to reference the same common data block that has been de-duplicated from the destination system. In certain embodiments, a migration module on the destination system periodically examines the replication data to identify the common data blocks that have not been accessed for a period of time and that can be replaced by the smaller stub file, while a copy of the actual data is archived to secondary storage. [0028] In order to distinguish stub files representing migrated replication data from original stub files that have been replicated from the source system, embodiments of the invention can advantageously utilize priority tags or like identifiers. Thus, when accessing a stub file on the destination system, such as to modify the replication data or to perform a system restore process, the tagged stub files can be used to recall the archived data prior to performing the requested operation so that an accurate replica of the source data is generated.
[0029] Embodiments of the invention can also be used to restore data from one or more snapshots that represent replicated data in a "known good," "stable" or "recoverable" state, even when the snapshots comprise one or more stub files. Certain tags or other priority identifiers can be used to distinguish the stub files that represent migrated replication data from those stub files that had been replicated from a source machine.
[0030] The features of the systems and methods will now be described with reference to the drawings summarized above. Throughout the drawings, reference numbers are re-used to indicate correspondence between referenced elements. The drawings, associated descriptions, and specific implementation are provided to illustrate embodiments of the invention and not to limit the scope of the disclosure.
[0031] In addition, methods and functions described herein are not limited to any particular sequence, and the blocks or states relating thereto can be performed in other sequences that are appropriate. For example, described blocks or states may be performed in an order other than that specifically disclosed, or multiple blocks or states may be combined into a single block or state.
[0032] FIGURE 1 illustrates a block diagram of a data management or replication system 100 according to certain embodiments of the invention. In general, the data replication system 100 can engage in continuous data replication between source and destination device(s), such that the replicated data is substantially synchronized with data on the source device(s). Moreover, the data replication system 100 advantageously provides for further migration of the destination data, such as based on de-duplication or other storage policies, to conserve available disk space of the destination system. In doing so, the data replication system 100 is advantageously configured to identify replication data that has been migrated and to account for the migrated data when engaging in additional data management operations, such as when modifying and/or restoring replication data.
[0033] As shown in FIGURE 1 , the data replication system 100 comprises a source system 102 capable of communicating with a destination system 104 by sending and/or receiving data over a network 106. For instance, in certain embodiments, the destination system 104 receives and/or stores a replicated copy of at least a portion of data, such as application-specific data, associated with the source system 102, such as on a source storage device 112.
[0034] The illustrated network 106 advantageously comprises any means for communicating data between two or more systems or components. It certain embodiments, the network 106 comprises a computer network. For example, the network 106 may comprise a public network such as the Internet, a virtual private network (VPN), a token ring or TCP/IP based network, a wide area network (WAN), a local area network (LAN), an intranet network, a point-to-point link, a wireless network, a cellular network, a wireless data transmission system, a two-way cable system, an interactive kiosk network, a satellite network, a broadband network, a baseband network, combinations of the same or the like. In embodiments wherein the source system 102 and destination system 104 are part of the same computing device, the network 106 may represent a communications socket or other suitable internal data transfer path or mechanism.
[0035] In certain embodiments, the source system 102 can comprise any computing device or means for processing data and includes, for example, a server computer, a workstation, a personal computer, a cell phone, a portable computing device, a handheld computing device, a personal digital assistant (PDA) or the like.
[0036] As shown, the source system 102 comprises one or more applications 108 residing on and/or being executed by a computing device. For instance, the applications 108 may comprise software applications that interact with a user to process data and may include, for example, database applications (e.g., SQL applications), word processors, spreadsheets, financial applications, management applications, e-commerce applications, browsers, combinations of the same or the like. For example, in certain embodiments, the applications 108 may comprise one or more of the following: MICROSOFT EXCHANGE, MICROSOFT SHAREPOINT, MICROSOFT SQL SERVER, ORACLE, MICROSOFT WORD and LOTUS NOTES.
[0037] The source system 102 further comprises one or more processes, such as filter drivers 110, that interact with data (e.g., production data) associated with the applications 108 to capture information usable to replicate application data to the destination system 104. For instance, the filter driver 1 10 may comprise a file system filter driver, an operating system driver, a filtering program, a data trapping program, an application, a module of the application 108, an application programming interface ("API"), or other like software module or process that, among other things, monitors and/or intercepts particular application requests targeted at a file system, another file system filter driver, a network attached storage ("NAS"), a storage area network ("SAN"), mass storage and/or other memory or raw data. In some embodiments, the filter driver 110 may reside in the I/O stack of the application 108 and may intercept, analyze and/or copy certain data traveling from the application 108 to a file system.
[0038] In certain embodiments, the filter driver 110 may intercept data modification operations that include changes, updates and new information (e.g., data writes) with respect to application(s) 108 of interest. For example, the filter driver 110 may locate, monitor and/or process one or more of the following with respect to a particular application 108, application type or group of applications: data management operations (e.g., data write operations, file attribute modifications), logs or journals (e.g., NTFS change journal), configuration files, file settings, control files, other files used by the application 108, combinations of the same or the like. In certain embodiments, such data may also be gathered from files across multiple storage systems within the source system 102. Furthermore, the filter driver 1 10 may be configured to monitor changes to particular files, such as files identified as being associated with data of the application(s) 108. [0039] In certain embodiments, multiple filter drivers 110 may be deployed on a computing system, each filter driver being dedicated to data of a particular application 108. In such embodiments, not all information associated with the client system 102 may be captured by the filter drivers 110 and, thus, the impact on system performance may be reduced. In other embodiments, the filter driver 1 10 may be suitable for use with multiple application types and/or may be adaptable or configurable for use with multiple applications 108. For example, one or more instances of customized or particular filtering programs may be instantiated based on application specifics or other needs or preferences.
[0040] The illustrated source system 102 further comprises the source storage device 112 for storing production data of the application(s) 108. The source storage 112 may include any type of physical media capable of storing electronic data. For example, the source storage 112 may comprise magnetic storage, such as a disk or a tape drive, or other type of mass storage. In certain embodiments, the source storage 1 12 may be internal and/or external to (e.g., remote to) the computing device(s) having the applications 108 and the filter drivers 1 10. In yet other embodiments, the source storage 1 12 can include a NAS or the like.
[0041] In yet other embodiments, the source storage 112 can comprise one or more databases and database logs. For instance, in certain embodiments, database transactions directed to the source storage 112 may be first written to a file in the database logs and subsequently committed to the database in accordance with data management techniques for enhancing storage operation performance.
[0042] As further illustrated in FIGURE 1 , the destination system 104 comprises a replication module 114 and a destination storage device 116. In certain embodiments, the replication module 114 is configured to monitor and/or manage the copying of data from the source system 102 to the destination system 104, such as data associated with the information obtained by the filter drivers 110. For example, the replication module 114 can comprise any computing device capable of processing data and includes, for example, a server computer, a workstation, a personal computer or the like. In yet other embodiments, the replication module 1 14 is a "dumb" server or terminal that receives and executes instructions from the source system 102.
[0043] The destination storage 116 may include any type of physical media capable of storing electronic data, such as replication data sent from the source system 102. For example, the destination storage 1 16 may comprise magnetic storage or other type(s) of mass storage. In certain embodiments, the destination storage 116 may be internal and/or external to the computing device(s) having the replication module 114.
[0044] In certain embodiments, the source storage 112 and/or the destination storage 1 16 may be implemented as one or more storage "volumes" that include physical storage disks defining an overall logical arrangement of storage space. For instance, disks within a particular volume may be organized as one or more groups of redundant array of independent (or inexpensive) disks (RAID). In certain embodiments, either or both of the storage devices 1 12, 116 may include multiple storage devices of the same or different media.
[0045] As shown, the data replication system 100 further includes a data migration module 118 in communication with the destination storage 1 16. In general, the migration module 118 is configured to copy, or migrate, data from the destination storage 116 to a secondary storage 120. For example, the migration module 118 can selectively archive, back up or otherwise copy certain portions of the replication data on the destination storage 116 to the secondary storage 120. In certain embodiments, the migration module 118 is further configured to truncate data on the destination storage 116.
[0046] In certain embodiments, the migration module 118 is configured to perform file or block-level single instancing, or de-duplication, of the data stored on the destination storage 116. Examples of single instancing methods and structures usable with embodiments of the invention are discussed in U.S. Patent Application No. 12/145,342, filed June 24, 2008, published as U.S. Patent Application Publication No. 2009-0319585 A1 , which is hereby incorporated herein by reference in its entirety to be considered part of this specification. In yet other embodiments, the migration module 118 is configured to perform one or more of the following copy operations: archiving, backup, Hierarchical Storage Management ("HSM") copies, Information Lifecycle Management ("ILM") copies or the like.
[0047] In certain embodiments, the migration module 118 can advantageously replace the copied data on the destination storage 116 with a stub file or like object that indicates the new location of the migrated data on the secondary storage 120. For instance, the stub file can comprise a relatively small, truncated file (e.g., several kilobytes) having the same name as the original file. The stub file can also include metadata that identifies the file as a stub and that can be used by the storage system to locate and restore the migrated data to the destination storage 116 or other location.
[0048] The secondary storage 120 can include any type of physical media capable of storing electronic data, such as the migrated data from the destination storage 116. In certain embodiments, secondary storage 120 comprises media configured for long-term data retention, such as tape media or the like. In yet other embodiments, the secondary storage 120 can comprise a disk or other type of mass storage. For example, in certain embodiments, the secondary storage 120 advantageously comprises a slower access time and/or a less expensive storage medium than the destination storage 116.
[0049] Moreover, although the migration module 1 18 and the secondary storage 120 are illustrated as being external to the destination system 104, it will be understood that either or both of these components can be integrated into the destination system 104. For instance, in certain embodiments the replication module 114 can include the migration module 118, and/or the destination storage 116 can include the secondary storage 120.
[0050] FIGURE 2 illustrates a block diagram of an exemplary embodiment of a destination system 204 that provides for de-duplication of data in a CDR system. For instance, the destination system 204 can be advantageously configured to maintain a replication copy of data from a source system while conserving space used on the destination storage device.
[0051] In certain embodiments, the destination system 204 can be used in the data replication system 100 of FIGURE 1. Thus, to simplify the description, certain components of the destination system 204 of FIGURE 2 will not be redescribed in detail if they were described above. Rather, the components of the destination system 204 will be given a reference numeral that retains the same last two digits as the reference numeral used in data replication system 100 of FIGURE 1 , and the last two digits will be preceded with a numeral "2."
[0052] As shown in FIGURE 2, the destination system 204 comprises a replication agent 230 and one or more processes, such as threads 232, that populate a destination storage 216. In certain embodiments, the replication agent 230 comprises one or more software modules that coordinate the transfer of data from a source system, such as the source system 102 to the destination storage 216. For instance, the replication agent 230 can manage replication based on one or more predefined preferences, storage policies or the like.
[0053] In certain embodiments, the replication agent 230 instantiates an appropriate number of threads, processes, or routines, 232 for copying data from replication log files 233 to the destination storage 216 to maintain a replicated copy of a source storage device. In operation, in certain embodiments, the threads 232 advantageously process or traverse the entries of the replication logs 233 for particular types of data and then copy that data to certain locations on one or more replication volumes based on data paths identified by the replication agent 230 and/or associated with each thread 232.
[0054] For example, in certain embodiments, the replication logs 233 can contain a copy of the data stored on source logs of a client system and/or particular data operations being performed on the source system data. Such replication logs 233 can comprise any type of memory capable of storing data including, for example, cache memory. In certain embodiments, the replication logs 233 may reside on the destination system 204, such as, for example, on the destination storage 216, or at least a portion of the replication logs 233 may be external to the destination system 204. In certain embodiments, once the replication logs 233 have been populated with the data from the source logs, the data on the source logs is available to be erased and/or overwritten to conserve memory space. [0055] In certain embodiments, one thread 232 may write to one or more volumes of the destination storage 216 and/or multiple threads 232 may write to a single volume in parallel. Moreover, each thread 232 can be assigned to a hard- coded path pair, which includes (i) a source path identifying the location on the source storage device associated with a data management operation (e.g., "C:\Folder\") and (ii) a destination path identifying the location on the destination storage 216 to receive the replicated data (e.g., "D:\folder\") from the thread 232.
[0056] The destination system 204 further includes a de-duplication module 218 that traverses the data in the destination storage 216 to identify common data objects within one or more files on the destination storage 216. For instance, in certain embodiments, the de-duplication module 218 performs block- level de-duplication to identify common 64 KB blocks of data on the destination storage 216.
[0057] In certain embodiments, the de-duplication module 218 generates a substantially unique identifier for each 64 KB block, such as by performing a cryptographic hash function (e.g., message-digest algorithm 5 (MD5)), a secure hash algorithm (e.g., SHA-256), a (digital) digital fingerprint, a checksum, combinations of the same or the like. For each block having a matching identifier, the de-duplication module 218 can assume that such blocks contain identical data. For instance, the de-duplication module 218 can generate the substantially unique identifier for each block on-the-fly while traversing the blocks of the destination storage 216.
[0058] In yet other embodiments, the identifier for each block can be calculated by a module other than the de-duplication module 218, such as by a media agent, the replication agent 230 or the like. For instance, the identifier can be generated, in certain embodiments, when the block is initially stored on the destination storage 216, as part of the replication process from the source system 102 to the destination system 104, or at any other time prior to the comparison by the de-duplication module 218.
[0059] To conserve storage space, each set of common or identical blocks of data found in the destination storage 216 can be stored as a single block in the de-duplication storage 220. Moreover, the de-duplication module 218 can replace each of the common blocks on the destination storage 216 with a substantially smaller stub file that indicates that the actual data block has been copied to the de- duplication storage 220.
[0060] For instance, as shown in FIGURE 2, the destination storage 216 comprises three files, File A 234, File B 236 and File C 238. Two of the files, File A 234 and File C 238, have a common data block, which has been replaced with a de- duplication stub file (i.e., Stub X 240) by the de-duplication module 218. This common data block is stored in the de-duplication storage 232 as common block 244.
[0061] In certain embodiments, the de-duplication stub file 240 is distinguishable from other stub files via a tag, a header entry or other like identifier. Such identification can be advantageous in a replication system, such as the destination system 204, so that the system can distinguish between stubs that have been replicated to the destination storage 216 from a source storage device and stubs that represent actual data on the destination storage 216 that has been archived, de-duplicated or otherwise migrated from the destination storage 216 to de-duplication storage 220.
[0062] For example, File B 242 on the destination storage 216 also includes a stub file (i.e., Stub Y 242) that has been replicated from a source storage device. Thus, in certain embodiments, Stub Y 242, a non de-duplication stub file, does not necessarily correspond to a common block stored on the de-duplication storage 220 and does not include the same tag or other identifier contained by the de-duplication stub files.
[0063] In certain embodiments, the de-duplication module 218 further maintains a tag index 239 that tracks tag values used by stubs on the destination storage 216. For instance, the index 239 can indicate which tag value(s) are assigned to de-duplication stub files (e.g., Stub X 240) and/or replicated stub files (e.g., Stub Y 242). Thus, in such embodiments, the de-duplication module 218 can access the index 239 any time it encounters a stub file on the destination storage 216 based on the tag value contained by the stub. In yet other embodiments, the index 239 can be maintained on the destination storage 216, the de-duplication storage 220 or other component of the destination system 204.
[0064] Although not illustrated in FIGURE 2, the destination system 204 can further comprise a de-duplication database that associates de-duplication stub files 240 on the destination storage 216 with their corresponding common block(s) 244 on the de-duplication storage 220. For example, the de-duplication module 218 can be configured to maintain and/or access a table, index, linked list or other structure that stores entries for each of the de-duplication stub files 240 on the destination storage 216 and the location of the corresponding common block 244 on the de-duplication storage 220.
[0065] Although the stub files illustrated in FIGURE 2 have been described with reference to common data blocks, in other embodiments of the invention the stub files can be used to identify other identical data objects, such as files, strings or the like. Moreover, the common data objects need not be limited to 64 KB but may be larger or smaller depending on the specifications (e.g., operating system) of the applicable system.
[0066] The de-duplication module 218 can further be configured to restore and/or recall data from the de-duplication storage 220. For instance, as discussed in more detail below, the de-duplication module 218 can advantageously retrieve the de-duplication or archived data in response to a request to access the replication data on the destination storage 216.
[0067] Furthermore, although the destination system 204 of FIGURE 2 has been described with reference to de-duplication of data, it will be understood from the disclosure herein that other embodiments of the destination system 204 can be configured to perform other migration processes, as disclosed above, that result in the copying and/or stubbing of data.
[0068] As is further illustrated, in certain embodiments the replication agent 230 can communicate directly with the de-duplication module 218. For instance, the two components can schedule access to replication data on the destination storage 216, and/or the replication agent 230 can instruct the de- duplication module to restore data, such as the common block 244, from the de- duplication storage 220 to the destination storage 216.
[0069] FIGURE 3 illustrates an exemplary de-duplication stub file 340 usable with the destination system 204 of FIGURE 2. In general, the de-duplication stub file 340 contains information that is necessary to locate and/or recall a migrated file or data object. In certain embodiments, the de-duplication stub file 340 comprises a self-describing stub that distinguishes the stub 340 from other types of stubs, such as those that have been replicated from a source system in a replication system.
[0070] For instance, in certain embodiments, the de-duplication stub file 340 comprises a 4 KB file that represents a common 64 KB block of data. In certain embodiments, the de-duplication module 218 or other like module utilizes the data within the stub 340 to retrieve the 64 KB data block in response to a data modification or restore operation request for the replication data. For example, the de-duplication stub file 340 can reference a block offset of the corresponding 64 KB data block 244 within the de-duplication storage 220. In yet other embodiments, the stub file 340 can represent an entire file or data object rather than a fixed block size.
[0071] For exemplary purposes, the de-duplication stub file 340 is shown in FIGURE 3 with a plurality of fields. It will be understood that the illustrated stub file 340 is merely exemplary and that one or more of such fields can be optional and/or dependent on the type of operating system(s) used in the replication system.
[0072] As shown, the stub file 340 includes a tag value field 352. In certain embodiments, the tag value 352 distinguishes the de-duplication stub file 340 from regular stub files. For instance, in certain embodiments, the tag value 352 can be one of two preset values: a first value that identifies the stub file as a de- duplication stub file or a second value associated with a replicated stub file that represents a file migrated from a source storage device (e.g., a stub file that was itself replicated in a copy operation). For example, the tag value 352 could comprise a single bit to distinguish the two types of stub files.
[0073] In yet other embodiments, the tag value 352 can comprise a unique, substantially unique or other identifier (e.g., an alphanumeric value) that can be used in accessing a lookup table or like structure (e.g., index 239) to determine if the stub file 340 is a de-duplication stub file or a regular stub file.
[0074] A time stamp field 354 can store an indication of when the represented file was migrated to secondary storage and replaced with the stub file. The file size field 356 can indicate the size of the file and/or block represented by the stub file 340. In environments wherein all stub files reference a predetermined block size, the stub file 340 may not have such a field.
[0075] A file name field 358 indicates the name of the file referenced by the stub file 340. In certain embodiments, the stub file 340 itself is assigned the same name as the migrated file, thereby presenting the appearance that the actual file is located in the particular storage location.
[0076] The stub file 340 further includes a file location information field 360 containing data for locating and/or retrieving the migrated file. For example, the field 360 can comprise an archive file identifier, volume identifier, one or more offset values, a pathname, an address, combinations of the same or the like. It will be understood from the disclosure herein that the field 360 is illustrated as one field for simplification purposes and that other embodiments of the stub file 340 can comprise multiple fields (adjacent or non-adjacent) with information relating to the location of the migrated file. In general, the field 360 comprises enough information such that a migration module (e.g., migration module 118) can access the migrated file.
[0077] A checksum field 362 includes data for verifying that a restored file is not corrupted and/or accurately represents the data object that was migrated. For instance, when restoring a migrated file or object, the value in the checksum field 362 of the corresponding stub file 340 can be compared with a checksum of the restored file to validate the data.
[0078] The stub file 340 further includes a flag field 364 that contains other information regarding the migrated file or data object. For example, the flag field 364 can indicate whether or not the migrated file is encrypted, compressed or the like. In yet other embodiments, the stub file 340 can function without the flag field 364. [0079] Although the de-duplication stub file 340 has been described with respect to particular embodiments, it will be understood from the disclosure herein that the stub file 340 can comprise more or fewer fields or information than what is illustrated in FIGURE 3. Moreover, the stub file 340 may comprise a file between 51 1 bytes and 16 KB in size.
[0080] FIGURES 4-6 illustrate three flowcharts of an exemplary embodiment of a method for de-duplicating, or single instancing, replicated data in a data replication system, such as a CDR system. In general, the illustrated de- duplication method provides for the migrating and stubbing of common data objects on a destination storage device without significantly impacting the performance of data replication to the destination storage device. For exemplary purposes, the blocks of the flowcharts of FIGURE 4-6 will be described with reference to the components of the destination system 204 of FIGURE 2.
[0081] With respect to FIGURE 4, a flowchart is shown of an exemplary embodiment of a scan process 400 of a de-duplication method for the destination system 204. In general, the scan process 400 involves identifying common data objects within replication data of a destination storage device.
[0082] At Block 405, the replication agent 230 and thread(s) 232 replicate data from a source storage device to the destination storage device 216. In certain embodiments, this block continues to be executed throughout the scan process 400 and/or other processes of FIGURES 5 and 6. In certain embodiments, the replication of data to the destination storage 216 is given priority over one or more other data operations of the de-duplication method described below in order to maintain substantial coherency between the replicated data and the source system data. Moreover, the de-duplication of the replicated data can be performed without significantly impacting the primary data replication process.
[0083] At Block 410, the de-duplication module 218 receives a command to archive data on the destination machine. In certain embodiments, the de- duplication module 218 initiates archiving based on a storage policy and/or user input. For instance, the storage policy can dictate that archiving be performed daily or on another periodic basis. In yet other embodiments, archiving can be performed based on an available storage capacity of the destination storage 216.
[0084] At Block 415, the de-duplication module 218 scans the destination storage 216 to identify common data objects. For instance, the de-duplication module 218 can identify 64 KB data blocks on the destination storage 216, such as from different files, that comprise identical data. In certain embodiments, the de- duplication module 218 can perform a cryptographic hash function or other algorithm, as discussed previously, to generate a substantially unique identifier based on the data contained in each block. For each block having the same identifier, the de-duplication module 218 can identify the block as a candidate for de- duplication together with the other like blocks, such as through a flag or other marker, listing the blocks in a data structure, or the like.
[0085] The term "data object" as used herein is a broad term and is used in its ordinary sense and includes, without limitation, any distinct or identifiable grouping of electronic information that exists in storage and/or on which operations can be performed. For example, a data object can comprise a data file, a data block, a program, an array, any other collection of electronic information or the like.
[0086] In certain embodiments, in order to avoid excessive restore operations on migrated data of secondary storage 220, it is preferred to not archive data that has a relatively high likelihood of being accessed in the future. Thus, during the scanning, the de-duplication module 218 can identify those common data objects on the destination storage 216 that have not been modified and/or accessed within a predetermined period of time (e.g., within the last seven days).
[0087] At Block 420, the process 400 records the scan time of the destination data. As discussed in more detail below with respect to FIGURE 6, the scan time can advantageously be used to determine whether or not a particular data object should be stubbed. It will be understood that Block 420 can comprise recording of individual scan times for each data object on the destination storage 216 or the time that the scan process was initiated for the entire set of replication data. [0088] At Block 425, the de-duplication module 218 maintains a list or other record of the common data objects that were identified on the destination storage as being candidates for de-duplication.
[0089] Although the scan process 400 has been described with respect to particular blocks, other embodiments of the process can include different and/or fewer blocks than those described above. For instance, in certain embodiments, the process 400 can conduct an initial scan of the destination storage 216 for all data objects that have not been modified and/or accessed for a predetermined period of time (e.g., more than seven days), which data objects are identified as candidates for archiving or migration to secondary storage. A second pass is then made by the de-duplication module 218 through these identified data objects to locate common data objects that can be de-duplicated to the de-duplication storage 220.
[0090] Following the scan process 400, the de-duplication module 218 commences with the archive process portion of the de-duplication method. FIGURE 5 illustrates a flowchart of an exemplary embodiment of an archive process 500 of the de-duplication method for a replication system. In general, this archive process 500 involves determining appropriate times to migrate or copy replication data from the destination storage 216.
[0091] At Block 505, the de-duplication module 505 accesses a common data object identified in the list created in Block 425. Before archiving each data object, the de-duplication module 218 at Block 510 determines if the particular data object is currently in use by a CDR process (e.g., is being modified based on changes to source system data). If the data object is currently in use, the de- duplication module 515 pauses the archive process 500 until the CDR process has completed (Block 515). In yet other embodiments, the de-duplication module 218 can move to a next identified data object for archiving.
[0092] At Block 520, if the current data object is not in use by a CDR process, the de-duplication module 218 archives the current data object in secondary storage 220. In certain embodiments, Block 520 comprises storing only a single common block 244 in the de-duplication storage 220 for identical data blocks within the replication data set. [0093] The archive process 500 then determines if there are additional data objects on the destination storage 216 that have been identified for archiving (Block 525). If there are additional data objects, the de-duplication module 218 moves to the next data object (Block 530), and the archive process 500 returns to Block 510. Otherwise, the archive process 500 completes, and the de-duplication method commences with stubbing.
[0094] Although the process 500 has been described with reference to "archiving," it should be understood that the process 500 can apply similarly to migrating, de-duplicating, single instancing or other types of copy operations. Rather, the term "archiving" is used with respect to process 500, and the remainder of the de-duplication process, for simplification purposes.
[0095] FIGURE 6 illustrates a flowchart of an exemplary embodiment of a stubbing process 600 usable with the destination system 204. In general, the process 600 can be performed on each of the data objects archived by the process 500 to replace the objects with stub files or like truncation objects in order to conserve space on a destination storage device of a replication system.
[0096] In particular, in certain circumstances, the data of a replicated file can change on the destination storage 216 between the time of a scan of the destination storage (Block 415) and the time at which the data object is to be stubbed. Thus, the process 600 advantageously accounts for such data modifications by requiring the de-duplication module 218 to first access the metadata of each data object on the destination storage 216 that has been archived on secondary storage 220 to determine a last accessed and/or modified time for the data object (Block 605).
[0097] In certain further embodiments, such data objects can be tagged or otherwise identified or recorded during the scan process 400 and or archive process 500 such that the de-duplication module 218 can quickly locate the data objects during the process 600.
[0098] If the last accessed and/or modified time of the particular data object is after the recorded scan time (Block 610), the de-duplication module 218 does not proceed with replacing the data object with a stub file (Block 615). In such situations, it is possible that the data object archived on secondary storage 220 is no longer consistent with the data object on the destination storage 216.
[0099] In yet other embodiments, the process 600 determines at Block 610 if the last accessed and/or modified time is after a time that the data object was archived or copied instead of the scan time. If so, the process 600 continues with Block 615.
[0100] If the data object has not been accessed and/or modified since the scan time and/or archive time, the de-duplication module 218 replaces the archived data object with a stub file, such as the de-duplication stub file 340 illustrated in FIGURE 3. As discussed above, the stub file can advantageously be a self- describing stub file that is used to identify archived and/or de-duplicated data and can differ in content and/or structure from other types of stub files. Moreover, in the de-duplication environment, multiple data objects on the destination storage 216 can be replaced with the same stub file or a stub file with the same tag, which references a common data block on the secondary storage 220. Once the stubbing process 600 has completed processing each of the identified data objects, the de- duplication method 600 is completed.
[0101] In yet other embodiments of the invention, systems and methods can immediately replace archived data objects with stub files on the destination storage 216 prior to continuing with scanning the entire storage device. In such embodiments, the likelihood of the data object being accessed and/or modified between the time of the scan and the time of stubbing is decreased substantially.
[0102] In certain embodiments of the data replication system 100, the source system 102 communicates with the associated destination system 104 to verify that the two systems are synchronized. For instance, the source system 102 may receive from the destination system 104 an identification (e.g., unique serial number) of the data operation currently being replicated by the destination system. The source system 102 may then compare the received identification with the data operation being forwarded to the source storage 112.
[0103] In order to ensure that the data modifications are being made to the same data on the destination system as the source system, certain embodiments of the invention are configured to account for the use of stub files in the replication data. FIGURE 7 illustrates a flowchart of an exemplary embodiment of a synchronization process 700 usable in a data replication environment. In particular, the synchronization process 700 is capable of modifying files on a destination storage device of a replication system that have been stubbed according to a de-duplication policy, archive policy, migration policy or the like. For exemplary purposes, the synchronization process 700 will be described with reference to the components of the data replication system 100 of FIGURE 1.
[0104] At Block 705, the synchronization process 700 identifies a modification to data on the source system 102. For instance, a log file indicative of data modifications of the source system 102 data can be sent over a network to the destination system 104 via a CDR process. Examples of CDR processes and configurations usable with embodiments of the invention are described in U.S. Patent No. 7,651 ,593, issued January 26, 2010, which is hereby incorporated herein by reference in its entirety.
[0105] In Certain embodiments, the replication module 1 14 receives the command to modify the replication data on the destination storage 116 based on changes made to the source data (Block 710). Prior to doing so, the replication module 114 determines if the replication data to be modified includes a stub file (Block 715). For instance, the replication module 114 can read metadata of the replication data to determine if any of the data comprises a stub file. In yet other embodiments, the replication module 114 can access an index or cache that maintains a record of the stub files within the replication data. Such a cache or index may be maintained, for example, by the migration module 118.
[0106] If the replication data includes a stub file, the process 700 continues with Block 720 to determine if the stub file includes a tag or other predetermined value (e.g., via tag value 352). In certain embodiments, the tag value distinguishes the particular stub file as being associated with replication data that has been migrated, archived, de-duped or otherwise moved to secondary storage 120 by the migration module 1 18 as opposed to a stub file replicated from the source storage 112. For instance, the tag value can comprise an identifier that is compared with a list of identifiers in a migration table or index to determine if the stub file is a de-duplication stub file or a replicated stub file.
[0107] If the stub file does include the tag value, the process 700 recalls the actual data object(s) referenced by the stub file and restores the data to the destination storage 116. In certain embodiments, the replication module 114 can invoke the migration module 118 to recall the data. In certain further embodiments, the recall function can take priority over other jobs being performed or scheduled to be performed by the migration module 1 18 because the CDR process is halted until the pertinent replication data is recalled and restored to the destination storage 116 from secondary storage 120.
[0108] Once the data is restored from secondary storage 120, or if the replication data does not include (tagged) stub files, the process 700 moves to Block 730 to apply the requested modification to the replication data, after which the process 700 terminates for the particular requested modification.
[0109] The tagged stub files can advantageously be used in a variety of other processes. FIGURE 8 illustrates a flowchart of an exemplary embodiment of a process 800 for restoring data from one or more snapshots in a CDR system. In general, the restore process 800 is capable of restoring data from a snapshot including one or more stub files representing replication data that has been de- duplicated, archived, migrated or the like. For exemplary purposes, the restore process 800 will be described with reference to the components of the data replication system 100 of FIGURE 1.
[0110] At Block 805, the replication module 114 identifies a point in time when the data of destination storage device 1 16 represents a "known good," "stable" or "recoverable" state. In certain embodiments, such a state may be defined as when particular computing operations of the application(s) 108 are complete to a point such that further operation, recovery and/or rolling back of the application(s) 108 may occur, based on the recorded or replicated data, without the loss of critical information or computing operations needed for operation of the application(s) 108. This point of referential integrity is generally referred to herein as a "known good" state of the application data. [0111] In certain embodiments of the invention, a consistency point marker (e.g., logical marker or tag) in one or more CDR log files can identify when replication data represents a known good state. For instance, such a marker can be generated and/or inserted in the log files by the filter driver 110 and/or a data agent denoting that a "consistency point" or "consistency recovery point" has been reached. In some embodiments, the consistency point marker further indicates the time at which the application 108 was in the known good state. Additional details on such consistency point markers are disclosed in U.S. Patent No. 7,651 ,593, issued January 26, 2010, which is hereby incorporated herein by reference in its entirety.
[0112] In certain embodiments, the consistency point marker is replicated to the destination system 104 along with replicated data. As the replication marker 114 comes across the consistency point marker, it knows that the replication data, at that point in time, represents a known good state. Based on the consistency point marker, the replication module 114 can advantageously perform a snapshot on the replication data (Block 810). As a result, the snapshot represents a point-in-time copy of the replication data in a known good state.
[0113] At Block 815, the process 800 later receives a request to restore the data that was the subject of the snapshot. For instance, the data restore request may be in response to a system crash or failure, and can involve restoring the storage device or volume to a previous or most recent known good state. In certain embodiments, the restore request comprises the replication module 114 or other component mounting the snapshot to obtain a full logical file system of the replication data at the time the snapshot was taken.
[0114] The replication module 1 14 then identifies whether or not the snapshot comprises any stub files (Block 820). If the snapshot comprises stub files, the process 800 determines if any of the stub files includes a particular tag or like identifier (Block 825). For instance, the replication module 1 14 can determine if a tag value of the stub file matches one or more predetermined values that identify stub files as representing migrated, archived or de-duplicated data as opposed to a stub file that was replicated from the source system 102. [0115] If the stub file has such a tag or identifier, the process 800 recalls the actual data represented by the stub file to a staging area that serves as a temporary repository for the recalled data while the restore process 800 is being performed (Block 830). For instance, the replication module 114 and/or migration module 118 can recall archived data blocks to an area on the destination storage 116 or the secondary storage 120. For example, this staging area can be a temporary folder created to receive the recalled data for a brief duration until it is restored, after which the temporary folder can be deleted.
[0116] After the archived data has been recalled, or if the snapshot does not include any (tagged) stub files, the replication module 1 14 restores the data from the snapshot (Block 835). While performing the restore, when the replication module 114 comes across a stub file referenced by the snapshot, the replication module 114 can restore the appropriate data from the staging area rather than restore the stub file.
[0117] Although the process 800 has been described with reference to particular arrangements, other embodiments of the process 800 can have more or fewer blocks than those described above. For instance, the process 800 can be performed on snapshots that do not represent the replication data in a known good or recoverable state.
[0118] In certain embodiments of the invention, data replication systems and methods may be used in a modular storage management system, embodiments of which are described in more detail in U.S. Patent No. 7,035,880, issued April 5, 2006, which is hereby incorporated herein by reference in its entirety. For example, the data replication system may be part of a storage operation cell that includes combinations of hardware and software components directed to performing storage operations on electronic data. Exemplary storage operation cells usable with embodiments of the invention include CommCells as embodied in the QNet storage management system and the QINETIX or SIMPANA storage management systems offered by CommVault Systems, Inc. (Oceanport, New Jersey), and as further described in U.S. Patent No. 7,454,569, issued November 18, 2008, which is hereby incorporated herein by reference in its entirety. [0119] Systems and modules described herein may comprise software, firmware, hardware, or any combination(s) of software, firmware, or hardware suitable for the purposes described herein. Software and other modules may reside on servers, workstations, personal computers, computerized tablets, PDAs, and other devices suitable for the purposes described herein. Software and other modules may be accessible via local memory, via a network, via a browser, or via other means suitable for the purposes described herein. Data structures described herein may comprise computer files, variables, programming arrays, programming structures, or any electronic information storage schemes or methods, or any combinations thereof, suitable for the purposes described herein. User interface elements described herein may comprise elements from graphical user interfaces, command line interfaces, and other interfaces suitable for the purposes described herein.
[0120] Embodiments of the invention are also described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the acts specified in the flowchart and/or block diagram block or blocks.
[0121] These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to operate in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the acts specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operations to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the acts specified in the flowchart and/or block diagram block or blocks.
[0122] While certain embodiments of the inventions have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the disclosure. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the disclosure. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the disclosure.

Claims

WHAT IS CLAIMED IS:
1. A method for performing data management operations in a computer network, the method comprising:
monitoring operations associated with a source computing device, the operations operative to write data to a source storage device;
copying the data to a destination storage device based at least in part on the operations, the data comprising at least one first stub file;
scanning the data of the destination storage device to identify a common data object repeated between multiple portions of the data on the destination storage device;
archiving a copy of the common data object on a second storage device;
determining a last access time of each of the multiple data portions of the destination storage device having the common data object; and
for each of the multiple data portions having a last access time at or before the time of the archiving of the copy of the common data object, replacing the common data object of the particular data portion with a second stub file, wherein the second stub file comprises a tag value not possessed by any of the at least one first stub file, and wherein the second stub file comprises information indicative of a location of the copy of the common data object.
2. The method of Claim 1 , wherein said archiving comprises archiving only a single copy of the common data object on the second storage device.
3. The method of either of Claims 1 or 2, wherein the at least one first stub file represents data archived from the source storage device.
4. The method of any of Claims 1 through 3, wherein determining a last access time comprises determining a last time each of the multiple data portions having the common data object was modified.
5. The method of any of Claims 1 through 4, wherein the common data object comprises a 64 kilobyte data block.
6. The method of any of Claims 1 through 5, wherein the tag value comprises a unique alphanumeric value.
7. The method of any of Claims 1 through 6, wherein said copying comprises processing at least one log file having a plurality of log entries indicative of said operations to replay with one or more routines the operations on the destination storage device.
8. The method of any of Claims 1 through 7, wherein each of the multiple portions of the data comprises a different data file.
9. A continuous data replication system comprising:
a first storage device that stores data write operations from at least one computer application at a first location, the first location comprising at least one first stub file;
at least one module configured to monitor the data write operations and to generate first log entries based on the data write operations;
a second storage device comprising second log entries, wherein the second log entries comprise copies of at least a portion of the first log entries; a replication module in communication with the second storage device and configured to process the second log entries to modify replicated data stored in a second location to substantially mirror the data of the first location, the replicated data comprising a copy of said at least one first stub file; and a migration module configured to archive select data objects of the replicated data to a third location and to replace each of the select data objects of the replicated data with a second stub file, wherein each of the second stub files comprises an identifier not possessed by the at least one first stub file and wherein each of the second stub files comprises information indicative of a location of the archived copy of the data object at the third location.
10. The continuous data replication system of Claim 9, wherein the migration module is configured to de-duplicate common ones of the select data objects of the replicated data.
11. The continuous data replication system of either of Claims 9 or 10, further comprising an index identifying the second stub files in the replicated data.
12. The continuous data replication system of any of Claims 9 through 11 , further comprising a cache identifying the second stub files in the replicated data.
13. The continuous data replication system of any of Claims 9 through 12, wherein the migration module is further configured to archive the select data objects based on one or more storage policies.
14. The continuous data replication system of Claim 13, wherein the one or more storage policies comprises an information lifecycle management (ILM) policy.
15. The continuous data replication system of any of Claims 9 through 14, wherein the migration module is further configured to postpone said archiving when the select data objects are being accessed by the replication module.
16. The continuous data replication system of any of Claims 9 through 15, wherein each of said at least one first stub file and the second stub files comprises a four kilobyte file.
17. The continuous data replication system of any of Claims 9 through 16, wherein the identifier comprises a tag value.
18. The continuous data replication system of any of Claims 9 through 17, further comprising an index accessible by the migration module, wherein the index maintains a list of each identifier of the second stub files.
19. A continuous data replication system comprising:
means for storing data write operations from at least one computer application at a first location, the first location comprising at least one first stub file;
means for monitoring the data write operations and for generating first log entries based on the data write operations;
means for receiving second log entries, wherein the second log entries comprise copies of at least a portion of the first log entries; means for processing the second log entries to modify replicated data stored in a second location to substantially mirror the data of the first location, the replicated data comprising a copy of said at least one first stub file; and means for archiving select data objects of the replicated data to a third location and for replacing each of the select data objects of the replicated data with a second stub file, wherein each of the second stub files comprises an identifier not possessed by the at least one first stub file and wherein each of the second stub files comprises information indicative of a location of the archived copy of the data object at the third location.
20. The continuous data replication system of Claim 19, wherein the data block is sixty-four kilobytes in size.
21. A method for performing data management operations on replicated data of a destination storage device, the method comprising:
processing, with one or more routines, at least one log file having a plurality of log entries indicative of operations generated by a computer application executing on a source system, the operations being directed to data on a source storage device; and
replaying, with the one or more routines, the operations on a destination storage device to modify replication data on the destination storage device, wherein said replaying further comprises,
identifying a plurality of stub files within the replication data, wherein the plurality of stub files comprises one or more first stub files each comprising a predetermined tag value, and wherein the plurality of stub files further comprises one or more second stub files that do not comprise the predetermined tag value,
for each of the one or more first stub files, recalling from a secondary storage one or more data objects represented by each of the one or more first stub files and replacing each of the one or more first stub files with the corresponding data object prior to modifying the replication data, and modifying the replication data on the destination storage device to match the data on the source storage device.
22. The method of Claim 21 , wherein the one or more first stub files represent one or more data objects that were migrated to the secondary storage based on one or more storage policies.
23. The method of either of Claims 21 or 22, wherein multiple ones of the one or more first stub files correspond to a single de-duplication data object stored in the secondary storage.
24. The method of Claim 23, additionally comprising storing multiple de- dupiication data objects to the secondary storage, wherein each of the de- duplication data objects comprises a data block of the same size.
25. The method of any of Claims 21 through 24, additionally comprising creating the one or more first stub files with a migration module.
26. The method of Claim 25, wherein said recalling further comprises obtaining with the migration module the one or more data objects from the secondary storage.
27. The method of any of Claims 21 through 26, wherein the operations comprise data modification operations and file attribute modification operations.
28. The method of any of Claims 21 through 27, wherein said identifying comprises comparing a tag value of each of the plurality of stub files with values in an index to identify the one or more first stub files comprising the predetermined tag value.
29. A destination system for performing data replication in a computer network, the destination system comprising:
a destination storage device storing replication data having a plurality of stub files, the plurality of stub files comprising one or more first stub files each comprising at least one predetermined tag value and one or more second stub files that do not comprise the at least one predetermined tag value; at least one replication log file comprising a plurality of log entries indicative of data operations generated by a computer application for execution on a source storage device;
a replication module configured to traverse the plurality of log entries in the at least one replication log file and to copy the log entries to execute the data operations on replication data of the destination storage device; and a migration module configured to restore copied data from a secondary storage device to the destination storage device based on the one or more first stub files,
and wherein the replication module is further configured to identify the one or more first stub files and instruct the migration module to replace the one or more first stub files with the copied data from the secondary storage device prior to executing the data operations on the replication data.
30. The destination system of Claim 29, wherein the migration module is further configured to de-duplicate the replication data to the secondary storage device.
31. The destination system of either of Claims 29 or 30, wherein the at least one predetermined tag value is stored in an index.
32. The destination system of any of Claims 29 through 31 , wherein the replication data comprises application-specific data.
33. The destination system of any of Claims 29 through 32, wherein the copied data on the secondary storage device comprises a sixty-four kilobyte data block for each of the first stub files.
34. The destination system of Claim 33, wherein each of the first stub files comprises a four kilobyte file.
35. The destination system of either of Claims 33 or 34, where at least two of the first stub files correspond to the same data block on the secondary storage device.
36. The destination system of any of Claims 29 through 35, wherein the second stub files represent at least stub files replicated from the source storage device.
37. The destination system of any of Claims 29 through 36, wherein the destination storage device comprises a faster access time than the secondary storage device.
38. A destination system for performing data replication in a computer network, the destination system comprising:
means for storing replication data having a plurality of stub files, the plurality of stub files comprising one or more first stub files each comprising at least one predetermined tag value and one or more second stub files that do not comprise the at least one predetermined tag value;
means for receiving a plurality of log entries indicative of data operations generated by a computer application for execution on a source storage device;
means for traversing the plurality of log entries in said receiving means and for copying the log entries to execute the data operations on replication data of said storing means; and
means for restoring copied data from a secondary storage device to said storing means based on the one or more first stub files,
and wherein said traversing means further identifies the one or more first stub files and instructs said restoring means to replace the one or more first stub files with the copied data from the secondary storage device prior to executing the data operations on the replication data.
39. The destination system of Claim 38, wherein each of the one or more second stub files comprises a tag value different than the at least one predetermined tag value.
40. The destination system of either of Claims 38 or 39, further comprising means for capturing a snapshot of the replication data in a known good state.
41. A method for restoring data in a continuous data replication system, the method comprising:
receiving, with a first computing device, a request to restore data of one or more snapshots of replication data of a destination storage device, the replication data having a plurality of first stub files replicated from a source system and a plurality of second stub files indicative of select data blocks of the replication data copied to a secondary storage device from the destination storage device;
mounting the one or more snapshots;
identifying the second stub files captured by the one or more snapshots;
recalling to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files; and following said recalling, restoring the replication data from the one or more snapshots, the restored data comprising each of the first stub files and comprising none of the second stub files.
42. The method of Claim 41 , wherein said identifying comprises identifying a tag associated with each of the second stub files but not associated with any of the first stub files.
43. The method of either of Claims 41 or 42, wherein the staging area is located on the secondary storage device.
44. The method of either of Claims 41 or 42, wherein the staging area is located on the destination storage device.
45. The method of any of Claims 41 through 44, wherein multiple ones of said second stub files reference a common data block on the secondary storage device.
46. The method of any of Claims 41 through 45, wherein the replication data is application-specific data.
47. The method of Claim 46, wherein the one or more snapshots are associated with a time of a known good state of the application-specific data.
48. The method of Claim any of Claims 41 through 47, further comprising generating the one or more snapshots of the replication data at a time identified by a consistency point marker created by the source system.
49. A system for restoring data in a continuous data replication environment, the system comprising: a first storage device comprising data replicated from a source storage system, the replicated data comprising first stub files replicated from the source storage system and second stub files indicative of select data blocks of the replicated data copied to a secondary storage device;
a restore module configured to mount a snapshot of the replicated data, the snapshot representing a point-in-time image of the replicated data, wherein the restore module is further configured to identify the second stub files captured by the one or more snapshots; and
a migration module in communication with the restore module, the migration module being configured to recall to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files,
and wherein the restore module is further configured to restore the replication data represented by the snapshot, the restored data comprising each of the first stub files and comprising none of the second stub files.
50. The system of Claim 49, wherein the second stub files comprise priority tag information not contained by any of the first stub files.
51. The system of Claim either of Claims 49 or 50, wherein the snapshot represents application data in a known good state.
52. The system of Claim 51 , wherein the snapshot is associated with a time at which the application data on a source storage device was in the known good state.
53. The system of Claim 52, further comprising a replication module including the restore module, the replication module being configured to generate the snapshot.
54. The system of any of Claims 49 through 53, wherein first storage device includes the staging area.
55. The system of any of Claims 49 through 54, wherein the first stub files represent data archived from the source storage system.
56. The system of any of Claims 49 through 55, wherein the migration module is configured to recall from the secondary storage device a single data block for multiple ones of the second stub files.
57. The system of any of Claims 49 through 56, wherein the restored replication data includes the select data blocks from the secondary storage device.
58. A system for restoring data in a continuous data replication environment, the system comprising:
means for storing data replicated from a source storage system, the replicated data comprising first stub files replicated from the source storage system and second stub files indicative of select data blocks of the replicated data copied to a secondary storage device;
means for mounting a snapshot of the replicated data, the snapshot representing a point-in-time image of the replicated data, wherein said mounting means further identifies the second stub files captured by the one or more snapshots; and
means for recalling to a staging area the select data blocks from the secondary storage device corresponding to each of the identified second stub files, and wherein said mounting means further restores the replication data represented by the snapshot, the restored data comprising each of the first stub files and comprising none of the second stub files.
59. The system of Claim 58, wherein the restored data comprises each of the select data blocks.
60. The system of either of Claims 58 or 59, further comprising means for replicating the data from the source storage system to said storing means.
PCT/US2011/030396 2010-03-30 2011-03-29 Stubbing systems and methods in a data replication environment WO2011123471A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US12/749,953 2010-03-30
US12/749,949 2010-03-30
US12/750,067 2010-03-30
US12/749,953 US8352422B2 (en) 2010-03-30 2010-03-30 Data restore systems and methods in a replication environment
US12/749,949 US8725698B2 (en) 2010-03-30 2010-03-30 Stub file prioritization in a data replication system
US12/750,067 US8504515B2 (en) 2010-03-30 2010-03-30 Stubbing systems and methods in a data replication environment

Publications (1)

Publication Number Publication Date
WO2011123471A1 true WO2011123471A1 (en) 2011-10-06

Family

ID=44712593

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2011/030396 WO2011123471A1 (en) 2010-03-30 2011-03-29 Stubbing systems and methods in a data replication environment

Country Status (1)

Country Link
WO (1) WO2011123471A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060129537A1 (en) * 2004-11-12 2006-06-15 Nec Corporation Storage management system and method and program
US20070179990A1 (en) * 2006-01-31 2007-08-02 Eyal Zimran Primary stub file retention and secondary retention coordination in a hierarchical storage system
US20070185938A1 (en) * 2005-12-19 2007-08-09 Anand Prahlad Systems and methods for performing data replication
US20080229037A1 (en) * 2006-12-04 2008-09-18 Alan Bunte Systems and methods for creating copies of data, such as archive copies
US20090150462A1 (en) * 2007-12-07 2009-06-11 Brocade Communications Systems, Inc. Data migration operations in a distributed file system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060129537A1 (en) * 2004-11-12 2006-06-15 Nec Corporation Storage management system and method and program
US20070185938A1 (en) * 2005-12-19 2007-08-09 Anand Prahlad Systems and methods for performing data replication
US20070179990A1 (en) * 2006-01-31 2007-08-02 Eyal Zimran Primary stub file retention and secondary retention coordination in a hierarchical storage system
US20080229037A1 (en) * 2006-12-04 2008-09-18 Alan Bunte Systems and methods for creating copies of data, such as archive copies
US20090150462A1 (en) * 2007-12-07 2009-06-11 Brocade Communications Systems, Inc. Data migration operations in a distributed file system

Similar Documents

Publication Publication Date Title
US9483511B2 (en) Stubbing systems and methods in a data replication environment
US8352422B2 (en) Data restore systems and methods in a replication environment
US8725698B2 (en) Stub file prioritization in a data replication system
US11768800B2 (en) Archiving data objects using secondary copies
US11640338B2 (en) Data recovery operations, such as recovery from modified network data management protocol data
US11263173B2 (en) Transaction log index generation in an enterprise backup system
US9495382B2 (en) Systems and methods for performing discrete data replication
US9396244B2 (en) Systems and methods for managing replicated database data
US10831608B2 (en) Systems and methods for performing data management operations using snapshots
US20200192899A1 (en) Query caching during backup within an enterprise information management system
US20120084519A1 (en) Systems and methods for retaining and using data block signatures in data protection operations
WO2011123471A1 (en) Stubbing systems and methods in a data replication environment

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11763338

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11763338

Country of ref document: EP

Kind code of ref document: A1