Methods, computer program products, computer systems, and the like, which provide for the performance of a targeted backup operation, are disclosed. Such a targeted backup operation is performed on a backup that comprises a plurality of data blocks. The data blocks, in turn, comprise an in-use data block and an unused data block. The targeted backup operation comprises performing a backup operation on the in-use data block.
|
1. A method comprising:
accessing a backup of a construct of an application, wherein
the construct comprised
a plurality of data blocks, and
a data structure,
the backup was produced by an original backup operation that used a first backup technique, and
the first backup technique backed up the plurality of data blocks without regard to whether each of the plurality of data blocks was in-use or unused by the application at a time at which the original backup operation was performed;
retrieving the data structure from the backup, wherein
as a result of performance of the original backup operation, the backup comprises
a data store comprising the plurality of data blocks, and
the data structure, and
the data structure comprises
status information representing whether each data block of the plurality of data blocks was in-use or unused by the application at the time at which the original backup operation was performed; and
performing a targeted backup operation on the backup, wherein
the targeted backup operation is performed using a second backup technique, and
the second backup technique differs from the first backup technique by virtue of the targeted backup operation comprising at least
determining, using the data structure, whether a given data block of the plurality of data blocks was in-use or unused at the time at which the original backup operation was performed, and
in response to a determination that the given data block was in-use at the time at which the original backup operation was performed,
performing a backup operation on the given data block.
21. A computer system comprising:
one or more processors;
a computer-readable storage medium, coupled to the one or more processors; and
a plurality of instructions, encoded in the computer-readable storage medium and configured to cause the one or more processors to
access a backup of a construct of an application, wherein
the construct comprised
a plurality of data blocks, and
a data structure,
the backup was produced by an original backup operation that used a first backup technique, and
the first backup technique backed up the plurality of data blocks without regard to whether each of the plurality of data blocks was in-use or unused by the application at a time at which the original backup operation was performed,
retrieve the data structure from the backup, wherein
as a result of performance of the original backup operation, the backup comprises
a data store comprising the plurality of data blocks, and
the data structure, and
the data structure comprises
status information representing whether each data block of the plurality of data blocks was in-use or unused by the application at the time at which the original backup operation was performed, and
perform a targeted backup operation on the backup, wherein
the targeted backup operation is performed using a second backup technique, and
the second backup technique differs from the first backup technique at least by virtue of the targeted backup operation being configured to
determine, using the data structure, whether a given data block of the plurality of data blocks was in-use or unused at the time at which the original backup operation was performed, and
in response to a determination that the given data block was in-use at the time at which the original backup operation was performed,
perform a backup operation on the given data block.
16. A computer program product comprising:
a plurality of instructions, comprising
a first set of instructions, executable on a computer system, configured to access a backup of a construct of an application, wherein
the construct comprised
a plurality of data blocks, and
a data structure,
the backup was produced by an original backup operation that used a first backup technique, and
the first backup technique backed up the plurality of data blocks without regard to whether each of the plurality of data blocks was in-use or unused by the application at a time at which the original backup operation was performed;
a second set of instructions, executable on the computer system, configured to retrieve the data structure from the backup, wherein
as a result of performance of the original backup operation, the backup comprises
a data store comprising the plurality of data blocks, and
the data structure, and
the data structure comprises
status information representing whether each data block of the plurality of data blocks was in-use or unused by the application at the time at which the original backup operation was performed; and
a third set of instructions, executable on the computer system, configured to perform a targeted backup operation on the backup, wherein
the targeted backup operation is performed using a second backup technique, and
the second backup technique differs from the first backup technique at least by virtue of the targeted backup operation being configured to
determine, using the data structure, whether a given data block of the plurality of data blocks was in-use or unused at the time at which the original backup operation was performed, and
in response to a determination that the given data block was in-use at the time at which the original backup operation was performed,
perform a backup operation on the given data block; and
a non-transitory computer-readable storage medium, wherein the instructions are encoded in the non-transitory computer-readable storage medium.
2. The method of
determining whether the given data block is unique by performing a deduplication operation on the given data block, and
performing the backup operation on the given data block, if the given data block is unique.
3. The method of
the data store comprises the data structure,
the plurality of data blocks comprise
an in-use data block, and
an unused data block, and
the data structure is further configured to indicate that
a state of the in-use data block is in-use, and
a state of the unused data block is unused.
4. The method of
the data structure is a data store bitmap,
each bit of the data store bitmap indicates a state of the each data block of the plurality of data blocks, and
a state of the each data block of the plurality of data blocks is one of
in-use, or
unused.
5. The method of
determining a location of header information in the backup,
determining a location of catalog information by accessing the header information,
determining a location of the data structure by accessing the catalog information, and
retrieving the data structure using the catalog information.
6. The method of
for the each data block of the plurality of data blocks,
retrieving the each data block of the plurality of data blocks,
determining whether the each data block of the plurality of data blocks should be backed up, wherein
the determining is based, at least in part, on a state of the each data block of the plurality of data blocks, and
in response to a determination that the each data block of the plurality of data blocks should be backed up, backing up the each data block of the plurality of data blocks.
7. The method of
for the each data block of the plurality of data blocks,
retrieving the each data block of the plurality of data blocks,
determining whether the each data block of the plurality of data blocks should be backed up, wherein
the determining is performed based on a state of the each data block of the plurality of data blocks, and
in response to a determination that the each data block of the plurality of data blocks should be backed up,
determining if the each data block of the plurality of data blocks is a duplicate data block, and
in response to a determination that the each data block of the plurality of data blocks is not a duplicate data block, backing up the each data block of the plurality of data blocks.
9. The method of
for the each data block of the plurality of data blocks,
determining whether the each data block of the plurality of data blocks should be backed up, wherein
the determining is based, at least in part, on a state of the each data block of the plurality of data blocks, and
in response to a determination that the each data block of the plurality of data blocks should be backed up, backing up the each data block of the plurality of data blocks.
10. The method of
for the each data block of the plurality of data blocks,
determining whether the each data block of the plurality of data blocks should be backed up, wherein
the determining is based, at least in part, on a state of the each data block of the plurality of data blocks, and
in response to a determination that the each data block of the plurality of data blocks should be backed up,
determining if the each data block of the plurality of data blocks is a duplicate data block, and
in response to a determination that the each data block of the plurality of data blocks is not a duplicate data block, backing up the each data block of the plurality of data blocks.
11. The method of
for the each data block of the plurality of data blocks,
determining whether the each data block of the plurality of data blocks should be backed up, and
in response to a determination that the each data block of the plurality of data blocks should be backed up, backing up the each data block of the plurality of data blocks.
12. The method of
for the each data block of the plurality of data blocks,
determining whether the each data block of the plurality of data blocks should be backed up, and
in response to a determination that the each data block of the plurality of data blocks should be backed up,
determining if the each data block of the plurality of data blocks is a duplicate data block, and
in response to a determination that the each data block of the plurality of data blocks is not a duplicate data block, backing up the each data block of the plurality of data blocks.
13. The method of
excluding an unused data block from the backup operation.
14. The method of
retrieving the plurality of data blocks;
performing a deduplication operation on the each data block of the plurality of data blocks; and
for the each data block of the plurality of data blocks,
determining whether the each data block of the plurality of data blocks should be backed up, and
in response to a determination that the each data block of the plurality of data blocks should be backed up, backing up the each data block of the plurality of data blocks.
15. The method of
the application is a database management system,
the construct is a database, and
the first backup technique, in backing up the plurality of data blocks without regard to whether the each data block of the plurality of data blocks was in-use or unused by the application at the time at which the original backup operation was performed, ignored representation in the status information as to whether the each data block of the plurality of data blocks was in-use or unused by the application at the time at which the original backup operation was performed.
17. The computer program product of
determining whether the given data block is unique by performing a deduplication operation on the given data block, and
performing the backup operation on the given data block, if the given data block is unique.
18. The computer program product of
a third set of instructions, executable on the computer system, configured to, for the each data block of the plurality of data blocks,
determine whether the each data block of the plurality of data blocks should be backed up, and
in response to a determination that the each data block of the plurality of data blocks should be backed up, back up the each data block of the plurality of data blocks.
19. The computer program product of
a third set of instructions, executable on the computer system, configured to, for the each data block of the plurality of data blocks,
determine whether the each data block of the plurality of data blocks should be backed up, and
in response to a determination that the each data block of the plurality of data blocks should be backed up,
determine if the each data block of the plurality of data blocks is a duplicate data block, and
in response to a determination that the each data block of the plurality of data blocks is not a duplicate data block, back up the each data block of the plurality of data blocks.
20. The computer program product of
a third set of instructions, executable on the computer system, configured to retrieve the plurality of data blocks;
a fourth set of instructions, executable on the computer system, configured to perform a deduplication operation on the each data block of the plurality of data blocks; and
a fifth set of instructions, executable on the computer system, configured to, for the each data block of the plurality of data blocks,
determine whether the each data block of the plurality of data blocks should be backed up, and
in response to a determination that the each data block of the plurality of data blocks should be backed up, back up the each data block of the plurality of data blocks.
|
The present disclosure relates to backup operations, and more particularly, to a method and apparatus for performing targeted backup of a database.
An ever-increasing reliance on information and computing systems that produce, process, distribute, and maintain such information in its various forms, continues to put great demands on techniques for providing data storage, access to that data storage, and protection of the data thus stored. Business or enterprise organizations can produce and retain large amounts of data. While data growth is not new, the pace of data growth has become more rapid, the location of data more dispersed, and linkages between data sets more complex, with each passing day.
In this regard, nowhere is today's rapid growth in data felt more keenly than in the database arena. As will be appreciated, databases are often stored in volumes created by storage devices, which can be viewed as a sequence of logical storage blocks that store the database data. While a volume is typically referred to as storing data, in reality, the data is actually stored directly or indirectly in the physical blocks of a storage device (e.g., a disk array) that are allocated to the volume's storage blocks. Such a logical view of data storage allows, at least in part, the data stored therein to grow as necessary. In this regard (and in order to improve performance), such databases include some (often significant amounts of) unused storage space (e.g., unused storage blocks). Such unused storage space allows new data to be inserted into the database (e.g., into one or more unused rows in a table in the database) more quickly than if the storage space for such data were to be allocated at the time such storage space was needed. Such unused storage space may be cleared (e.g., to zero values), may contain old (uncleared) data, or find itself in some other indeterminate state (e.g., having never been used to store data in the first place).
As will be appreciated, the data thus maintained is typically quite valuable. As a result, backup operations are typically performed on some regular, periodic basis, in order to safeguard the information in such databases and other such constructs. In the event of data corruption as a result of user, software, or hardware error, for example, a backup can be used to restore the corrupted data volume back to a consistent data state that existed at the time the backup was created.
Techniques for backing up such data include snapshot (point-in-time copy) backup techniques. A point-in-time copy of data (also referred to as a snapshot), is a copy of a particular set of data, as that set of data existed at a discrete point in time. A point-in-time copy can be created in a manner that requires reduced downtime of the data being copied. For example, a point-in-time copy can initially just refer to the set of data being copied (e.g., using logical structures such as pointers, bitmaps, and/or the like). As that set of data is subsequently modified, the pre-modification values can be copied to the point-in-time copy prior to the original data values being overwritten. Since such point-in-time copies can be created relatively quickly, point-in-time copies can be used as the source of operations such as backups, indexing, and virus scanning in order to reduce the amount of time to which access to the original set of data needs to be restricted.
In response to the aforementioned growth in data, techniques have also been formulated to minimize the amount of storage space consumed by such data, including backups thereof. For example, when creating backups (whatever the backup technique employed), one such technique used to reduce the amount of storage space used to store a given amount of data (e.g., a backup) is deduplication. Deduplication involves identifying duplicate data and storing a single copy of the duplicate data, rather than storing multiple copies. For example, if two identical copies of a portion of data (e.g., a file) are stored on a storage device, deduplication involves removing one of the copies and instead storing a reference to the removed copy. If access to the removed copy is requested, the request is redirected and the reference is used to access the remaining copy. Since the reference is typically relatively small, relative to the copy of the portion of data, the added space used to store the reference is more than offset by the space saved by removing the duplicate copy.
In order to expedite the process of determining whether identical data is already stored, deduplication engines typically divide the data into portion, or segments, and calculate a signature, or fingerprint for each segment. When a segment is stored, the fingerprint that represents the segment can be added to a list of fingerprints representing stored segments. Then, by comparing a segment's fingerprint with the fingerprints included in the listing of fingerprints, the deduplication engine can determine if the segment is already stored. If so, rather than store another copy of the segment, a reference is stored and a reference counter is updated.
Among other issues encountered in the foregoing scenarios, the unused space typically maintained in databases results in inefficiencies in the process of backing up snapshots (e.g., backing up a snapshot backup to a backup storage volume). Further, such unused space also results in inefficiencies when deduplicating the data blocks of such unused space. Approaches that reduce or eliminate such inefficiencies are therefore desirable.
The present disclosure describes methods, computer program products, computer systems, and the like that provide for the performance of a targeted backup operation. Such a targeted backup operation is performed on a backup that comprises a plurality of data blocks. The data blocks, in turn, comprise an in-use data block and an unused data block. The targeted backup operation comprises performing a backup operation on the in-use data block.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail; consequently those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present invention may be better understood, and its numerous objects, features and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
Introduction
Broadly, the concepts described herein are applicable to scenarios in which a database or other such data storage and management construct is maintained with some amount of unused storage therein, and is subject to backup operations (using one backup technique) that fail to discern between “in use” data blocks (also referred to herein as “in-use data blocks”) and “unused” data blocks (also referred to herein as “unused data blocks”). In such scenarios, a mechanism that creates some manner of data structure indicating which portions of a point-in-time copy of data are “in use”/“unused” can be employed. Such a data structure can then be used to make a determination as to which of the portions should be backed up, based on whether or not the given portion contains “in-use” data. Alternatively, such data blocks can either contain information as to the “in use”/“unused” status, or can be analyzed in order to make such a determination. A second backup technique, which employs such information and/or analyses, can then perform a backup operation on the existing, original backup in a more effective, efficient manner than would otherwise be the case (e.g., by backing up only the data blocks from the existing backup that were “in use” at the time that the existing backup was made).
Because databases (e.g., a Structured Query Language (SQL) database) typically contain a significant number of “empty” (“unused”) data blocks, as noted, backup operations that fail to take this fact into account (for whatever reason) produce backups that include such empty data blocks. In turn, when such backups are then themselves backed up, all the original backup's data must be backed up without regard as to whether the original data blocks were, in fact, “in use” at the time they were backed up (or not, as the case may be). By way of example, a snapshot (or other point-in-time copy) of a database includes all the data blocks allocated to a given database, regardless of whether the data blocks in question are “in use” or “unused”, representing a backup of the entire database file without consideration as to the state of its contents (i.e., for purposes of this example, whether its data blocks are “in use” or “unused”). However, through the creation of one or more data structures that maintain information as to the data blocks' “in use”/“unused” status, a determination can be made as to whether or not such data blocks should be backed up from the snapshot. By way of alternative example, such information can be included in the data blocks of the backup, or can be determined by analysis thereof, in order to make a determination as to which data blocks are “in use” and so should be the subject of the subsequent backup operation.
Relational engine 135, also referred to as a query processor, provides functionality related to query optimization and execution, and includes components such as a command parser, a query optimizer, and a query executor. In such a configuration, the command parser manages language events such as checking syntax and generating query plans (or locating existing query plans). In certain embodiments, a query plan will contain details about the manner in which database management system 110 is to go about executing a given piece of code (e.g., a structured query language (SQL) query). In such embodiments, the query optimizer evaluates one or more ways that a given query can be executed, and selects the approach that is determined to be the lowest cost to execute. The query executor, in turn, then executes the query by working through each step thereof, and interacting with a storage engine 140 of database management system 110. Storage engine 140 is responsible for managing input/output (I/O) to/from database management system 110 with storage management system 125. Storage engine 140 includes instructions for access methods (which handle I/O requests for various elements within the databases being accessed (e.g., database 115)), manages the buffer pool (depicted in
As will be appreciated, it is desirable to provide mechanisms for assuring the safety and continuity of data in such database systems, in the event of a catastrophic failure, for example. Thus, database backup architecture 100 also includes a snapshot system 150 that interfaces with database management system 110 (and more particularly, storage engine 140) and database 115 (via storage management system 125). Snapshot system 150 is configured to capture the state of a system (in this case, the state of database 115) at a particular point in time. Thus, snapshot system 150, in capturing the state of database 115, creates a point-in-time backup of the information being saved (depicted, at least in part, as point-in-time backup information 155).
The rationale behind the creation of a point-in-time backup and the mechanisms employed to create such backups is, at least in part, concerned with the fact that a full backup of large amounts of data can take a long time to complete, as noted. Further, the resulting delays (and the unavailability of the system being backed up during such operations) can result in data inconsistency when write operations occur during such backups. In order to safely backup live data without the need for temporarily disabling write access to that data during the backup, a snapshot (point-in-time copy) is made of the data. This can be accomplished, for example, by creating an initial backup of the data and then backing up only that data which has been modified since the last snapshot was taken. In so doing, the snapshot process creates a read-only copy of the given volume and allows snapshot system 150 to access the data without interfering with an application writing to the given area (e.g., data block) in storage.
In certain implementations, the snapshot technique employed may maintain snapshots (point-in-time copies) on a file-by-file basis (referred to herein as “file-based snapshots”). Given that a database will include one or more files, a snapshot thereof that is backed up in a file-based snapshot will include each database file in its entirety (thereby including the data blocks of each, whether “in use” or “unused”). Moreover, in some implementations of file-based snapshots, a snapshot system such as snapshot system 150 creates such filed-based snapshots on the volume on which the data resides. In that case, point-in-time backup information 155 can simply include, for example, meta-data describing the location of the snapshot(s) in question. Alternatively, point-in-time backup information 155 can include the data blocks that are the subject of the backup operation (e.g., snapshot), as well.
Thus, in so doing, snapshot system 150 creates point-in-time copies of the database(s) maintained in database 115, which copies can then be stored in the volume in which the backed-up data is stored or in another storage location (e.g., point-in-time backup information 155). This information can include copies of modified data backed up subsequent to the original snapshot. Also, as noted earlier, while the term “snapshot” is employed variously herein, it is to be appreciated that, in light of the present disclosure, such operations are to be interpreted as any mechanism, construct, and/or operation (or set of operations) that creates a point-in-time copy of the information (e.g., database) that is the object thereof.
Snapshot system 150 performs such operations, in certain embodiments, under the control of a backup system 160. Backup system 160 can be configured not only to control snapshot system 150, but also to backup original backups (e.g., a snapshot of database 115) by creating one or more targeted backups by performing a targeted backup operation, and to store such targeted backups in backups data storage (depicted in
However, by taking steps such as maintaining information regarding the “in use”/“unused” status of the data blocks within a point-in-time copy of a given database (or maintaining such information in the data blocks themselves (e.g., being created during their allocation and maintained during their use), or making such a determination by analyzing each such data block), embodiments of systems such as those described herein are able to identify which data blocks of a point-in-time copy of a database need to be backed up, and which of the blocks in that point-in-time copy can be ignored. In so doing, backup and deduplication operations need only concern themselves with processing the data blocks in a snapshot (or other such backup) that were actually “in use” in the database in question at the time the original backup was performed.
Examples of Backup Constructs Usable in Targeted Backup Operations
In the embodiment depicted in
In certain embodiments, information (not shown) regarding a given data block's “in use”/“unused” status is maintained within in the data block itself. Storage for such status information can be created within the data block during the data block's allocation, and maintained during its use (e.g., as a flag that begins by being cleared (at allocation), set when the data block is “in use”, and cleared if/when the data block becomes “unused”). In such a scenario, each data block can be checked as it is read, and a backup decision appropriate to its “in use”/“unused” status made. Using such an approach, it is preferable to store such “in use”/“unused” status information in a position within each data block that facilitates fast, efficient access thereto. For example, such “in use”/“unused” status information can be stored at the beginning of the data block, in order to allow such information to be read first when accessing the data blocks in serial fashion. Alternatively in this regard, other data store information 350 can be designed to include pointers or other such constructs to allow for fast, efficient access thereto. These and other alternatives will be apparent to one of skill in the art in light of the present disclosure, and are intended to come within the scope of this description.
Examples of Targeted Database Backup Processes
A determination is then made as to whether the targeted backup performed was successful (step 530). If the targeted backup was successful (step 530), the process returns to awaiting the next request for a targeted backup to be performed (step 500). Alternatively, if the targeted backup was not successful (step 530), a determination is then made as to whether or not to retry the targeted backup operation (step 540). If this determination indicates that the targeted backup operation should be retried (step 540), the process loops back and attempts to again perform the targeted backup operation (step 520). However, if the targeted backup was not successful (step 530) and this targeted backup operation is not to be retried (step 540), the backup system indicates (e.g., to a system administrator) that an error was encountered during the targeted backup operation (step 550).
Once the snapshot's data store bitmap has been retrieved (step 610), a bit in the data store bitmap is selected to begin the determination as to whether or not the corresponding data block should be backed up (step 620). It will be appreciated that, typically, the bits in the data store bitmap are selected in a serial fashion, starting with the first bit in the data store bitmap, and proceeding through the data store bitmap to the last bit therein, though this need not be the case. In terms of data store bitmap 400 of
Proceeding in such serial fashion, if the determination performed indicates that the data block corresponding to the selected bit is, in fact, “in use” (step 630), the data block corresponding to the selected bit is backed up from the data store to backup storage (step 640). However, if the determination made indicates that the data block corresponding to the selected bit is “unused” (i.e., not “in use”) (step 630), the corresponding data block is not backed up, and in effect, is ignored. A determination is then made as to whether all bits in the data store bitmap (or desired portion thereof) have been processed (step 650), indicating that the requisite data blocks of the data store (e.g., the requisite ones of data blocks 370(1)-(N) of data store 300) have been backed up. Once all (or at least, the requisite) bits in the data store bitmap (and their corresponding data blocks) have been processed (step 650), the process concludes.
While the process of
This example of a process to retrieve a data store bitmap begins with a determination as to the location of header information for the given point-in-time copy (step 700). Once the location of the point-in-time copy's header information is determined (step 700), the header information is accessed (step 710) and a determination is made as to the location of catalog information based on this header information (step 720). Once the location of the point-in-time copy's catalog information is determined from the point-in-time copy's header information (step 720), the catalog information is accessed (step 730) and, using this catalog information, a determination is made as to the location of the data store bitmap within the data store (step 740). As will be appreciated in light of
The process of backing up an “in use” data block, in the example depicted in
Alternatively, if the current “in use” data block is not a duplicate (step 830) or such deduplication is not performed, a backup operation is performed on the current “in use” data block (step 840). In terms of the elements depicted in
Once the requisite backup operation has been performed on the “in use” data block (step 840), a determination is made as to whether the backup of the “in use” data block was successful (step 850). If this backup operation was successful (step 850), the process can then conclude. However, if an error occurs in this backup operation (step 850), a determination can be made as whether to retry the backup operation (step 860). If the backup operation is to be retried (step 860), the process of backing up the “in use” data block in question loops back to the identification of the data block to be backed up (step 810). Otherwise, if the backup operation is not to be retried (step 860), an indication is made (e.g., by the backup system to a system administrator) (step 870), and the process once again concludes. As will be appreciate in light of the present disclosure, a process such as that depicted in
Once the requisite data store bitmap has been retrieved and processed (step 920), a targeted backup is performed (step 930). An example of the manner in which a targeted backup can be performed is discussed in greater detail in connection with
The data blocks retrieved using the data store bitmap, having optionally been deduplicated (step 1100), the data blocks can now be backed up to backup storage (e.g., by way of a backup system such as backup system 160, to backup storage such as backup data storage 165). The process of backing up such “in use” (optionally deduplicated) data block begins with the identification of one of the data blocks to be backed up (step 1110). If deduplication has not been performed on the data blocks retrieved using the data store bitmap, as described in connection with step 1100, the data blocks can be deduplicated on a case-by-case basis (step 1120), as an alternative option to the deduplication discussed earlier. If such optional alternative deduplication is to be performed, a determination is then made as to whether the data block in question is indeed a duplicate data block (step 1130), which can be accomplished by way of generating a fingerprint or other comparable value, and comparing that information to an existing set of fingerprints (or other comparable value) and thus determining whether the data block in question is in fact a duplicate of a datablock backed up earlier. If the aforementioned determination indicates that the data block in question is a duplicate (step 1130), the process of backing up the data block in questions then proceeds to a determination as to whether further such data blocks remain to be backed up (step 1140). If further data blocks remain to be backed up (step 1140), the process proceeds to the identification of the next data block to be backed up (step 1110). Alternatively, if no further data blocks remain to be backed up (step 1140), the process concludes.
In the case in which the data block in question is not a duplicate (step 1130) (or no such determination is to be made), a backup operation is performed on the data block in question (step 1150). A determination is then made as to whether the backup of the data block in question was successful (step 1160). If the data block's backup was successful (step 1160), a determination is made as to whether further data blocks remain to be backed up (step 1140). As before, if additional data blocks remain to be backed up (step 1140), the process proceeds to the identification of the next data block to be backed up (step 1110). Alternatively, if no further data blocks remain to be backed up (step 1140), the process concludes.
However, if the backup of the data block in question was not successful (step 1160), a determination is made as to whether the backup of the data block should be retried (step 1170). If the backup system is to retry the backup operation on the data block in question (step 1170), the process loops to, for example, performing deduplication on the data block in question (step 1120), and, potentially, backing up the data block (step 1150). Alternatively, if such a backup attempt is not to be made (step 1170) the backup system indicate (e.g., to a system administrator) that an error occurred during the backup of the given data block (step 1180). As before, the error having been indicated (step 1180), the process concludes. As noted in connection with
In the manner noted earlier, while the processes of
As shown above, the systems described herein can be implemented using a variety of computer systems and networks. Examples of such computing and network environments are described below with reference to
Bus 1212 allows data communication between central processor 1214 and system memory 1217, which may include read-only memory (ROM) or flash memory (neither shown), and random access memory (RAM) (not shown), as previously noted. RAM is generally the main memory into which the operating system and application programs are loaded. The ROM or flash memory can contain, among other code, the Basic Input-Output System (BIOS) which controls basic hardware operation such as the interaction with peripheral components. Applications resident with computer system 1210 are generally stored on and accessed from a computer-readable storage medium, such as a hard disk drive (e.g., fixed disk 1244), an optical drive (e.g., optical drive 1240), a floppy disk unit 1237, or other computer-readable storage medium.
Storage interface 1234, as with the other storage interfaces of computer system 1210, can connect to a standard computer-readable medium for storage and/or retrieval of information, such as a fixed disk drive 1244. Fixed disk drive 1244 may be a part of computer system 1210 or may be separate and accessed through other interface systems. Modem 1247 may provide a direct connection to a remote server via a telephone link or to the Internet via an internet service provider (ISP). Network interface 1248 may provide a direct connection to a remote server via a direct network link to the Internet via a POP (point of presence). Network interface 1248 may provide such connection using wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like.
Many other devices or subsystems (not shown) may be connected in a similar manner (e.g., document scanners, digital cameras and so on). Conversely, all of the devices shown in
Moreover, regarding the signals described herein, those skilled in the art will recognize that a signal can be directly transmitted from a first block to a second block, or a signal can be modified (e.g., amplified, attenuated, delayed, latched, buffered, inverted, filtered, or otherwise modified) between the blocks. Although the signals of the above described embodiment are characterized as transmitted from one block to the next, other embodiments may include modified signals in place of such directly transmitted signals as long as the informational and/or functional aspect of the signal is transmitted between blocks. To some extent, a signal input at a second block can be conceptualized as a second signal derived from a first signal output from a first block due to physical limitations of the circuitry involved (e.g., there will inevitably be some attenuation and delay). Therefore, as used herein, a second signal derived from a first signal includes the first signal or any modifications to the first signal, whether due to circuit limitations or due to passage through other circuit elements which do not change the informational and/or final functional aspect of the first signal.
With reference to computer system 1210, modem 1247, network interface 1248 or some other method can be used to provide connectivity from each of client computer systems 1310, 1320 and 1330 to network 1350. Client systems 1310, 1320 and 1330 are able to access information on storage server 1340A or 1340B using, for example, a web browser or other client software (not shown). Such a client allows client systems 1310, 1320 and 1330 to access data hosted by storage server 1340A or 1340B or one of storage devices 1360A(1)-(N), 1360B(1)-(N), 1380(1)-(N) or intelligent storage array 1390.
The systems described herein are well adapted to attain the advantages mentioned as well as others inherent therein. While such systems have been depicted, described, and are defined by reference to particular descriptions, such references do not imply a limitation on the claims, and no such limitation is to be inferred. The systems described herein are capable of considerable modification, alteration, and equivalents in form and function, as will occur to those ordinarily skilled in the pertinent arts in considering the present disclosure. The depicted and described embodiments are examples only, and are in no way exhaustive of the scope of the claims.
The foregoing describes embodiments including components contained within other components (e.g., the various elements shown as components of computer system 1210). Such architectures are merely examples, and, in fact, many other architectures can be implemented which achieve the same functionality. In an abstract but still definite sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermediate components. Likewise, any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality.
The foregoing detailed description has set forth various embodiments of the systems described herein via the use of block diagrams, flowcharts, and examples. It will be understood by those within the art that each block diagram component, flowchart step, operation and/or component illustrated by the use of examples can be implemented (individually and/or collectively) by a wide range of hardware, software, firmware, or any combination thereof.
The systems described herein have been described in the context of fully functional computer systems; however, those skilled in the art will appreciate that the systems described herein are capable of being distributed as a program product in a variety of forms, and that the systems described herein apply equally regardless of the particular type of computer-readable media used to actually carry out the distribution. Examples of computer-readable media include computer-readable storage media, as well as media storage and distribution systems developed in the future.
The above-discussed embodiments can be implemented by software modules that perform one or more tasks associated with the embodiments. The software modules discussed herein may include script, batch, or other executable files. The software modules may be stored on a machine-readable or computer-readable storage media such as magnetic floppy disks, hard disks, semiconductor memory (e.g., RAM, ROM, and flash-type media), optical discs (e.g., CD-ROMs, CD-Rs, and DVDs), or other types of memory modules. A storage device used for storing firmware or hardware modules in accordance with an embodiment can also include a semiconductor-based memory, which may be permanently, removably or remotely coupled to a microprocessor/memory system. Thus, the modules can be stored within a computer system memory to configure the computer system to perform the functions of the module. Other new and various types of computer-readable storage media may be used to store the modules discussed herein.
The above description is intended to be illustrative and should not be taken to be limiting. As will be appreciated in light of the present disclosure, other embodiments are possible. Those skilled in the art will readily implement the steps necessary to provide the structures and the methods disclosed herein, and will understand that the process parameters and sequence of steps are given by way of example only and can be varied to achieve the desired structure as well as modifications that are within the scope of the claims. Variations and modifications of the embodiments disclosed herein can be made based on the description set forth herein, without departing from the scope of the claims, giving full cognizance to equivalents thereto in all respects.
Although the systems described herein have been described in connection with several embodiments, these embodiments and their descriptions are not intended to be limited to the specific forms set forth herein. On the contrary, it is intended that such embodiments address such alternatives, modifications, and equivalents as can be reasonably included within the scope of the appended claims.
Payne, Michael A., DeVos, Steven R.
Patent | Priority | Assignee | Title |
10102078, | Sep 30 2015 | EMC IP HOLDING COMPANY LLC | Minimizing a footprint of incremental backups |
10261853, | Jun 28 2016 | EMC IP HOLDING COMPANY LLC | Dynamic replication error retry and recovery |
10776213, | Aug 31 2017 | COHESITY, INC | Restoring a database using a fully hydrated backup |
10990483, | Sep 30 2015 | EMC IP HOLDING COMPANY LLC | Minimizing a footprint of incremental backups |
11520755, | Mar 28 2017 | Commvault Systems, Inc. | Migration of a database management system to cloud storage |
11740974, | Aug 31 2017 | Cohesity, Inc. | Restoring a database using a fully hydrated backup |
12147305, | Aug 31 2017 | Cohesity, Inc. | Restoring a database using a fully hydrated backup |
Patent | Priority | Assignee | Title |
7395390, | Jul 12 2006 | Inventec Corporation | System for backing up cache memory in a double backup server structure |
8429359, | Dec 31 2004 | ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE | Method and apparatus for dynamically backing up database files |
8600940, | Dec 21 2007 | ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE | Concurrently backing up data from multiple backup servers in a backup storage tier |
8898114, | Aug 27 2010 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Multitier deduplication systems and methods |
8996468, | Apr 17 2009 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Block status mapping system for reducing virtual machine backup storage |
20030208511, | |||
20030225733, | |||
20070208918, | |||
20100114831, | |||
20100198791, | |||
20130024722, | |||
20130151494, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 30 2013 | Veritas Technologies LLC | (assignment on the face of the patent) | / | |||
Sep 08 2014 | PAYNE, MICHAEL A | Symantec Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 033945 | /0514 | |
Sep 12 2014 | DEVOS, STEVEN R | Symantec Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 033945 | /0514 | |
Jan 29 2016 | Veritas US IP Holdings LLC | WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 037891 | /0726 | |
Jan 29 2016 | Veritas US IP Holdings LLC | BANK OF AMERICA, N A , AS COLLATERAL AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 037891 | /0001 | |
Jan 29 2016 | Symantec Corporation | Veritas US IP Holdings LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 037693 | /0158 | |
Mar 29 2016 | Veritas US IP Holdings LLC | Veritas Technologies LLC | MERGER SEE DOCUMENT FOR DETAILS | 038483 | /0203 | |
Aug 20 2020 | Veritas Technologies LLC | WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 054370 | /0134 | |
Nov 27 2020 | WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT | VERITAS US IP HOLDINGS, LLC | TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R F 037891 0726 | 054535 | /0814 | |
Nov 22 2024 | BANK OF AMERICA, N A , AS ASSIGNOR | ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE | ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL | 069440 | /0084 | |
Dec 09 2024 | WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT | Veritas Technologies LLC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 069634 | /0584 | |
Dec 09 2024 | ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT | VERITAS TECHNOLOGIES LLC F K A VERITAS US IP HOLDINGS LLC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 069712 | /0090 | |
Dec 09 2024 | Veritas Technologies LLC | JPMORGAN CHASE BANK N A | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 069890 | /0001 | |
Dec 09 2024 | COHESITY, INC | JPMORGAN CHASE BANK N A | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 069890 | /0001 |
Date | Maintenance Fee Events |
May 07 2021 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Nov 07 2020 | 4 years fee payment window open |
May 07 2021 | 6 months grace period start (w surcharge) |
Nov 07 2021 | patent expiry (for year 4) |
Nov 07 2023 | 2 years to revive unintentionally abandoned end. (for year 4) |
Nov 07 2024 | 8 years fee payment window open |
May 07 2025 | 6 months grace period start (w surcharge) |
Nov 07 2025 | patent expiry (for year 8) |
Nov 07 2027 | 2 years to revive unintentionally abandoned end. (for year 8) |
Nov 07 2028 | 12 years fee payment window open |
May 07 2029 | 6 months grace period start (w surcharge) |
Nov 07 2029 | patent expiry (for year 12) |
Nov 07 2031 | 2 years to revive unintentionally abandoned end. (for year 12) |