IP Library Granted Patent US 9,465,642
Granted Patent B1
US 9,465,642 · App. 14/672,675 · Granted Oct 11, 2016

Systems and methods for instant provisioning of virtual machine files

Inventor: Dilip Chhotubhai Naik (Redmond, WA)
Assignee: Dell Software Inc.
G06F9/45558G06F3/065G06F3/0619G06F3/0665G06F3/0689G06F2009/45562
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,465,642
App. No.
14/672,675
Filed
Mar 30, 2015
Granted
Oct 11, 2016
Kind
B1
Examiner
LEE, ADAM
Art Unit
2193
USPC
718/1
Abstract

Embodiments of systems and methods are described for instant provisioning (e.g., cloning, copying, replicating, migrating, backing up, restoring, etc.) of virtual machines, virtual machine files, or other types of files (e.g., database files). In some implementations, a cloned virtual machine file can present an illusion to multiple applications accessing the cloned file that the cloned file contains all the appropriate data (e.g., a file system volume), even while the clone file is still being filled with relevant data. In some embodiments, the systems and methods use a file system filter driver to intercept and redirect certain input/output (I/O) requests to the cloned file. The file system filter driver may use a data structure (e.g., a bitmap) to determine which logical units of the clone file have already been filled with data. In some embodiments, the systems and methods use the operating system to handle cached I/O requests, which may improve efficiency.

Claims (50)

1. A method for cloning a virtual disk file in a virtual computing environment, the method comprising:

under control of a computer system comprising one or more physical computing devices:

receiving a request to clone a source virtual disk file, the source virtual disk file comprising a source file system representing data stored in the source virtual disk file;

instructing a cloning application to begin cloning of a clone virtual disk file from the source virtual disk file, the clone virtual disk file comprising a clone file system representing data stored or to be stored in the clone virtual disk file;

launching a virtual machine, wherein the virtual machine has access to the entire clone file system of the clone virtual disk file before the cloning of the clone virtual disk file is completed;

receiving a write request from the cloning application to write data to a region in the clone virtual disk file;

determining whether the region in the clone virtual disk file has been written, wherein:

if the region has been written, communicating to the cloning application that the write has been performed without performing the write request to the clone virtual disk file; and

if the region has not been written, performing the write request to the clone virtual disk file.

2. The method of claim 1 , further comprising:

receiving a read request from an application executing in the virtual machine for data represented in the clone file system of the clone virtual disk file;

determining whether the data has been written to the clone virtual disk file, wherein:

if the data has been written, retrieving the data from the clone virtual disk file; and

if the data has not been written, retrieving the data from the source virtual disk file;

receiving a write request from an application executing on the virtual machine or from a cache manager configured to cache input/output requests to the clone virtual disk file; and

performing the write request from the application executing on the virtual machine or from the cache manager to the clone virtual disk file.

3. The method of claim 2 , further comprising associating a data structure with the clone virtual disk file, the data structure configured to track whether regions of the clone virtual disk file have been written to.

4. The method of claim 3 , wherein the data structure is not configured to track identity of an application that performed a write to a region of the clone virtual disk file.

5. The method of claim 3 , wherein the data structure comprises a bitmap.

6. The method of claim 3 , wherein determining whether the region on the clone virtual disk file has been written comprises accessing the data structure to determine whether the region on the clone virtual disk file has been written to.

7. The method of claim 3 , further comprising updating the data structure after a region of the clone virtual disk file has been written to.

8. The method of claim 3 , further comprising storing the data structure in a persistent memory.

9. The method of claim 2 , further comprising using a cloning filter for determining whether the data has been written to the clone virtual disk file and determining whether the region on the clone virtual disk file has been written.

10. The method of claim 9 , further comprising:

launching the cloning filter in a parent partition of a host computer; and

launching the virtual machine in a child partition of the host computer.

11. The method of claim 10 , wherein the cloning filter is configured to act as a file system filter driver in the parent partition and as a volume filter driver in the child partition.

12. The method of claim 9 , further comprising, after completion of the cloning of the clone virtual disk file, terminating the cloning filter.

13. The method of claim 9 , further comprising, after completion of the cloning of the clone virtual disk file, removing the cloning filter from input/output paths of applications executing on the virtual machine.

14. The method of claim 2 , further comprising, if the write request from the application executing on the virtual machine or from the cache manager to the clone virtual disk file is successful, updating a data structure associated with the clone virtual disk file that is configured to track whether regions of the clone virtual disk file have been written to.

15. A system for cloning a virtual disk file in a virtual computing environment, the system comprising:

a host server comprising a parent partition and a child partition, the parent partition comprising a virtual machine management system, the child partition comprising a virtual machine having a guest operating system and one or more applications that access resources of the host server

a data store comprising at least a source virtual machine disk file and a clone virtual machine disk file, the clone virtual machine disk file comprising one or more volumes accessible to the guest operating system; and

a management module executed by or in network communication with the host server, the management module configured to:

instruct a cloning application to begin cloning the source virtual machine disk file to the clone virtual machine disk file, the cloning application configured to execute in the parent partition;

instantiate a cloning filter in the parent partition, the cloning filter configured to act as a file system filter driver in the parent partition and as a volume filter driver in the child partition; and

wherein the cloning filter is further configured to, in response to a request from the one or more applications for data in the one or more volumes of the clone virtual disk file, direct the request to the clone virtual disk file if the data has been written to the clone virtual disk file and direct the request to the source virtual disk file if the data has not been written to the clone virtual disk file.

16. The system of claim 15 , wherein the cloning filter is further configured to:

in response to a request from the cloning application to write data to a portion of the clone virtual machine disk file, prevent the cloning application from overwriting the portion of the clone virtual machine disk file if the portion has already been written.

17. The system of claim 16 , wherein the request from the one or more applications for data in the one or more volumes of the clone virtual disk file is a non-cached read request.

18. The system of claim 16 , wherein the cloning filter is associated with a data structure configured to track whether regions of the clone virtual disk file have been written to.

19. The system of claim 18 , wherein the cloning filter is further configured to update the data structure upon successful completion of a write to the clone virtual machine disk.

20. A method for copying a source file to a target file in a virtual computing environment, the method comprising:

under control of a host computer comprising a virtualization layer supporting a parent partition and a child partition, the child partition executing a virtual machine having a guest operating system and one or more applications that access resources of the host computer via the virtualization layer, the host computer in communication with a data store storing the source file and the target file:

executing, in the parent partition, a copying application that copies the source file to the target file; and

executing, in the parent partition, a cloning filter configured to intercept write requests by the copying application and read requests by the one or more applications of the virtual machine;

receiving, during the copying, a write request from the copying application to write to a portion of the target file, wherein in response to the write request, the method comprises:

determining, by the cloning filter, whether the portion of the target file has been written:

if the portion has been written, returning an indication that the write request has been performed without actually performing the write; and

if the portion has not been written to the target file, writing the portion to the target file.

Assignments (27)
RELEASE OF SECURITY INTEREST Recorded Nov 19, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073606/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 18, 2025
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073613/0326 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0001 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0649 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 058952/0279 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: GOLDMAN SACHS BANK USA
Reel/Frame 058945/0778 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
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 Dec 6, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044800/0848 →
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 →
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 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 →
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 →
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 →
RELEASE OF REEL 035860 FRAME 0797 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
Reel/Frame 040028/0551 →
RELEASE OF REEL 035860 FRAME 0878 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
Reel/Frame 040027/0158 →
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 →
RELEASE OF REEL 035858 FRAME 0612 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
Reel/Frame 040017/0067 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Jun 9, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 035858/0612 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 9, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC; SECUREWORKS, INC.; STATSOFT, INC.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035860/0878 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jun 9, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 035860/0797 →
CHANGE OF NAME Recorded Apr 2, 2015
From: QUEST SOFTWARE, INC.
To: DELL SOFTWARE INC.
Reel/Frame 035365/0033 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2015
From: NAIK, DILIP CHHOTUBHAI
To: QUEST SOFTWARE, INC.
Reel/Frame 035313/0878 →
Continuity (3)
Continuation 13869188 · Apr 24, 2013
Continuation 13101863 · May 5, 2011
Provisional Application 61332137 · May 6, 2010