IP Library Granted Patent US 10,795,688
Granted Patent B2
US 10,795,688 · App. 16/042,399 · Granted Oct 6, 2020

System and method for performing an image-based update

Inventors: John Roland (Fairfield, CT); Chad Kosie (Norwalk, CT); Philipp Heckel (Ladenburg, DE)
Assignee: DATTO, INC.
G06F9/441G06F3/065G06F3/0619G06F3/0673G06F8/658
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,795,688
App. No.
16/042,399
Granted
Oct 6, 2020
Kind
B2
Abstract

A target device operating on a first operating system can receive an incremental update for a second operating system and store in a first data set a snapshot of the second the second operating system based on the incremental update. The target device may then export an image of the second operating system to a second data set and boot into the second image. The target device may receive operating system updates, build operating system images in the background, and boot into the updated operating system when the process is complete. Storing snapshots of the incremental updates and previous operating system images allows for reversion to old operating systems.

Claims (71)

1. A method of updating an operating system on a target device using incremental updates, comprising:

storing, in a target device memory a first operating system image according to a first file system on the target device;

storing, in the target device memory, a snapshot of the first operating system image in a target-device-held series of snapshots according to a second file system on the target device that is snapshot capable;

receiving, by the target device and from a remote storage device, data equivalent to a snapshot of a second operating system image, the second operating system image being an image of an updated version of the first operating system image;

forming the snapshot of second operating system image from the data equivalent to the snapshot of the second operating system image;

storing, in the target device, the snapshot of the second operating system image in the target-device-held series of snapshots according to the second file system on the target device;

exporting, to the target device memory, a second operating system image containing data representative of the snapshot of the second operating system image;

storing, in the target device memory the second operating system image according to the first file system on the target device; and

booting the target device using the second operating system image.

2. The method of claim 1 , wherein the equivalent data of the snapshot of the second operating system image is an incremental operating system update representative of a difference between the snapshot of the first operating system image and the snapshot of the second operating system image.

3. The method of claim 2 , wherein the forming the snapshot of the second operating system image comprises snapshotting the incremental operating system update and at least some of the data associated with the snapshot of the first operating system image.

4. The method of claim 1 , further comprising copying user configurations from the first operating system image to the second operating system image according to the first file system on the target device.

5. The method of claim 1 , wherein the first file system on the target device is not a snapshot-capable operating system.

6. The method of claim 1 , further comprising maintaining, in the target-device-held series of snapshots the snapshot of the first operating system image and the snapshot of the second operating system image representing pairwise differences between the first operating system image and the second operating system image.

7. The method of claim 1 , wherein the storing, in the target device memory the second operating system image includes maintaining data blocks representative of the first operating system image in the first file system on the target device.

8. The method of claim 7 , further comprising:

determining the success of the boot of the target device using the second operating system image; and

on the condition of determining an unsuccessful boot of the target device, booting the target device using the first operating system image.

9. The method of claim 1 , further comprising receiving, during a target device check-in, a notification that the target device is scheduled to receive equivalent data of the snapshot of the second operating system image from a plurality of snapshots of a plurality of operating system images stored on the remote storage device.

10. The method of claim 9 , further comprising transmitting, to the remote storage device, information identifying the operating system version of the first operating system image.

11. A method of updating an operating system on a target device using incremental updates, comprising:

storing, in a target device first data set a first operating system image;

storing, in a target device second data set, a snapshot of the first operating system image comprising a first set of data blocks representing the first operating system image and information pointing to the first set of data blocks;

receiving, by the target device and from a remote storage device, data equivalent to a snapshot of a second operating system image, wherein the second operating system image is an image of an updated version of the first operating system image and wherein the data equivalent to a snapshot of the second operating system image includes at least one additional data block representing one or more pairwise differences between the snapshot of the first operating system image and the snapshot of the second operating system image;

forming the snapshot of second operating system image from the data equivalent to the snapshot of the second operating system image, wherein the snapshot of the second operating system image comprises at least one of the blocks in the first set of data blocks and the at least one additional data block;

storing, in the target device second data set, the snapshot of the second operating system image;

exporting, to the target device first data set, a second operating system image containing data representative of the snapshot of the second operating system image;

storing, in the target device first data set the second operating system image; and

booting the target device using the second operating system image.

12. The method of claim 11 , wherein the equivalent data of the snapshot of the second operating system image is an incremental operating system update, and the equivalent data of the snapshot of the second operating system image further comprises information identifying the blocks to be included in the snapshot of the second operating system image.

13. The method of claim 12 , wherein the forming the snapshot of the second operating system image comprises snapshotting at least one of the blocks in the first set of data blocks and the at least one additional data block based on the information identifying the blocks to be included in the snapshot of the second operating system image.

14. The method of claim 11 , further comprising copying user configurations from the first operating system image to the second operating system image according to the target device first data set.

15. The method of claim 11 , wherein the target device first data set is stored according to a file system that is not a snapshot-capable file system.

16. The method of claim 11 , wherein the target device second data set is stored according to a file system that is a snapshot-capable file system.

17. The method of claim 11 , further comprising maintaining, in the target device second data set the snapshot of the first operating system image and the snapshot of the second operating system image.

18. The method of claim 11 , wherein the storing, in the target device first data set the second operating system image includes maintaining blocks representative of the first operating system image in the target device first data set.

19. The method of claim 18 , further comprising:

determining of the boot of the target device using the second operating system image was successful; and

on the condition of determining an unsuccessful boot of the target device, booting the target device using the first operating system image.

20. The method of claim 11 , further comprising receiving, during a target device check-in, a notification that the target device is scheduled to receive equivalent data of the snapshot of the second operating system image from a plurality of snapshots of a plurality of operating system images stored on the remote storage device.

21. The method of claim 20 , further comprising transmitting, to the remote storage device, information identifying the operating system version of the first operating system image.

22. A method of updating operating systems on a fleet of target devices using incremental updates, comprising:

storing, a first operating system image in a first data set on at least one target device of the fleet of target devices;

storing, a snapshot of the first operating system image comprising a first set of data blocks representing the first operating system image and information pointing to the first set of data blocks in a second data set on the at least one target device of the fleet of target devices;

receiving, by the at least one target device of the fleet of target devices and from a remote storage device, first data equivalent to a snapshot of a second operating system image, wherein the second operating system image is an image of an updated version of the first operating system image and wherein the data equivalent to a snapshot of the second operating system image includes at least one additional data block representing one or more pairwise differences between the snapshot of the first operating system image and the snapshot of the second operating system image;

forming the snapshot of second operating system image from the first data equivalent to the snapshot of the second operating system image, wherein the snapshot of the second operating system image comprises at least one of the blocks in the first set of data blocks and the at least one additional data block;

storing, in the second data set on the at least one target device of the fleet of target devices, the snapshot of the second operating system image;

exporting, to the first data set on the at least one target device of the fleet of target devices, a second operating system image containing data representative of the snapshot of the second operating system image;

storing, in the first data set on the at least one target device of the fleet of target devices the second operating system image; and

booting the at least one target device of the fleet of target devices using the second operating system image.

23. The method of claim 22 , further comprising:

storing, a third operating system image in a first data set on at least one other target device of the fleet of target devices;

storing, a snapshot of the third operating system image comprising a third set of data blocks representing the third operating system image and information pointing to the first set of data blocks in a second data set on the at least one other target device of the fleet of target devices;

receiving, by the at least one other target device of the fleet of target devices and from a remote storage device, second data equivalent to the snapshot of a second operating system image, wherein the second operating system image is an image of an updated version of the third operating system image and wherein the data equivalent to a snapshot of the second operating system image includes at least one other additional data block representing one or more pairwise differences between the snapshot of the third operating system image and the snapshot of the second operating system image;

forming the snapshot of second operating system image from the second data equivalent to the snapshot of the second operating system image, wherein the snapshot of the second operating system image comprises at least one of the blocks in the third set of data blocks and the at least one other additional data block;

storing, in the second data set on the at least one other target device of the fleet of target devices, the snapshot of the second operating system image;

exporting, to the first data set on the at least one other target device of the fleet of target devices, a second operating system image containing data representative of the snapshot of the second operating system image;

storing, in the first data set on the at least one other target device of the fleet of target devices the second operating system image; and

booting the at least one other target device of the fleet of target devices using the second operating system image.

24. The method of claim 23 , wherein at least one of the first equivalent data of the snapshot of the second operating system image and the second equivalent data of the snapshot of the second operating system image is an incremental operating system update, and the at least one of the first equivalent data of the snapshot of the second operating system image and the second equivalent data of the snapshot of the second operating system image further comprises information identifying the blocks to be included in the snapshot of the second operating system image.

25. The method of claim 24 , wherein the forming the snapshot of the second operating system image from at least one of from the first data equivalent to the snapshot of the second operating system image and the second data equivalent to the snapshot of the second operating system image comprises snapshotting at least one of the blocks in the first set of data blocks and the at least one additional data block and at least one of the blocks in the third set of data blocks and the at least one other additional data block based on the information identifying the blocks to be included in the snapshot of the second operating system image.

26. The method of claim 23 , further comprising copying user configurations from the first operating system image to the second operating system image according to the first data set on at least one target device.

27. The method of claim 23 , wherein the first data set on at least one target device is stored according to a file system that is not a snapshot-capable file system.

28. The method of claim 23 , wherein the second data set on the at least one target device is stored according to a file system that is a snapshot-capable file system.

29. The method of claim 23 , further comprising maintaining, in the second data set on the at least one target device the snapshot of the first operating system image and the snapshot of the second operating system image.

30. The method of claim 23 , wherein the storing, in the first data set on at least one target device the second operating system image includes maintaining blocks representative of the first operating system image in the first data set on at least one target device.

31. The method of claim 30 , further comprising:

determining of the boot of the at least one target device using the second operating system image was successful; and

on the condition of determining an unsuccessful boot of the at least one target, booting the at least one target using the first operating system image.

32. The method of claim 23 , further comprising receiving, during a check-in for at least one of the at least one target device, a notification that the at least one target device is scheduled to receive first equivalent data of the snapshot of the second operating system image from a plurality of snapshots of a plurality of operating system images stored on the remote storage device.

33. The method of claim 23 , further comprising transmitting, to the remote storage device, information identifying the operating system version of the first operating system image on the at least one target device.

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 Aug 7, 2018
From: ROLAND, JOHN; KOSIE, CHAD; HECKEL, PHILIPP
To: DATTO, INC.
Reel/Frame 046572/0448 →