IP Library Granted Patent US 9,778,946
Granted Patent B2
US 9,778,946 · App. 12/537,831 · Granted Oct 3, 2017

Optimized copy of virtual machine storage files

Inventor: Dilip Naik (Redmond, WA)
Assignee: Dell Software Inc.
G06F9/45558G06F17/30067G06F17/30073G06F17/30088G06F17/30575G06F2009/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,778,946
App. No.
12/537,831
Granted
Oct 3, 2017
Kind
B2
Abstract

A facility is described for optimizing the copying of virtual machine storage files. In various embodiments, the facility refrains from copying portions of the virtual machine storage file that do not contain any meaningful data for the purposes of the guest file system within the virtual machine storage file. In some embodiments, the facility refrains from copying portions of the file that are in use by the guest file system, but are of no practical value.

Claims (62)

1. A method performed by a host computer system for performing an optimized copy of virtual machine storage files, the method comprising:

under control of a physical host computer system configured to execute virtual machines associated with virtual machine storage files, the physical host computer system having executing thereon a physical host operating system that provides one or more application programming interfaces (APIs):

mounting, as a volume, on the physical host computer system, a virtual machine storage file associated with one of the virtual machines;

determining a handle of the mounted volume via the one or more APIs of the physical host operating system;

wherein the virtual machine storage file comprises guest system metadata and a guest file system;

wherein the guest file system comprises a plurality of logical clusters having a file system cluster size expressible in bytes;

wherein the guest system metadata comprises a cluster bitmap, the cluster bitmap comprising information on whether each logical cluster of the guest file system is in use by the guest file system;

identifying the guest file system included in the virtual machine storage file via the handle and the one or more APIs of the physical host operating system;

obtaining, via the one or more APIs of the physical host operating system, the file system cluster size of the guest file system and a number of logical clusters in the plurality of logical clusters of the guest file system;

identifying, via the one or more APIs of the physical host operating system, a location within the virtual machine storage file of the first logical cluster of the guest file system;

copying, to a destination file, the virtual machine storage file from a beginning of the virtual machine storage file to the identified location of the first logical cluster of the guest file system;

accessing the cluster bitmap for information on whether each logical cluster in the guest file system is in use by the guest file system;

for each logical cluster of the plurality of logical clusters, determining, from the cluster bitmap, whether the logical cluster is in use by the guest file system;

for each logical cluster of the plurality of logical clusters, responsive to a determination that the logical cluster is not in use by the guest file system, advancing file pointer of the destination file by the file system cluster size without copying the logical cluster to the destination file; and

for each logical cluster of the plurality of logical clusters, responsive to a determination that the logical cluster is in use by the guest file system, copying the logical cluster to the destination file.

2. The method of claim 1 further comprising:

determining from the accessed cluster bitmap whether additional clusters remain to be processed; and

if additional clusters remain to be processed, further processing the cluster bitmap.

3. The method of claim 1 further comprising:

identifying a location within the virtual machine storage file of the last cluster of the guest file system; and

copying, to the destination file, the virtual machine storage file from the identified location of the last cluster of the guest file system to an end of the virtual machine storage file.

4. The method of claim 3 further comprising setting file meta data.

5. The method of claim 1 further comprising avoiding copying blocks occupied by a hibernation file or a paging file associated with the guest file system.

6. The method of claim 1 wherein the virtual machine storage file being copied comprises a guest operating system image associated with the guest file system.

7. The method of claim 1 wherein the virtual machine storage file being copied comprises the guest file system, but does not comprise a guest operating system image.

8. The method of claim 1 wherein the virtual machine storage file being copied comprises a single volume embedded within the virtual machine storage file.

9. The method of claim 1 wherein the virtual machine storage file being copied comprises multiple volumes embedded within the virtual machine storage file.

10. The method of claim 1 wherein the virtual machine storage file comprises a Microsoft specified VHD file format.

11. The method of claim 1 wherein the virtual machine storage file comprises a VMware specified VMDK file format.

12. The method of claim 1 wherein the virtual machine storage file is copied to multiple destination files.

13. The method of claim 1 further comprising:

determining, from the accessed cluster bitmap, clusters in the guest file system that are free; and

filling with zeroes portions of the destination file associated with the clusters determined to be free.

14. The method of claim 1 wherein accessing the virtual machine storage file comprises accessing the virtual machine storage file as a read-only volume attached to a host operating system of the host computer system.

15. A system for copying virtual machine storage files, the system comprising a physical host computer system configured to execute a virtual machine, the virtual machine associated with a guest operating system and a guest file system, the physical host computer system having executing thereon a physical host operating system that provides one or more application programming interfaces (APIs), the physical host computing system configured to implement a method comprising:

mounting, as a volume, on the physical host computer system, a virtual machine storage file associated with one of the virtual machines;

determining a handle of the mounted volume via the one or more APIs of the physical host operating system;

wherein the virtual machine storage file comprises guest system metadata and a guest file system;

wherein the guest file system comprises a plurality of logical clusters having a file system cluster size expressible in bytes;

wherein the guest system metadata comprises a cluster bitmap, the cluster bitmap comprising information on whether each logical cluster of the guest file system is in use by the guest file system;

identifying the guest file system included in the virtual machine storage file via the handle and the one or more APIs of the physical host operating system;

obtaining, via the one or more APIs of the physical host operating system, the file system cluster size of the guest file system and a number of logical clusters in the plurality of logical clusters of the guest file system;

identifying, via the one or more APIs of the physical host operating system, a location within the virtual machine storage file of the first logical cluster of the guest file system;

copying, to a destination file, the virtual machine storage file from a beginning of the virtual machine storage file to the identified location of the first logical cluster of the guest file system;

accessing the cluster bitmap for information on whether each logical cluster in the guest file system is in use by the guest file system;

for each logical cluster of the plurality of logical clusters, determining, from the cluster bitmap, whether the logical cluster is in use by the guest file system;

for each logical cluster of the plurality of logical clusters, responsive to a determination that the logical cluster is not in use by the guest file system, advancing file pointer of the destination file by the file system cluster size without copying the logical cluster to the destination file; and

for each logical cluster of the plurality of logical clusters, responsive to a determination that the logical cluster is in use by the guest file system, copying the logical cluster to the destination file.

16. A computer-program product comprising a non-transitory computer-usable medium having computer-readable program code embodied therein, the computer-readable program code adapted to be executed to implement a method, the method being performed by an agent installed in a computing environment on a computer system, the method comprising:

mounting, as a volume, on a physical host computer system, a virtual machine storage file associated with a virtual machine;

determining a handle of the mounted volume via one or more APIs provided by a physical host operating system executing on the physical host computer system;

wherein the virtual machine storage file comprises guest system metadata and a guest file system;

wherein the guest file system comprises a plurality of logical clusters having a file system cluster size expressible in bytes;

wherein the guest system metadata comprises a cluster bitmap, the cluster bitmap comprising information on whether each logical cluster of the guest file system is in use by the guest file system;

identifying the guest file system included in the virtual machine storage file via the handle and the one or more APIs of the physical host operating system;

obtaining, via the one or more APIs of the physical host operating system, the file system cluster size of the guest file system and a number of logical clusters in the plurality of logical clusters of the guest file system;

identifying, via the one or more APIs of the physical host operating system, a location within the virtual machine storage file of the first logical cluster of the guest file system;

copying, to a destination file, the virtual machine storage file from a beginning of the virtual machine storage file to the identified location of the first logical cluster of the guest file system;

accessing the cluster bitmap for information on whether each logical cluster in the guest file system is in use by the guest file system;

for each logical cluster of the plurality of logical clusters, determining, from the cluster bitmap, whether the logical cluster is in use by the guest file system;

for each logical cluster of the plurality of logical clusters, responsive to a determination that the logical cluster is not in use by the guest file system, advancing file pointer of the destination file by the file system cluster size without copying the logical cluster to the destination file; and

for each logical cluster of the plurality of logical clusters, responsive to a determination that the logical cluster is in use by the guest file system, copying the logical cluster to the destination file.

Assignments (28)
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/0649 →
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 →
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 →
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 →
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 →
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 →
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 →
CHANGE OF NAME Recorded Sep 11, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 043811/0564 →
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 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 →
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 Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
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 →
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 SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
CHANGE OF NAME Recorded Aug 19, 2013
From: QUEST SOFTWARE, INC.
To: DELL SOFTWARE INC.
Reel/Frame 031035/0914 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2011
From: NIRIVA LLC
To: QUEST SOFTWARE, INC.
Reel/Frame 026992/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2010
From: NAIK, DILIP
To: NIRIVA, LLC.
Reel/Frame 024153/0462 →
Continuity (1)
Related Publication 20110035358A1 · Feb 10, 2011