IP Library Granted Patent US 9,841,909
Granted Patent B2
US 9,841,909 · App. 15/352,545 · Granted Dec 12, 2017

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: SONICWALL INC.
G06F3/0617G06F3/065G06F3/067G06F3/0643
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,841,909
App. No.
15/352,545
Granted
Dec 12, 2017
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 (74)

1. A method for backing up data stored at a computer, the method comprising:

receiving over a communication interface data regarding a first version of one or more files stored at a first computing device, wherein the one or more files are associated with a plurality of discrete data parts, and wherein each discrete data part is associated with one or more versions;

generating a first mapping of the received first version data;

coordinating storage of the plurality of discrete data parts according to the first mapping, wherein the plurality of discrete data parts are stored at a second computing device;

receiving over the communication interface in real-time data regarding a changed version of the one or more files, the changed version data including change data regarding one or more of the plurality of discrete data parts that have changed, wherein the one or more changed data parts are each assigned a new version subsequent to at least one of the one or more versions previously associated with each changed data part;

generating a second mapping associated with the changed data parts;

coordinating the storage of the changed data parts at the second computing device according to the second mapping;

receiving a restore request to restore data associated with the one or more files, wherein the restore request is associated with at least the first version of the one or more files or with the changed version of the one or more files; and

transmitting restore data according to the restore request over the data communication interface.

2. The method of claim 1 , further comprising:

receiving data over the communication interface in real-time, the received data regarding a second changed version of the one or more files, the second changed version data including a second set of change data regarding at least one discrete data part that has changed since the second mapping was generated, wherein the at least one discrete data part is assigned a version identifier that is different from a corresponding version identifier that is associated with a related discrete data part of the one or more discrete data parts that are associated with the second mapping;

generating a third mapping associated with the at least one discrete data part that has changed; and

coordinating the storage of the at least one discrete changed data part at the second computing device according to the third mapping.

3. The method of claim 2 , further comprising:

identifying that the changed data parts associated with the second mapping is to be trimmed from the second computing device;

identifying that one or more of the changed data parts associated with the second mapping is to be deleted from the second computing device based on the identification that the changed data parts associated with the second mapping is to be trimmed from the second computing device, wherein one or more data parts that is to be deleted from the second computing device are not required to re-build the second changed version based on the version identifier being different from the corresponding version identifier; and

deleting one or more of the changed data parts associated with the second mapping.

4. The method of claim 1 , wherein each of the one or more changed data parts correspond to one or more data blocks associated with one or more data storage devices.

5. The method of claim 1 , wherein the restore data transmitted over the data communication interface includes the one or more changed data parts when the restore request is associated with the changed version of the one or more files.

6. The method of claim 2 , further comprising:

hashing data associated with the first version of the one or more files;

hashing data associated with the one or more changed data parts;

identifying differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts; and

identifying that the data associated with the first version of the one or more files has changed corresponding to the data associated with the one or more changed data parts based on the identified differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts.

7. The method of claim 6 , wherein the differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts are identified using a field programmable gate array (FPGA) that compares the hashing data associated with the first version of the one or more files with the hashing data associated with the one or more changed data parts.

8. A non-transitory computer readable storage medium having embodied thereon a program executable by a processor for implementing a method for backing up data stored at a computer, the method comprising:

receiving data over a communication interface data regarding a first version of one or more files stored at a first computing device, wherein the one or more files are associated with a plurality of discrete data parts, and wherein each discrete data part is associated with one or more versions;

generating a first mapping of the received first version data;

coordinating storage of the plurality of discrete data parts according to the first mapping, wherein the plurality of discrete data parts are stored at a second computing device;

receiving data over the communication interface in real-time, the received data regarding a changed version of the one or more files, the changed version data including change data regarding one or more of the plurality of discrete data parts that have changed, wherein the one or more changed data parts are each assigned a new version subsequent to at least one of the one or more versions previously associated with each changed data part;

generating a second mapping associated with the changed data parts;

coordinating the storage of the changed data parts at the second computing device according to the second mapping;

receiving a restore request to restore data associated with the one or more files, wherein the restore request is associated with at least the first version of the one or more files or with the changed version of the one or more files; and

transmitting restore data according to the restore request over the data communication interface.

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

receive data over the communication interface in real-time, the received data regarding a second changed version of the one or more files, the second changed version data including a second set of change data regarding at least one discrete data part that has changed since the second mapping was generated, wherein the at least one discrete data part is assigned a version identifier that is different from a corresponding version identifier that is associated with a related discrete data part of the one or more discrete data parts that are associated with the second mapping;

generate a third mapping associated with the at least one discrete data part that has changed; and

coordinate the storage of the at least one discrete changed data part at the second computing device according to the third mapping.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the program comprises further instructions executable to:

identify that the changed data parts associated with the second mapping is to be trimmed from the second computing device;

identify that one or more of the changed data parts associated with the second mapping is to be deleted from the second computing device based on the identification that the changed data parts associated with the second mapping is to be trimmed from the second computing device, wherein one or more data parts that is to be deleted from the second computing device are not required to re-build the second changed version based on the version identifier being different from the corresponding version identifier; and

delete one or more of the changed data parts associated with the second mapping.

11. The non-transitory computer-readable storage medium of claim 8 , wherein each of the one or more changed data parts correspond to one or data blocks associated with one or more data storage devices.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the restore data transmitted over the data communication interface includes the one or more changed data parts when the restore request is associated with the changed version of the one or more files.

13. The non-transitory computer-readable storage medium of claim 9 , wherein the program comprises further instructions executable to:

hash data associated with the first version of the one or more files;

hash data associated with the one or more changed data parts;

identify differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts; and

identify that the data associated with the first version of the one or more files has changed corresponds to the data associated with the one or more changed data parts based on the identified differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts are identified using a field programmable gate array (FPGA) that compares the hashing data associated with the first version of the one or more files with the hashing data associated with the one or more changed data parts.

15. An apparatus having embodied thereon a program executable by a processor for implementing a method for backing up data stored at a computer, the apparatus comprising:

a communication interface that receives data regarding a first version of one or more files stored at a first computing device, wherein the one or more files are associated with a plurality of discrete data parts, and wherein each discrete data part of the plurality of discrete data parts is associated with one or more versions;

a memory; and

a processor that executes instructions out of the memory to:

generate a first mapping of the received first version data,

coordinate storage of the plurality of discrete data parts according to the first mapping, wherein the plurality of discrete data parts are stored at a second computing device, the communication interface receives data in real-time, the received data regarding a changed version of the one or more files, and the changed version data including change data regarding one or more of the plurality of discrete data parts that have changed, and the one or more changed data parts are each assigned a new version subsequent to at least one of the one or more versions previously associated with each changed data part,

generate a second mapping associated with the changed data parts,

coordinate the storage of the changed data parts at the second computing device according to the second mapping, and

receives a restore request to restore data associated with the one or more files, wherein the restore request is associated with at least the first version of the one or more files or with the changed version of the one or more files, wherein restore data is transmitted according to the restore request over the data communication interface.

16. The apparatus of claim 15 , wherein the communication interface receives in real-time data regarding a second changed version of the one or more files, the second changed version data including a second set of change data regarding at least one discrete data part that has changed since the second mapping was generated, and wherein the processor executes further instructions to:

assign the at least one discrete data part a version identifier that is different from a corresponding version identifier that is associated with a related discrete data part of the one or more discrete data parts that are associated with the second mapping,

generate a third mapping associated with the at least one discrete data part that has changed; and

coordinate the storage of the at least one discrete changed data part at the second computing device according to the third mapping.

17. The apparatus of claim 16 , wherein the processor executes further instructions to:

identify the changed data parts associated with the second mapping that is to be trimmed from the second computing device;

identify one or more of the changed data parts associated with the second mapping that is to be deleted from the second computing device based on the identification that the changed data parts associated with the second mapping is to be trimmed from the second computing device, wherein one or more data parts that is to be deleted from the second computing device are not required to re-build the second changed version based on the version identifier being different from the corresponding version identifier; and

delete one or more of the changed data parts associated with the second mapping.

18. The apparatus of claim 15 , wherein each of the one or more changed data parts correspond to one or data blocks associated with one or more data storage devices.

19. The apparatus of claim 16 , wherein the processor executes further instructions to:

hash data associated with the first version of the one or more files;

hash data associated with the one or more changed data parts;

identify differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts; and

identify that the data associated with the first version of the one or more files has changed corresponds to the data associated with the one or more changed data parts based on the identified differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts.

20. The apparatus of claim 19 , further comprising a field programmable gate array (FPGA), wherein the differences in the hashing data associated with the first version of the one or more files and the hashing data associated with the one or more changed data parts are identified using the FPGA that compares the hashing data associated with the first version of the one or more files with the hashing data associated with the one or more changed data parts.

Assignments (10)
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 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2018
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 045828/0761 →
CHANGE OF NAME Recorded Apr 2, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 045818/0566 →
MERGER Recorded Feb 1, 2017
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 041146/0603 →
CONVERSION AND NAME CHANGE Recorded Feb 1, 2017
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 041588/0470 →
CHANGE OF NAME Recorded Feb 1, 2017
From: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
To: SONICWALL, INC.
Reel/Frame 041146/0424 →
MERGER Recorded Feb 1, 2017
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
Reel/Frame 041146/0139 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: ZHU, SHUNHUI; YANOVSKY, BORIS; DUNN, WILLIAM; COTTON, MATTHEW W.
To: SONICWALL, INC.
Reel/Frame 041145/0934 →
Continuity (3)
Continuation 14214013 · Mar 14, 2014
Continuation 12571250 · Sep 30, 2009
Related Publication 20170139613A1 · May 18, 2017