IP Library Granted Patent US 9,720,719
Granted Patent B2
US 9,720,719 · App. 14/139,621 · Granted Aug 1, 2017

Method and system for optimizing virtual disk provisioning

Inventor: Simon Graham (Bolton, MA)
Assignee: CITRIX SYSTEMS, INC.
G06F9/45558G06F8/68G06F3/0664
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,720,719
App. No.
14/139,621
Granted
Aug 1, 2017
Kind
B2
Abstract

A first computing device is provided for virtual disk provisioning. The first computing device includes one or more processors configured to provide a first virtual disk and a first publish differencing disk. The one or more processors are further configured to obtain meta data associated with the first virtual disk and the first publish differencing disk, and generate one or more first differencing patches and one or more second differencing patches. The first and second differencing patches having a binary format. The first computing device further includes a storage configured to store data associated with the first virtual disk and the first publish differencing disk, the meta data, and the one or more first and second differencing patches. The first computing device further includes a communication subsystem configured to provide one or more first and second differencing patches to provision the virtual machine associated with a second computing device.

Claims (73)

1. A first computing device for provisioning a virtual machine, the first computing device comprising:

one or more processors configured to:

provide a first virtual disk and a first publish differencing disk, wherein the first virtual disk is associated with a first mainline version, and the first publish differencing disk represents modifications of the first virtual disk,

obtain a first set of meta data associated with the first virtual disk and a second set of meta data associated with the first publish differencing disk wherein the first set of meta data includes information associated with one or more first sectors corresponding to the first virtual disk, and wherein the second set of meta data includes information associated with one or more second sectors corresponding to modifications of the first virtual disk;

generate, based on the first set of meta data, one or more first differencing patches corresponding to the first virtual disk using the one or more first sectors, and, based on the second set of meta data, one or more second differencing patches corresponding to the first publish differencing disk using the one or more second sectors, the first and second differencing patches having a binary format;

a storage configured to store data associated with the first virtual disk and the first publish differencing disk, the first set of meta data, the second set of meta data, and the one or more first and second differencing patches; and

a communication subsystem partially implemented in hardware configured to provide the one or more first differencing patches and the one or more second differencing patches to provision the virtual machine associated with a second computing device.

2. The first computing device of claim 1 , wherein the first virtual disk and the first publish differencing disk support at least one of VHD format, VHDX format, VMDK format, qcow format, qcow2 format, VDI format, and HDD format.

3. The first computing device of claim 1 , wherein at least the first virtual disk corresponds to a system disk of the second computing device.

4. The first computing device of claim 1 , wherein the one or more processors are configured to generate the one or more first and second differencing patches further comprises the one or more processors to:

identify, using the meta data associated with the first virtual disk, the one or more first sectors corresponding to the first virtual disk;

identify, using the meta data associated with the first publish differencing disk, the one or more second sectors corresponding to the modifications of the first virtual disk;

apply the identified one or more first sectors to generate the one or more first differencing patches; and

apply the identified one or more second sectors to generate the one or more second differencing patches.

5. The first computing device of claim 1 , wherein the one or more processors are further configured to:

provide a second virtual disk and a second publish differencing disk, wherein the second virtual disk represents modifications between a second mainline version and the first mainline version, and the second publish differencing disk represents modifications of the second virtual disk; and

obtain meta data associated with the second virtual disk and the second publish differencing disk.

6. The first computing device of claim 5 , wherein the one or more processors are further configured to generate, based on the meta data associated with the second virtual disk and the second publish differencing disk, one or more third differencing patches corresponding to the second virtual disk and one or more fourth differencing patches corresponding to the second publish differencing disk, the third and fourth differencing patches having a binary format.

7. The first computing device of claim 6 , wherein the communication subsystem is further configured to provide the third and fourth differencing patches to update the provisioning of the virtual machine associated with the second computing device.

8. The first computing device of claim 1 , wherein the one or more processors are further configured to

provide a second virtual disk, wherein the second virtual disk represents modifications between a second mainline version and the first mainline version;

determine whether to roll back the second mainline version to the first mainline version; and

delete the second virtual disk based on the determination.

9. The first computing device of claim 1 , wherein the first and second differencing patches have a VCDIFF format.

10. The first computing device of claim 1 , wherein the second computing device is designated for testing.

11. A method for provisioning a virtual machine, the method being performed by a first computing device that includes one or more processors, the method comprising:

providing a first virtual disk and a first publish differencing disk, wherein the first virtual disk is associated with a first mainline version, and the first publish differencing disk represents modifications of the first virtual disk;

obtaining a first set of meta data associated with the first virtual disk and a second set of meta data associated with the first publish differencing disk wherein the first set of meta data includes information associated with one or more first sectors corresponding to the first virtual disk, and wherein the second set of meta data includes information associated with one or more second sectors corresponding to modifications of the first virtual disk;

generating, based on the first set of meta data, one or more first differencing patches corresponding to the first virtual disk using the one or more first sectors, and, based on the second set of meta data, one or more second differencing patches corresponding to the first publish differencing disk using the one or more second sectors, the first and second differencing patches having a binary format;

storing data associated with the first virtual disk and the first publish differencing disk, the first set of meta data, the second set of meta data, and the one or more first and second differencing patches; and

providing the one or more first differencing patches and the one or more second differencing patches to provision the virtual machine associated with a second computing device.

12. The method of claim 11 , wherein the first virtual disk and the first publish differencing disk support at least one of VHD format, VHDX format, VMDK format, qcow format, qcow2 format, VDI format, and HDD format.

13. The method of claim 11 , wherein at least the first virtual disk corresponds to a system disk of the second computing device.

14. The method of claim 11 , wherein generating the one or more first and second differencing patches comprising:

identifying, using the meta data associated with the first virtual disk, the one or more first sectors corresponding to the first virtual disk;

identifying, using the meta data associated with the first publish differencing disk, the one or more second sectors corresponding to the modifications of the first virtual disk;

applying the identified one or more first sectors to generate the one or more first differencing patches; and

applying the identified one or more second sectors to generate the one or more second differencing patches.

15. The method of claim 11 , further comprising:

providing a second virtual disk and a second publish differencing disk, wherein the second virtual disk represents modifications between a second mainline version and the first mainline version, and the second publish differencing disk represents modifications of the second virtual disk; and

obtaining meta data associated with the second virtual disk and the second publish differencing disk.

16. The method of claim 15 , further comprising generating, based on the meta data associated with the second virtual disk and the second publish differencing disk, one or more third differencing patches corresponding to the second virtual disk and one or more fourth differencing patches corresponding to the second publish differencing disk, the third and fourth differencing patches having a binary format.

17. The method of claim 16 , further comprising providing the third and fourth differencing patches to update the provisioning of the virtual machine associated with the second computing device.

18. The method of claim 11 , further comprising:

providing a second virtual disk, wherein the second virtual disk represents modifications between a second mainline version and the first mainline version;

determining whether to roll back the second mainline version to the first mainline version; and

deleting the second virtual disk based on the determination.

19. The method of claim 11 , wherein the first and second differencing patches have a VCDIFF format.

20. The method of claim 11 , wherein the second computing device is designated for testing.

21. A non-transitory computer readable storage medium storing instructions that are executable by a first computing device that includes one or more processors to cause the first computing device to perform a method for provisioning a virtual machine, the method comprising:

providing a first virtual disk and a first publish differencing disk, wherein the first virtual disk is associated with a first mainline version, and the first publish differencing disk represents modifications of the first virtual disk;

obtaining a first set of meta data associated with the first virtual disk and a second set of meta data associated with the first publish differencing disk wherein the first set of meta data includes information associated with one or more first sectors corresponding to the first virtual disk, and wherein the second set of meta data includes information associated with one or more second sectors corresponding to modifications of the first virtual disk;

generating, based on the first set of meta data, one or more first differencing patches corresponding to the first virtual disk using the one or more first sectors, and, based on the second set of meta data, one or more second differencing patches corresponding to the first publish differencing disk using the one or more second sectors, the first and second differencing patches having a binary format;

storing data associated with the first virtual disk and the first publish differencing disk, the first set of meta data, the second set of meta data, and the one or more first and second differencing patches; and

providing the one or more first differencing patches and the one or more second differencing patches to provision the virtual machine associated with a second computing device.

22. The computer readable storage medium of claim 21 , wherein the first virtual disk and the first publish differencing disk support at least one of VHD format, VHDX format, VMDK format, qcow format, qcow2 format, VDI format, and HDD format.

23. The computer readable storage medium of claim 21 , wherein at least the first virtual disk corresponds to a system disk of the second computing device.

24. The computer readable storage medium of claim 21 , wherein generating the one or more first and second differencing patches comprising:

identifying, using the meta data associated with the first virtual disk, the one or more first sectors corresponding to the first virtual disk;

identifying, using the meta data associated with the first publish differencing disk, the one or more second sectors corresponding to the modifications of the first virtual disk;

applying the identified one or more first sectors to generate the one or more first differencing patches; and

applying the identified one or more second sectors to generate the one or more second differencing patches.

25. The computer readable storage medium of claim 21 , further comprising:

providing a second virtual disk and a second publish differencing disk, wherein the second virtual disk represents modifications between a second mainline version and the first mainline version, and the second publish differencing disk represents modifications of the second virtual disk; and

obtaining meta data associated with the second virtual disk and the second publish differencing disk.

26. The computer readable storage medium of claim 25 , further comprising generating, based on the meta data associated with the second virtual disk and the second publish differencing disk, one or more third differencing patches corresponding to the second virtual disk and one or more fourth differencing patches corresponding to the second publish differencing disk, the third and fourth differencing patches having a binary format.

27. The computer readable storage medium of claim 26 , further comprising providing the third and fourth differencing patches to update the provisioning of the virtual machine associated with the second computing device.

28. The computer readable storage medium of claim 21 , further comprising:

providing a second virtual disk, wherein the second virtual disk represents modifications between a second mainline version and the first mainline version;

determining whether to roll back the second mainline version to the first mainline version; and

deleting the second virtual disk based on the determination.

29. The computer readable storage medium of claim 21 , wherein the first and second differencing patches have a VCDIFF format.

30. The computer readable storage medium of claim 21 , wherein the second computing device is designated for testing.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 8, 2014
From: GRAHAM, SIMON
To: CITRIX SYSTEMS, INC.
Reel/Frame 031921/0278 →
Continuity (1)
Related Publication 20150178105A1 · Jun 25, 2015