IP Library Granted Patent US 9,424,136
Granted Patent B1
US 9,424,136 · App. 13/915,682 · Granted Aug 23, 2016

Systems and methods for creating optimized synthetic backup images

Inventors: David Teater (Minneapolis, MN); Matthew Kokotovich (Saint Paul, MN); Timothy Naftel (Longmont, CO); Weibao Wu (Vadnais Heights, MN); Satyajit Gorhe Parlikar (Shoreview, MN)
Assignee: Veritas Technologies LLC
G06F11/1451G06F3/065G06F11/1458G06F2201/84
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,424,136
App. No.
13/915,682
Filed
Jun 12, 2013
Granted
Aug 23, 2016
Kind
B1
Art Unit
2133
USPC
711/162
Abstract

A computer-implemented method for creating optimized synthetic backup images may include (1) transferring a backup image that represents a virtual machine at a specific point in time to a server that stores the backup image, (2) identifying a subsequent backup image that represents at least a portion of the virtual machine at a subsequent point in time, (3) creating a data stream that includes (i) at least one changed data block captured in the subsequent backup image and (ii) at least one reference that identifies where at least one unchanged data block is located within the backup image stored on the server, and then (4) transferring the data stream to the server to enable the server to create an optimized synthetic backup image of the virtual machine. Various other methods, systems, and computer-readable media are also disclosed.

Claims (76)

1. A computer-implemented method for creating optimized synthetic backup images, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying, at the computing device, a plurality of data blocks included in a backup image that represents a virtual machine at a specific point in time;

creating, at the computing device, a state file that identifies where the plurality of data blocks are located within the backup image of the virtual machine at the specific point in time;

transferring the backup image from the computing device to a server that stores the backup image via a network that facilitates communication between the computing device and the server;

identifying, at the computing device, a subsequent backup image that represents at least a portion of the virtual machine at a subsequent point in time;

creating, at the computing device, a data stream that comprises:

at least one changed data block captured in the subsequent backup image that changed within the virtual machine between the specific point in time and the subsequent point in time;

at least one reference that identifies where at least one unchanged data block that remained unchanged within the virtual machine between the specific point in time and the subsequent point in time is located within the backup image stored on the server;

determining, by the computing device, where the at least one unchanged data block is located within the backup image based at least in part on the state file;

indexing, by the computing device, the data stream as though the data stream were a full backup by arranging the at least one reference in a specific order with respect to the at least one changed data block such that the at least one reference acts as a placeholder for the at least one unchanged data block included in the backup image stored on the server;

upon creating the data stream, transferring the data stream from the computing device to the server via the network to enable the server to:

create an optimized synthetic full backup image that:

represents the virtual machine at the subsequent point in time based at least in part on the at least one changed data block included in the data stream and the at least one unchanged data block whose location within the backup image is identified by the at least one reference;

excludes at least one data block captured in the backup image that was deleted from the virtual machine between the specific point in time and the subsequent point in time;

wherein:

indexing the data stream as though the data stream were a full backup comprises excluding, from the data stream, any reference to the at least one data block that was deleted from the virtual machine between the specific point in time and the subsequent point in time;

creating the optimized synthetic full backup image comprises replacing, at the server, the at least one reference included in the data stream with the at least one unchanged data block from the backup image.

2. The method of claim 1 , wherein determining where the at least one unchanged data block is located within the backup image comprises:

searching the state file for the location of the at least one unchanged data block within the backup image of the virtual machine;

while searching the state file, identifying the location of the at least one unchanged data block within the backup image of the virtual machine.

3. The method of claim 1 , wherein creating the state file that identifies where the plurality of data blocks are located within the backup image comprises:

mapping a plurality of volumes within the backup image of the virtual machine;

while mapping the plurality of volumes, identifying a location of each of the plurality of data blocks within the backup image of the virtual machine.

4. The method of claim 1 , wherein:

the backup image that represents the virtual machine at the specific point in time comprises a full backup of the virtual machine;

the subsequent backup image that represents the virtual machine at the subsequent point in time comprises an incremental backup of the virtual machine.

5. The method of claim 1 , wherein the at least one reference included in the data stream comprises a placeholder for the at least one unchanged data block located within the backup image.

6. The method of claim 1 , wherein creating the data stream comprises:

obtaining a list of changed data blocks from virtualization software that facilitates execution of the virtual machine;

determining that the at least one changed data block has changed within the virtual machine based at least in part on the list of changed data blocks obtained from the virtualization software.

7. The method of claim 1 , wherein optimizing the synthetic backup image comprises storing the optimized synthetic full backup image to facilitate restoring the virtual machine to a computing state experienced by the virtual machine at the subsequent point in time.

8. The method of claim 7 , wherein restoring the virtual machine to the computing state experienced by the virtual machine at the subsequent point in time comprises restoring the virtual machine without the at least one data block deleted from the virtual machine between the specific point in time and the subsequent point in time.

9. The method of claim 1 , further comprising capturing the backup image of the virtual machine on a host computing system at the specific point in time.

10. The method of claim 1 , further comprising obtaining the backup image from a host computing system that hosts the virtual machine.

11. The method of claim 1 , further comprising capturing the subsequent backup image of the virtual machine on a host computing system at the subsequent point in time.

12. The method of claim 1 , further comprising obtaining the subsequent backup image of the virtual machine from a host computing system that hosts the virtual machine.

13. The method of claim 1 , wherein indexing the data stream as though the data stream were a full backup comprises enabling the server to create the optimized synthetic full backup image by replacing the at least one reference included in the data stream with the at least one unchanged data block identified by the at least one reference.

14. The method of claim 1 , wherein indexing the data stream as though the data stream were a full backup comprises enabling the server to create the optimized synthetic full backup image without mounting any virtual disks of the synthetic full backup.

15. A system for creating optimized synthetic backup images, the system comprising:

an identification module, stored in memory, that identifies, at a computing device, a plurality of data blocks included in a backup image that represents a virtual machine at a specific point in time;

a creation module, stored in memory, that creates, at the computing device, a state file that identifies where the plurality of data blocks are located within the backup image of the virtual machine at the specific point in time;

a transfer module, stored in memory, that transfers the backup image from the computing device to a server that stores the backup image via a network that facilitates communication between the computing device and the server;

wherein the identification module further identifies, at the computing device, a subsequent backup image that represents at least a portion of the virtual machine at a subsequent point in time;

wherein the creation module further creates, at the computing device, a data stream comprising:

at least one changed data block captured in the subsequent backup image that changed within the virtual machine between the specific point in time and the subsequent point in time;

at least one reference that identifies where at least one unchanged data block that remained unchanged within the virtual machine between the specific point in time and the subsequent point in time is located within the backup image stored on the server;

wherein the identification module further determines, at the computing device, where the at least one unchanged data block is located within the backup image based at least in part on the state file;

wherein the creation module further indexes, at the computing device, the data stream as though the data stream were a full backup by arranging the at least one reference in a specific order with respect to the at least one changed data block such that the at least one reference acts as a placeholder for the at least one unchanged data block included in the backup image stored on the server;

wherein the transfer module further transfers the data stream from the computing device to the server via the network to enable the server to:

create an optimized synthetic full backup image that:

represents the virtual machine at the subsequent point in time based at least in part on the at least one changed data block included in the data stream and the at least one unchanged data block whose location within the backup image is identified by the at least one reference;

excludes at least one data block captured in the backup image that was deleted from the virtual machine between the specific point in time and the subsequent point in time;

wherein:

indexing the data stream as though the data stream were a full backup comprises excluding, from the data stream, any reference to the at least one data block that was deleted from the virtual machine between the specific point in time and the subsequent point in time;

creating the optimized synthetic full backup image comprises replacing, at the server, the at least one reference included in the data stream with the at least one unchanged data block from the backup image;

at least one physical processor that executes the transfer module, the identification module, and the creation module.

16. The system of claim 15 , wherein the identification module further:

searches the file for the location of the at least one unchanged data block within the backup image of the virtual machine;

identifies the location of the at least one unchanged data block within the backup image of the virtual machine while searching the file.

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

identify, at the computing device, a plurality of data blocks included in a backup image that represents a virtual machine at a specific point in time;

create, at the computing device, a state file that identifies where the plurality of data blocks are located within the backup image of the virtual machine at the specific point in time;

transfer the backup image from the computing device to a server that stores the backup image via a network that facilitates communication between the computing device and the server;

identify, at the computing device, a subsequent backup image that represents at least a portion of the virtual machine at a subsequent point in time;

create, at the computing device, a data stream that comprises:

at least one changed data block captured in the subsequent backup image that changed within the virtual machine between the specific point in time and the subsequent point in time;

at least one reference that identifies where at least one unchanged data block that remained unchanged within the virtual machine between the specific point in time and the subsequent point in time is located within the backup image stored on the server;

determine, by the computing device, where the at least one unchanged data block is located within the backup image based at least in part on the state file;

index, at the computing device, the data stream as though the data stream were a full backup by arranging the at least one reference in a specific order with respect to the at least one changed data block such that the at least one reference acts as a placeholder for the at least one unchanged data block included in the backup image stored on the server;

upon creating the data stream, transfer the data stream from the computing device to the server via the network to enable the server to:

create an optimized synthetic full backup image that:

represents the virtual machine at the subsequent point in time based at least in part on the at least one changed data block included in the data stream and the at least one unchanged data block whose location within the backup image is identified by the at least one reference;

excludes at least one data block captured in the backup image that was deleted from the virtual machine between the specific point in time and the subsequent point in time;

wherein:

indexing the data stream as though the data stream were a full backup comprises excluding, from the data stream, any reference to the at least one data block that was deleted from the virtual machine between the specific point in time and the subsequent point in time;

creating the optimized synthetic full backup image comprises replacing, at the server, the at least one reference included in the data stream with the at least one unchanged data block from the backup image.

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 Jun 12, 2013
From: TEATER, DAVID; KOKOTOVICH, MATTHEW; NAFTEL, TIMOTHY; WU, WEIBAO; PARLIKAR, SATYAJIT GORHE
To: SYMANTEC CORPORATION
Reel/Frame 030592/0876 →