IP Library Granted Patent US 10,860,442
Granted Patent B2
US 10,860,442 · App. 15/996,103 · Granted Dec 8, 2020

Systems, methods and computer readable media for business continuity and disaster recovery (BCDR)

Inventors: Philipp Heckel (Ladenburg, DE); Austin McChord (Norwalk, CT)
Assignee: DATTO, INC.
G06F11/1469G06F11/1451G06F11/1466G06F11/1484
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 10,860,442
App. No.
15/996,103
Granted
Dec 8, 2020
Kind
B2
Abstract

Disclosed systems, methods, and computer readable media relate to business continuity and disaster recovery (BCDR). According to some embodiments, disclosed systems, methods, and computer readable media can replicate a set of data blocks from a source computer to a target computer while the source computer is in operation and contents of the set of data blocks are changing. In some embodiments, disclosed systems, methods, and computer readable media can replicate a set of data blocks from a recovery computer to a target computer while the recovery computer is in operation and contents of the set of data blocks are changing, wherein the recovery computer is built from a protected computer.

Claims (46)

1. A method of replicating a set of data blocks from a source computer to a target computer while the source computer is in operation and contents of the set of data blocks are changing, the method comprising:

capturing a first crash-consistent snapshot of the source computer that performs computer functions, the first crash-consistent snapshot including contents of the set of data blocks at the source computer at a first point in time, wherein the contents at the first point in time comprise data that implements an operating system running on the source computer at the first point in time and files that are stored on the source computer at the first point in time;

issuing an instruction to build the target computer based on the first crash-consistent snapshot such that the target computer is prepared to take over the computer functions of the source computer and replicate an operating state of the source computer at the first point in time;

capturing a second crash-consistent snapshot of the source computer, the second crash-consistent snapshot including contents of the set of data blocks at the source computer at a second point in time, wherein the contents at the second point in time comprise data that implements an operating system running on the source computer at the second point in time and files that are stored on the source computer at the second point in time;

incrementally updating the target computer by:

computing a first data difference between the first crash-consistent snapshot and the second crash-consistent snapshot, and

when the first data difference is not null, issuing one or more first additional instructions, based on the first data difference, to the target computer to prepare the target computer to replicate the operating state of the source computer at the second point in time and to take over the computer functions of the source computer; and

upon issuing an instruction, to the target computer, to perform the computer functions of the source computer, capturing a finalization snapshot of the source computer, the finalization snapshot including contents of the set of data blocks at the source computer at a last point in time, wherein the contents at the last point in time comprise data that implements an operating system running on the source computer at the last point in time and files that are stored on the source computer at the last point in time,

computing a last data difference between a most recent crash-consistent snapshot and the finalization snapshot, and

issuing one or more final additional instructions, based on the last data difference, to the target computer to prepare the target computer to replicate the operating state of the source computer at the last point in time and to take over the computer functions of the source computer,

wherein the source computer is a recovery computer, and before capturing the first crash-consistent snapshot of the source computer, capturing a snapshot of a protected computer and provisioning the source computer based on the snapshot of the protected computer.

2. The method of claim 1 , wherein the snapshot of the protected computer is a finalization snapshot.

3. The method of claim 1 , wherein the protected computer is a physical machine and the source computer is a virtual machine (VM).

4. The method of claim 1 , wherein provisioning the source computer is based on at least one of a suspected malfunction, decommission, upgrade, and maintenance process of the protected computer.

5. The method of claim 1 , wherein the first crash-consistent snapshot is the most recent crash-consistent snapshot of the source computer when the instruction to build the target computer is issued based on the first crash-consistent snapshot.

6. The method of claim 1 , wherein the second crash-consistent snapshot is the most recent crash-consistent snapshot of the source computer when the first data difference between the first crash-consistent snapshot and the second crash-consistent snapshot is computed.

7. The method of claim 1 , wherein the second crash-consistent snapshot is the most recent crash-consistent snapshot of the source computer.

8. The method of claim 1 , wherein the instruction to the target computer to perform the computer functions of the source computer is issued based on at least one of a user-initiated event and a computer-initiated event.

9. The method of claim 1 , wherein when the target computer performs the computer functions of the source computer, the target computer overtakes a time-incremental schedule that is used by the source computer to capture one or more crash-consistent snapshots.

10. The method of claim 1 , upon receiving the instruction to perform the computer functions of the source computer, the target computer performs:

synchronizing the file system of the target computer with the file system of the source computer;

rebooting; and

testing the target computer to verify at least one of functionality and data integrity.

11. The method of claim 1 , the method further comprising determining whether the source computer is operating within desired parameters, wherein the instruction to build the target computer based on the first crash-consistent snapshot is issued when the source computer is determined to not be operating within the desired parameters.

12. A method of replicating a set of data blocks from a recovery computer to a target computer while the recovery computer is in operation and contents of the set of data blocks are changing, wherein the recovery computer is built from a protected computer, the method comprising:

capturing a snapshot of the protected computer;

provisioning the recovery computer based on the snapshot of the protected computer;

capturing a first snapshot of the recovery computer that performs computer functions, the first snapshot including contents of the set of data blocks at the recovery computer at a first point in time, wherein the contents at the first point in time comprise data that implements an operating system running on the recovery computer at the first point in time and files that are stored on the recovery computer at the first point in time;

issuing an instruction to build the target computer based on the first snapshot such that the target computer is prepared to take over the computer functions of the recovery computer and replicate an operating state of the recovery computer at the first point in time;

capturing a second snapshot of the recovery computer, the second snapshot including contents of the set of data blocks at the recovery computer at a second point in time, wherein the contents at the second point in time comprise data that implements an operating system running on the recovery computer at the second point in time and files that are stored on the recovery computer at the second point in time;

wherein a plurality of snapshots of the recovery computer, including the first snapshot and the second snapshot, are captured based on a time-incremental schedule of the recovery computer that is based on a time-incremental schedule of the protected computer;

incrementally updating the target computer by:

computing a data difference between the first snapshot and the second snapshot; and

when the data difference is not null, issuing one or more additional instructions, based on the data difference, to the target computer to prepare the target computer to replicate the operating state of the recovery computer at the second point in time and to take over the computer functions of the recovery computer; and

issuing an instruction, to the target computer, to perform the computer functions of the recovery computer, wherein the target computer, upon receiving the instruction to perform the computer functions of the recovery computer, synchronizes a file system of the target computer with a file system of the recovery computer and reboots.

13. The method of claim 12 , further comprising:

capturing a third snapshot of the recovery computer, the third snapshot including contents of the set of data blocks at the recovery computer at a third point in time, wherein the contents at the third point in time comprise data that implements an operating system running on the recovery computer at the third point in time and files that are stored on the recovery computer at the third point in time; and

before issuing the instruction to the target computer to perform the computer functions of the recovery computer, further incrementally updating the target computer by:

computing a second data difference between the second snapshot and the third snapshot; and

when the second data difference is not null, issuing one or more additional instructions, based on the second data difference, to the target computer to prepare the target computer to take over the computer functions of the recovery computer and to replicate the operating state of the recovery computer at the third point in time.

14. The method of claim 12 , wherein the instruction to the target computer to perform the computer functions of the recovery computer is issued based on at least one of a user-initiated event and a computer-initiated event.

15. The method of claim 12 , wherein when the target computer performs the computer functions of the recovery computer, the target computer overtakes the time-incremental schedule of the recovery computer to capture one or more snapshots of the target computer.

16. The method of claim 12 , wherein the protected computer is a physical machine and the recovery computer is a virtual machine (VM).

17. The method of claim 12 , wherein provisioning the recovery computer is based on at least one of a suspected malfunction, decommission, upgrade, test, and maintenance process of the protected computer.

18. The method of claim 12 , the method further comprising maintaining, after the target computer is instructed to perform the computer functions of the recovery computer, operation of the recovery computer, wherein the recovery computer continues to take one or more snapshots into a first plurality of snapshots, while the target computer takes one or more snapshots into a second plurality of snapshots.

19. The method of claim 12 , the method further comprising maintaining, after the target computer is instructed to perform the computer functions of the recovery computer, operation of the protected computer, wherein the protected computer continues to take one or more snapshots into a first plurality of snapshots, while the target computer takes one or more snapshots into a second plurality of snapshots.

Assignments (10)
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Mar 24, 2025
From: DATTO, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS SECOND LIEN COLLATERAL AGENT
Reel/Frame 070609/0599 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Mar 21, 2025
From: DATTO, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 070586/0681 →
RELEASE OF SECURITY INTEREST (PATENTS) Recorded Mar 20, 2025
From: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
To: DATTO, INC.
Reel/Frame 070583/0566 →
CHANGE OF NAME Recorded Oct 27, 2023
From: DATTO, INC.
To: DATTO, LLC
Reel/Frame 065385/0256 →
NOTICE OF GRANT OF SECURITY INTEREST IN PATENTS Recorded Aug 9, 2022
From: DATTO, INC.
To: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
Reel/Frame 061129/0839 →
RELEASE OF SECURITY INTEREST Recorded Jun 23, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: DATTO, INC.; AUTOTASK CORPORATION; OPEN MESH, INC.; SOONR, INC.
Reel/Frame 060293/0565 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 48776/0282 Recorded Oct 23, 2020
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: DATTO, INC.
Reel/Frame 054191/0913 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: DATTO, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 054191/0984 →
PATENT SECURITY AGREEMENT Recorded Apr 2, 2019
From: DATTO, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 048776/0282 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2018
From: HECKEL, PHILIPP; MCCHORD, AUSTIN
To: DATTO, INC.
Reel/Frame 046328/0876 →
Continuity (1)
Related Publication 20190370123A1 · Dec 5, 2019