IP Library Granted Patent US 9,372,762
Granted Patent B2
US 9,372,762 · App. 13/314,771 · Granted Jun 21, 2016

Systems and methods for restoring application data

Inventors: Ynn-Pyng Tsaur (Oviedo, FL); Ping Wang (Heathrow, FL); Michael Payne (Archer, FL)
Assignee: Veritas Technologies LLC
G06F11/1469G06F11/1461G06F17/30076G06F17/30123
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,372,762
App. No.
13/314,771
Filed
Dec 8, 2011
Granted
Jun 21, 2016
Kind
B2
Examiner
ZHAO, YU
Art Unit
2169
USPC
707/679
Abstract

A computer-implemented method for restoring application data may include (1) receiving a request to restore resource data for a resource to a selected state, (2) identifying a plurality of backup datasets, each backup dataset within the plurality of backup datasets including at least a portion of backed up data for the resource, (3) determining an order in which to restore the plurality of backup datasets in order to restore the resource data to the selected state, and (4) restoring the resource data for the resource to the selected state by restoring the plurality of backup datasets in the order as determined. Various other methods, systems, and computer-readable media are also disclosed.

Claims (90)

1. A computer-implemented method for restoring application data, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

receiving a request to restore primary data used by an application to a selected state;

identifying a type of the application;

identifying a plurality of backup datasets, each backup dataset within the plurality of backup datasets comprising at least a portion of backed up data that includes the primary data used by the application;

determining, based on the type of the application, an order in which to restore the plurality of backup datasets in order to restore the primary data used by the application to the selected state by:

identifying, from within a plurality of finite state machines corresponding to a plurality of application types, a finite state machine for ordering the plurality of backup datasets that corresponds to the type of the application;

applying the plurality of backup datasets to the corresponding finite state machine as input by:

mapping each backup data set within the plurality of backup datasets to a backup type that corresponds to a transition used within the corresponding finite state machine;

determining whether a current backup dataset, from within the plurality of backup datasets, being used as input to the corresponding finite state machine is represented in an available transition;

determining whether to record the current backup dataset as the next backup dataset in the order of restoration based on whether the current backup dataset is represented in an available transition;

restoring the primary data used by the application to the selected state by restoring the plurality of backup datasets in the order of restoration as determined.

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

a first backup dataset within the plurality of backup datasets was generated from a first backup source;

a second backup dataset within the plurality of backup datasets was generated from a second backup source;

the first backup source and the second backup source differ in scope.

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

a first backup dataset within the plurality of backup datasets was generated by a first backup job;

a second backup dataset within the plurality of backup datasets was generated from a second backup job;

the first backup job and the second backup job were at least one of:

mutually independent;

performed by distinct backup systems.

4. The computer-implemented method of claim 1 , wherein the request to restore the primary data identifies the selected state in terms of a view of the primary data on an application level.

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

the primary data comprises a file system;

determining the order in which to restore the plurality of backup datasets further comprises:

placing a most recent full backup dataset first in the order of restoration;

placing a most recent differential backup dataset after the most recent full backup dataset in the order of restoration;

placing a plurality of incremental backup datasets in chronological order after the most recent differential backup dataset.

6. The computer-implemented method of claim 1 , wherein applying the plurality of backup datasets to the corresponding finite state machine as input further comprises applying the plurality of backup datasets to the corresponding finite state machine as input in reverse chronological order.

7. The computer-implemented method of claim 6 , wherein the corresponding finite state machine comprises a plurality of transitions conditioned on a backup method of each backup dataset within the plurality of backup datasets.

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

a first backup dataset within the plurality of backup datasets was generated by a first backup system operating within a virtual machine;

a second backup dataset within the plurality of backup datasets was generated by a second backup system operating on a host of the virtual machine.

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

determining whether the current backup dataset is represented in an available transition comprises determining that the current backup dataset is represented in an available transition;

determining whether to record the current backup dataset as the next backup dataset in the order of restoration comprises determining to record the current backup dataset as the next backup dataset in the order of restoration based on the determination that the current backup dataset is represented in the available transition.

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

determining whether the current backup dataset is represented in an available transition comprises determining that the current backup dataset is not represented in any available transition;

determining whether to record the current backup dataset as the next backup dataset in the order of restoration comprises determining to discard the current backup dataset from the order of restoration based on the determination that the current backup dataset is not represented in any available transition.

11. A system for restoring application data, the system comprising:

a receiving module programmed to receive a request to restore primary data used by an application to a selected state;

an identification module programmed to:

identify a plurality of backup datasets, each backup dataset within the plurality of backup datasets comprising at least a portion of backed up data that includes the primary data used by the application;

identify a type of the application;

a determination module programmed to determine, based on the type of the application, an order in which to restore the plurality of backup datasets in order to restore the primary data used by the application to the selected state by:

identifying, from within a plurality of finite state machines corresponding to a plurality of application types, a finite state machine for ordering the plurality of backup datasets that corresponds to the type of the application;

applying the plurality of backup datasets to the corresponding finite state machine as input by:

mapping each backup data set within the plurality of backup datasets to a backup type that corresponds to a transition used within the corresponding finite state machine;

determining whether a current backup dataset, from within the plurality of backup datasets, being used as input to the corresponding finite state machine is represented in an available transition;

determining whether to record the current backup dataset as the next backup dataset in the order of restoration based on whether the current backup dataset is represented in an available transition;

a restoration module programmed to restore the primary data used by the application to the selected state by restoring the plurality of backup datasets in the order of restoration as determined;

at least one hardware processor that executes the identification module, the receiving module, the identification module, the determination module, and the restoration module.

12. The system of claim 11 , wherein:

a first backup dataset within the plurality of backup datasets was generated from a first backup source;

a second backup dataset within the plurality of backup datasets was generated from a second backup source;

the first backup source and the second backup source differ in scope.

13. The system of claim 11 , wherein:

a first backup dataset within the plurality of backup datasets was generated by a first backup job;

a second backup dataset within the plurality of backup datasets was generated from a second backup job;

the first backup job and the second backup job were mutually independent.

14. The system of claim 11 , wherein:

a first backup dataset within the plurality of backup datasets was generated by a first backup job;

a second backup dataset within the plurality of backup datasets was generated from a second backup job;

the first backup job and the second backup job were performed by distinct backup systems.

15. The system of claim 11 , wherein:

the primary data comprises a file system;

the determination module is further programmed to determine the order in which to restore the plurality of backup datasets by:

placing a most recent full backup dataset first in the order of restoration;

placing a most recent differential backup dataset after the most recent full backup dataset in the order of restoration;

placing a plurality of incremental backup datasets in chronological order after the most recent differential backup dataset.

16. The system of claim 11 , wherein the determination module is further programmed to apply the plurality of backup datasets to the corresponding finite state machine as input in reverse chronological order.

17. The system of claim 11 , wherein the corresponding finite state machine comprises a plurality of transitions conditioned on a backup method of each backup dataset within the plurality of backup datasets.

18. The system of claim 11 , wherein:

a first backup dataset within the plurality of backup datasets was generated by a first backup system operating within a virtual machine;

a second backup dataset within the plurality of backup datasets was generated by a second backup system operating on a host of the virtual machine.

19. 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:

receive a request to restore primary data used by an application to a selected state;

identify a type of the application;

identify a plurality of backup datasets, each backup dataset within the plurality of backup datasets comprising at least a portion of backed up data that includes the primary data used by the application;

determine, based on the type of the application, an order in which to restore the plurality of backup datasets in order to restore the primary data used by the application to the selected state by:

identifying, from within a plurality of finite state machines corresponding to a plurality of application types, a finite state machine for ordering the plurality of backup datasets that corresponds to the type of the application;

applying the plurality of backup datasets to the corresponding finite state machine as input by:

mapping each backup data set within the plurality of backup datasets to a backup type that corresponds to a transition used within the corresponding finite state machine;

determining whether a current backup dataset, from within the plurality of backup datasets, being used as input to the corresponding finite state machine is represented in an available transition;

determining whether to record the current backup dataset as the next backup dataset in the order of restoration based on whether the current backup dataset is represented in an available transition;

restore the primary data used by the application to the selected state by restoring the plurality of backup datasets in the order of restoration as determined.

20. The non-transitory computer-readable-storage medium of claim 19 , wherein:

a first backup dataset within the plurality of backup datasets was generated from a first backup source;

a second backup dataset within the plurality of backup datasets was generated from a second backup source;

the first backup source and the second backup source differ in scope.

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 Dec 8, 2011
From: TSAUR, YNN-PYNG; WANG, PING; PAYNE, MICHAEL
To: SYMANTEC CORPORATION
Reel/Frame 027351/0373 →
Continuity (1)
Related Publication 20130151477A1 · Jun 13, 2013