IP Library Granted Patent US 9,430,332
Granted Patent B1
US 9,430,332 · App. 13/873,211 · Granted Aug 30, 2016

Systems and methods for enabling efficient access to incremental backups

Inventor: Ashutosh Bahadure (Lake Mary, FL)
Assignee: Veritas Technologies LLC
G06F11/1451G06F17/30088G06F17/30575
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,430,332
App. No.
13/873,211
Granted
Aug 30, 2016
Kind
B1
Abstract

A computer-implemented method for enabling efficient access to incremental backups may include selecting an incremental backup of a volume of data, the incremental backup of the volume of data storing blocks from the volume of data that have changed since a previous backup of the volume of data, identifying block metadata for the incremental backup that describes a location of each block within the blocks in the incremental backup, detecting synthesized block metadata for the previous backup that describes a location of each block in the volume according to a synthesized view of the volume of data from a full backup of the volume up to the previous backup, and combining the block metadata for the incremental backup with the synthesized block metadata for the previous backup to generate new synthesized block metadata for the incremental backup. Various other methods, systems, and computer-readable media are also disclosed.

Claims (46)

1. A computer-implemented method for enabling efficient access to incremental backups, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

selecting an incremental backup of a volume of data, the incremental backup of the volume of data storing a plurality of blocks from the volume of data that have changed since a previous backup of the volume of data;

identifying block metadata for the incremental backup that describes a location of each block within the plurality of blocks in the incremental backup by specifying an offset of each block within the incremental backup;

detecting synthesized block metadata for the previous backup that describes a location of each block in the volume of data according to a synthesized view of the volume of data from a full backup of the volume of data up to the previous backup by specifying an offset for each block within the volume of data that indicates a location of a version of each block as each block was at a time of the previous backup, wherein the synthesized block metadata specifies the offset of each block within the volume of data by:

for each block that changed from a time of the full backup to the time of the previous backup, specifying the offset for the block as a size of a file of the full backup summed with the corresponding offset of the block within the previous backup;

for each block that did not change from the time of the full backup to the time of the previous backup, specifying the offset for the block as the corresponding offset of the block within the full backup;

combining the block metadata for the incremental backup with the synthesized block metadata for the previous backup to generate new synthesized block metadata for the incremental backup, the new synthesized block metadata specifying an offset for each block within the volume of data that indicates a location of a most current version of each block since the full backup, wherein the new synthesized block metadata specifies the offset of each block within the volume of data by:

for each block that changed from the time of the previous backup to a time of the incremental backup, specifying the offset for the block as the size of the file of the full backup summed with both a size of a file of the previous backup and the corresponding offset of the block within the incremental backup;

for each block that did not change from the time of the previous backup to the time of the incremental backup, specifying the offset for the block as the offset given by the synthesized block metadata;

after generating the new synthesized block metadata, recovering at least one block of the volume of data as the at least one block was at a time of the incremental backup by identifying a location that describes the at least one block at the time of the incremental backup based on the offset of the at least one block specified by the new synthesized block metadata.

2. The computer-implemented method of claim 1 , further comprising storing the new synthesized block metadata in association with the incremental backup for use by a recovery system to interpret the incremental backup in a new synthesized view.

3. The computer-implemented method of claim 1 , wherein:

the previous backup comprises a first sparse virtual disk file;

the incremental backup comprises a second sparse virtual disk file.

4. The computer-implemented method of claim 3 , wherein identifying the block metadata for the incremental backup comprises identifying the block metadata within the second sparse virtual disk file.

5. The computer-implemented method of claim 1 , wherein combining the block metadata with the synthesized block metadata to generate the new synthesized block metadata for the incremental backup comprises generating the new synthesized block metadata without copying the plurality of blocks to generate a synthetic backup.

6. The computer-implemented method of claim 1 , wherein the new synthesized block metadata indicates the location of the most current version of each block within the volume of data since the full backup by indicating, for each block within the volume of data, a backup file in which the most current version of the block is stored and an offset within the backup file at which the most current version of the block is stored.

7. A system for enabling efficient access to incremental backups, the system comprising:

a selection module that selects an incremental backup of a volume of data, the incremental backup of the volume of data storing a plurality of blocks from the volume of data that have changed since a previous backup of the volume of data;

an identification module that identifies block metadata for the incremental backup that describes a location of each block within the plurality of blocks in the incremental backup by specifying an offset of each block within the incremental backup;

a detection module that detects synthesized block metadata for the previous backup that describes a location of each block in the volume of data according to a synthesized view of the volume of data from a full backup of the volume of data up to the previous backup by specifying an offset for each block within the volume of data that indicates a location of a version of each block as each block was at a time of the previous backup, wherein the synthesized block metadata specifies the offset of each block within the volume of data by:

for each block that changed from a time of the full backup to the time of the previous backup, specifying the offset for the block as a size of a file of the full backup summed with the corresponding offset of the block within the previous backup;

for each block that did not change from the time of the full backup to the time of the previous backup, specifying the offset for the block as the corresponding offset of the block within the full backup;

a combining module that combines the block metadata for the incremental backup with the synthesized block metadata for the previous backup to generate new synthesized block metadata for the incremental backup, the new synthesized block metadata specifying an offset for each block within the volume of data that indicates a location of a most current version of each block since the full backup, wherein the new synthesized block metadata specifies the offset of each block within the volume of data by:

for each block that changed from the time of the previous backup to a time of the incremental backup, specifying the offset for the block as the size of the file of the full backup summed with both a size of a file of the previous backup and the corresponding offset of the block within the incremental backup;

for each block that did not change from the time of the previous backup to the time of the incremental backup, specifying the offset for the block as the offset given by the synthesized block metadata;

a recovering module that recovers, after the new synthesized block metadata is generated, at least one block of the volume of data as the at least one block was at a time of the incremental backup by identifying a location that describes the at least one block at the time of the incremental backup based on the offset of the at least one block specified by the new synthesized block metadata;

at least one processor configured to execute the selection module, the identification module, the detection module, the combining module, and the recovering module.

8. The system of claim 7 , further comprising a storing module that stores the new synthesized block metadata in association with the incremental backup for use by a recovery system to interpret the incremental backup in a new synthesized view.

9. The system of claim 7 , wherein:

the previous backup comprises a first sparse virtual disk file;

the incremental backup comprises a second sparse virtual disk file.

10. The system of claim 9 , wherein the identification module identifies the block metadata for the incremental backup by identifying the block metadata within the second sparse virtual disk file.

11. The system of claim 7 , wherein the combining module combines the block metadata with the synthesized block metadata to generate the new synthesized block metadata for the incremental backup by generating the new synthesized block metadata without copying the plurality of blocks to generate a synthetic backup.

12. The system of claim 7 , wherein the new synthesized block metadata indicates the location of the most current version of each block within the volume of data since the full backup by indicating, for each block within the volume of data, a backup file in which the most current version of the block is stored and an offset within the backup file at which the most current version of the block is stored.

13. A non-transitory computer-readable-storage medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

select an incremental backup of a volume of data, the incremental backup of the volume of data storing a plurality of blocks from the volume of data that have changed since a previous backup of the volume of data;

identify block metadata for the incremental backup that describes a location of each block within the plurality of blocks in the incremental backup by specifying an offset of each block within the incremental backup;

detect synthesized block metadata for the previous backup that describes a location of each block in the volume of data according to a synthesized view of the volume of data from a full backup of the volume of data up to the previous backup by specifying an offset for each block within the volume of data that indicates a location of a version of each block as each block was at a time of the previous backup, wherein the synthesized block metadata specifies the offset of each block within the volume of data by:

for each block that changed from a time of the full backup to the time of the previous backup, specifying the offset for the block as a size of a file of the full backup summed with the corresponding offset of the block within the previous backup;

for each block that did not change from the time of the full backup to the time of the previous backup, specifying the offset for the block as the corresponding offset of the block within the full backup;

combine the block metadata for the incremental backup with the synthesized block metadata for the previous backup to generate new synthesized block metadata for the incremental backup, the new synthesized block metadata specifying an offset for each block within the volume of data that indicates a location of a most current version of each block since the full backup, wherein the new synthesized block metadata specifies the offset of each block within the volume of data by:

for each block that changed from the time of the previous backup to a time of the incremental backup, specifying the offset for the block as the size of the file of the full backup summed with both a size of a file of the previous backup and the corresponding offset of the block within the incremental backup;

for each block that did not change from the time of the previous backup to the time of the incremental backup, specifying the offset for the block as the offset given by the synthesized block metadata;

after generating the new synthesized block metadata, recover at least one block of the volume of data as the at least one block was at a time of the incremental backup by identifying a location that describes the at least one block at the time of the incremental backup based on the offset of the at least one block specified by the new synthesized block metadata.

14. The non-transitory computer-readable-storage medium of claim 13 , wherein the one or more computer-readable instructions cause the computing device to store the new synthesized block metadata in association with the incremental backup for use by a recovery system to interpret the incremental backup in a new synthesized view.

Assignments (14)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2026
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 075728/0466 →
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038483/0203 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037693/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2013
From: BAHADURE, ASHUTOSH
To: SYMANTEC CORPORATION
Reel/Frame 030311/0801 →