IP Library Granted Patent US 9,495,252
Granted Patent B2
US 9,495,252 · App. 14/214,013 · Granted Nov 15, 2016

Continuous data backup using real time delta storage

Inventors: Shunhui Zhu (San Jose, CA); Boris Yanovsky (Saratoga, CA); William Dunn (Cupertino, CA); Matthew W. Cotton (Santa Clara, CA)
Assignee: DELL SOFTWARE INC.
G06F11/1451G06F11/1466G06F11/1469G06F11/1456G06F11/1464G06F2201/83
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,495,252
App. No.
14/214,013
Granted
Nov 15, 2016
Kind
B2
Abstract

A continuous data backup using real time delta storage has been presented. A backup appliance receives a backup request from a backup agent running on a computing machine to backup data on the computing machine. The computing machine is communicatively coupled to the backup appliance. Then the backup appliance performs block-based real-time backup of the data on the computing machine. The backup appliance stores backup data of the computing machine in a computer-readable storage device in the backup appliance.

Claims (86)

1. A method for storing back-up data, the method comprising:

receiving a backup request at a backup appliance, wherein the received backup request is from a backup agent running on a first computing machine, and wherein the backup request pertains to first data on the first computing machine;

dividing the first data into a plurality of blocks, wherein each block of the plurality of blocks contains a sub-section of the first data;

generating back-up data associated with each block of the first data, wherein the generated backup data includes corresponding hash information, and wherein the corresponding hash information includes two or more hashes associated with each block of the first data;

storing the plurality of blocks and generated back-up data of the first data in the backup appliance associated with the first computing machine;

coupling the backup appliance to a second computing machine; and

storing the plurality of blocks and generated back-up data of the first data on the second computing machine, wherein a second backup agent running on the second computing machine does not have access to stored data on the first computing machine, and wherein the backup agent running on the first computing machine does not have access to stored data on the second computing machine.

2. The method of claim 1 , wherein the corresponding hash information also includes a map of hashes corresponding to a version of the first data, and wherein the map of hashes is used to re-assemble the blocks of the first data using the two or more hashes associated with each block of the first data to form the corresponding version of the first data.

3. The method of claim 1 , further comprising:

determining that one or more blocks of the first data has been modified thereby corresponding to a modified version of the first data;

generating, for each modified block, modified back-up data associated with each block of the first data that has since been modified, wherein the modified back-up data includes hashes for the modified blocks and maps of hashes used to re-assemble corresponding blocks and back-up data of the first data to form the modified version of the first data; and

storing the modified blocks and modified back-up data of the first data in the back up appliance.

4. The method of claim 1 , further comprising:

receiving, by the backup appliance, a restore request, wherein the restore requests pertains to a previous version of the first data stored on the first computing machine;

retrieving the blocks and corresponding back-up data of the first data associated with the previous version of the stored first data;

re-assembling the previous version of the stored first data using the retrieved blocks and corresponding back-up data; and

overwriting a current version of the first data on the first computing machine with the re-assembled previous version of the stored first data on the first computing machine.

5. The method of claim 1 , further comprising:

assigning a time stamp for each version of the first data stored in the backup appliance;

comparing a current time stamp assigned to a current version of the first data to be stored with a previous time stamp assigned to a previous version of the first data stored in the backup appliance; and

restoring the previous version of the first data stored in the backup appliance when the assigned current time stamp for the current version is not later than the previous time stamp for the previous version.

6. The method of claim 1 , further comprising:

determining that a size of the blocks of a current version of the first data is larger than a pre-defined threshold;

retrieving a previous version of the first data that was stored, wherein the previous version of the first data having blocks that are smaller than the pre-defined threshold;

overwriting the current version of the first data with the previous version of the first data.

7. The method of claim 1 , wherein access between the first computing machine and the second computing machine is prevented via encryption.

8. The method of claim 1 , further comprising compressing data associated with the plurality of blocks and corresponding back-up data of the first data prior to storage.

9. The method of claim 1 , wherein the first computing machine further stores a data set, wherein the data set includes a plurality of data and maps corresponding to a version of the data set that the first computing machine can use to rebuild different versions of the data set from stored data.

10. A system for storing back-up data, comprising:

a first computing device including non-transitory memory storing a backup agent executable by a processor; and

a backup appliance including a processor that executes instructions stored in a non-transitory memory, wherein execution of the instructions:

receive a backup request, wherein the received back up request is from the backup agent, and wherein the backup request pertains to first data associated with the first computing device,

divide the first data into a plurality of blocks, wherein each block contains a sub-section of the first data stored within the computing device;

generate back-up data associated with each block of the first data, wherein the generated back-up data includes corresponding hash information, and wherein the corresponding hash information includes two or more hashes associated with each block of the first data,

store the plurality of blocks and generated backup data of the first data,

couple to a second computing machine; and

store the plurality of blocks and generated back-up data of the first data on the second computing machine, wherein a second backup agent running on the second computing machine does not have access to stored data on the first computing machine, and wherein the backup agent running on the first computing machine does not have access to stored data on the second computing machine.

11. The system of claim 10 , wherein the corresponding hash information includes a map of hashes corresponding to a version of the first data, and wherein the map of hashes is used to re-assemble the blocks of the first data using the hashes associated with each block of the first data to form the corresponding version of the first data.

12. The system of claim 10 , wherein the backup appliance executes instructions to further:

determine that one or more blocks of the first data has been modified thereby corresponding to a modified version of the first data;

generate, for each modified block, modified back-up data associated with each block of the first data that has since been modified, wherein the modified back-up data includes hashes for the modified blocks and maps of hashes used to re-assemble corresponding blocks and back-up data of the first data to form the modified version of the first data; and

store the modified blocks and modified back-up data of the first data.

13. The system of claim 10 , wherein the backup appliance executes further instructions to:

receive a restore request, wherein the restore requests pertains to a previous version of the first data stored on the first computing machine;

retrieve the blocks and corresponding back-up data of the first data associated with the previous version of the stored first data;

reassemble the previous version of the stored first data using the retrieved blocks and corresponding back-up data; and

overwrite a current version of the first data on the first computing machine with the re-assembled previous version of the stored first data on the first computing machine.

14. The system of claim 10 , wherein the backup appliance executes further instructions to:

assign a time stamp for each version of the first data stored in the backup appliance;

compare a current time stamp assigned to a current version of the first data to be stored with a previous time stamp assigned to a previous version of the first data stored in the backup appliance; and

restore the previous version of the first data stored in the backup appliance when the assigned current ntime stamp for the current version is not later than the previous timestamp for the previous version.

15. The system of claim 10 , wherein the backup appliance executes further instructions to:

determine that a size of the blocks of a current version of the first data is larger than a pre-defined threshold;

retrieve a previous version of the first data that was stored, wherein the previous version of the first data having blocks that are smaller than the pre-defined threshold;

overwrite the current version of the first data with the previous version of the first data.

16. The system of claim 10 , wherein access between the first computing machine and the second computing machine is prevented via encryption.

17. The system of claim 10 , wherein the backup appliance executes further instructions to compress data associated with the plurality of blocks and corresponding back-up data of the first data prior to storage.

18. The system of claim 10 , wherein the first computing machine further stores a data set, wherein the data set includes a plurality of data and maps corresponding to a version of the data set that the first computing machine can use to rebuild different versions of the data set from stored data.

19. A non-transitory computer-readable storage medium, having embodied thereon a program executable by a processor to perform a method for storing back-up data, the method comprising:

receiving a backup request at a backup appliance, wherein the received backup request is from a backup agent running on a first computing machine, and wherein the backup request pertains to first data on the first computing machine;

dividing the first data into a plurality of blocks, wherein each block contains a sub-section of the first data;

generating back-up data associated with each block of the first data, wherein the generated back-up data includes corresponding hash information, and wherein the corresponding hash information includes two or more hashes associated with each block of the first data;

storing the plurality of blocks and generated back-up data of the first data in the backup appliance associated with the first computing machine;

coupling the backup appliance to a second computing machine; and

storing the plurality of blocks and generated back-up data of the first data on the second computing machine, wherein a second backup agent running on the second computing machine does not have access to stored data on the first computing machine, and wherein the backup agent running on the first computing machine does not have access to stored data on the second computing machine.

20. The non-transitory computer-readable storage medium of claim 19 , wherein the corresponding hash information includes a map of hashes corresponding to a version of the first data, and wherein the map of hashes is used to re-assemble the blocks of the first data using the hashes associated with each block of the first data to form the corresponding version of the first data.

21. The non-transitory computer-readable storage medium of claim 19 , the program is further executable to:

identify that one or more blocks of the first data has been modified thereby corresponding to a modified version of the first data;

generate, for each modified block, modified back-up data associated with each block of the first data that has since been modified, wherein the modified back-up data includes hashes for the modified blocks and maps of hashes used to re-assemble corresponding blocks and back-up data of the first data to form the modified version of the first data; and

store the modified blocks and modified back-up data of the first data in the back up appliance.

22. The non-transitory computer-readable storage medium of claim 19 , the program is further executable to:

receive, by the backup appliance, a restore request, wherein the restore requests pertains to a previous version of the first data stored on the first computing machine;

retrieve the blocks and corresponding back-up data of the first data associated with the previous version of the stored first data;

re-assembly the previous version of the stored first data using the retrieved blocks and corresponding back-up data; and

overwrite a current version of the first data on the first computing machine with the re-assembled previous version of the stored first data on the first computing machine.

23. The non-transitory computer-readable storage medium of claim 19 , the program is further executable to:

assign a time stamp for each version of the first data stored in the backup appliance;

compare a current time stamp assigned to a current version of the first data to be stored with a previous time stamp assigned to a previous version of the first data stored in the backup appliance; and

restore the previous version of the first data stored in the backup appliance when the assigned current time stamp for the current version is not later than the previous timestamp for the previous version.

24. The non-transitory computer-readable storage medium of claim 19 , the program is further executable to:

identify that a size of the blocks of a current version of the first data is larger than a pre-defined threshold;

retrieve a previous version of the first data that was stored, wherein the previous version of the first data having blocks that are smaller than the pre-defined threshold; and

overwrite the current version of the first data with the previous version of the first data.

25. The non-transitory computer-readable storage medium of claim 19 , wherein access between the first computing machine and the second computing machine is prevented via encryption.

26. The non-transitory computer-readable storage medium of claim 19 , the program is further executable to compress data associated with the plurality of blocks and corresponding back-up data of the first data prior to storage.

27. The non-transitory computer-readable storage medium of claim 19 , wherein the first computing machine further stores a data set, wherein the data set includes a plurality of data and maps corresponding to a version of the data set that the first computing machine can use to rebuild different versions of the data set from stored data.

Assignments (20)
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
THIS SUBMISSION IS TO CORRECT AN ERROR TO ASSIGNEE'S NAME IN THE COVER SHEET PREVIOUSLY RECORDED AT REEL/FRAME: 034190/0490. ASSIGNOR HEREBY CONFIRMS THE MERGER Recorded Jul 8, 2021
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC.
Reel/Frame 056804/0877 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Apr 2, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 045818/0566 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 041073 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE INTELLECTUAL PROPERTY ASSIGNMENT.. Recorded Apr 5, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 042168/0114 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 23, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS, INC.
Reel/Frame 041073/0001 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
MERGER Recorded Dec 12, 2015
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 037277/0857 →
CONVERSION AND NAME CHANGE Recorded Dec 12, 2015
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 037278/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2014
From: ZHU, SHUNHUI; YANOVSKY, BORIS; DUNN, WILLIAM; COTTON, MATTHEW W.
To: SONICWALL, INC.
Reel/Frame 034190/0463 →
CHANGE OF NAME Recorded Nov 17, 2014
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 034190/0576 →
MERGER Recorded Nov 17, 2014
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
Reel/Frame 034190/0490 →
Continuity (2)
Continuation 12571250 · Sep 30, 2009
Related Publication 20140201486A1 · Jul 17, 2014