IP Library Granted Patent US 10,691,638
Granted Patent B1
US 10,691,638 · App. 15/409,317 · Granted Jun 23, 2020

File management in virtualized computing environments using sparse files

Inventors: Maxim Lyadvinsky (Moscow, RU); Nikolay Dobrovolskiy (Moscow, RU); Serguei M. Beloussov (Singapore, SG)
Assignee: Parallels International GmbH
G06F16/13G06F3/067G06F3/0622G06F3/0643G06F9/452G06F9/45545G06F9/45558G06F16/16G06F16/182G06F16/188G06F2009/45583G06F2009/45595
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,691,638
App. No.
15/409,317
Granted
Jun 23, 2020
Kind
B1
Abstract

The subject matter of this specification can be implemented in, among other things, a method that includes receiving, from within a guest operating system, a request to create a data file in a guest file system of the guest operating system. The method further includes in response to the receipt of the request to create the data file, creating an external data file in a first storage device for a file system outside the guest file system, creating a sparse file in the guest file system, and storing metadata that directs requests to access the sparse file from within the guest operating system to the external data file in the first storage device.

Claims (79)

1. A method comprising:

executing, by a processing device of a computer system, a hypervisor to manage one or more virtual machines that each include a guest operating system, wherein the guest operating system comprises a guest file system and supports an access to the virtual machine from a client device;

receiving, by the processing device, from within the guest operating system, a request to store a first data file in the guest file system;

in response to receiving the request to store the first data file:

storing the first data file in a first storage device for a file system outside the guest file system, the first data file having a first file path in a folder structure of the file system outside the guest file system;

storing a second data file in the guest file system, wherein the second data file is a sparse file for the first data file, the second data file having a second file path in a folder structure of the guest file system, wherein the second file path shares a common portion with the first file path; and

storing metadata for the second data file, wherein the metadata directs requests to access the second data file from within the guest operating system to the first data file stored in the first storage device, the metadata comprising an identifier of the common portion for determining a location of the second data file;

receiving, from the guest operating system, a request to access the second data file;

receiving the metadata for the second data file; and

in response to receiving the request to access the second data file, providing access to the first data file in the first storage device based on the metadata for the second data file.

2. The method of claim 1 , wherein storing the first data file in the first storage device for a file system outside the guest file system comprises:

storing the first data file in the guest file system;

receiving an indication that the first data file is to be stored outside the guest file system; and

moving the first data file to the first storage device.

3. The method of claim 1 , wherein the request to access the second data file comprises a request to read the second data file, and wherein providing access to the first data file comprises providing data from the first data file in the first storage device.

4. The method of claim 1 , wherein the request to access the second data file comprises a request to write to the second data file, and wherein providing access to the first data file comprises writing data to the first data file in the first storage device.

5. The method of claim 1 , further comprising:

receiving a request to move the first data file from the first storage device to a second storage device;

in response to receiving the request to move the first data file:

moving the first data file from the first storage device to the second storage device; and

updating the metadata for the second data file to direct requests to access the second data file from within the guest operating system to the first data file in the second storage device.

6. The method of claim 1 , further comprising:

receiving, from within the guest operating system, a request to access the second data file;

failing to provide access to the first data file in the first storage device;

in response to failing to provide access to the first data file, requesting a location of the first data file;

receiving the location of the first data file in a second storage device; and

in response to receiving the location of the first data file, updating the metadata for the second data file to direct requests to access the second data file from within the guest operating system to the first data file in the second storage device.

7. A non-transitory computer-readable medium having instructions stored thereon that, when executed by a processing device, cause the processing device to:

execute a hypervisor to manage one or more virtual machines that each include a guest operating system, wherein the guest operating system comprises a guest file system and supports an access to the virtual machine from a client device;

receive, from within the guest operating system, a request to store a first data file in the guest file system;

in response to receiving the request to store the first data file:

store the first data file in a first storage device for a file system outside the guest file system, the first data file having a first file path in a folder structure of the file system outside the guest file system;

store a second data file in the guest file system, wherein the second data file is a sparse file for the first data file, the second data file having a second file path in a folder structure of the guest file system, wherein the second file path shares a common portion with the first file path; and

store metadata for the second data file, wherein the metadata directs requests to access the second data file from within the guest operating system to the first data file in the first storage device, the metadata comprising an identifier of the common portion for determining a location of the second data file;

receive, from the guest operating system, a request to access the second data file;

receive the metadata for the second data file; and

in response to receiving the request to access the second data file, provide access to the first data file in the first storage device based on the metadata for the second data file.

8. The computer-readable medium of claim 7 , wherein the request to access the second data file comprises a request to read the second data file, and wherein, to provide access to the first data file, the instructions are further to cause the processing device to provide data from the first data file in the first storage device.

9. The computer-readable medium of claim 7 , wherein the request to access the second data file comprises a request to write to the second data file, and wherein, to provide access to the first data file, the instructions are further to cause the processing device to write data to the first data file in the first storage device.

10. The computer-readable medium of claim 7 , wherein the instructions are further to cause the processing device to:

receive a request to move the first data file from the first storage device to a second storage device;

in response to receiving the request to move the first data file:

move the first data file from the first storage device to the second storage device; and

update the metadata for the second data file to direct requests to access the second data file from within the guest operating system to the first data file in the second storage device.

11. The computer-readable medium of claim 7 , wherein the instructions are further to cause the processing device to:

receive, from within the guest operating system, a request to access the second data file;

fail to provide access to the first data file in the first storage device;

in response to failing to provide access to the first data file, request a location of the first data file;

receive the location of the first data file in a second storage device; and

in response to receiving the location of the first data file, update the metadata for the second data file to direct requests to access the second data file from within the guest operating system to the first data file in the second storage device.

12. A system comprising:

a memory that stores instructions; and

a processing device to execute the instructions to:

execute a hypervisor to manage one or more virtual machines that each include a guest operating system, wherein the guest operating system comprises a guest file system and supports an access to the virtual machine from a client device;

receive, from within the guest operating system, a request to store a first data file in the guest file system;

in response to receiving the request to store the first data file:

store the first data file in a first storage device for a file system outside the guest file system, the first data file having a first file path in a folder structure of the file system outside the guest file system;

store a second data file in the guest file system, wherein the second data file is a sparse file for the first data file, the second data file having a second file path in a folder structure of the guest file system, wherein the second file path shares a common portion with the first file path; and

store metadata for the second data file, wherein the metadata directs requests to access the second data file from within the guest operating system to the first data file in the first storage device, the metadata comprising an identifier of the common portion for determining a location of the second data file;

receive, from the guest operating system, a request to access the second data file;

receive the metadata for the second data file; and

in response to receiving the request to access the second data file, provide access to the first data file in the first storage device based on the metadata for the second data file.

13. The system of claim 12 , wherein, to store the first data file in the first storage device for a file system outside the guest file system, the processing device is to:

store the first data file in the guest file system;

receive an indication that the first data file is to be stored outside the guest file system; and

move the first data file to the first storage device.

14. The system of claim 12 , wherein the request to access the second data file comprises a request to read the second data file, and wherein, to provide access to the first data file, the processing device is further to execute the instructions to provide data from the first data file in the first storage device.

15. The system of claim 12 , wherein the request to access the second data file comprises a request to write to the second data file, and wherein, to provide access to the first data file, the processing device is further to execute the instructions to write data to the first data file in the first storage device.

16. The system of claim 12 , wherein the processing device is further to execute the instructions to:

receive a request to move the first data file from the first storage device to a second storage device;

in response to receiving the request to move the first data file:

move the first data file from the first storage device to the second storage device; and

update the metadata for the second data file to direct requests to access the second data file from within the guest operating system to the first data file in the second storage device.

17. The system of claim 12 , wherein the processing device is further to execute the instructions to:

receive, from within the guest operating system, a request to access the second data file;

fail to provide access to the first data file in the first storage device;

in response to failing to provide access to the first data file, request a location of the first data file;

receive the location of the first data file in a second storage device; and

in response to receiving the location of the first data file, update the metadata for the second data file to direct requests to access the second data file from within the guest operating system to the first data file in the second storage device.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Jul 18, 2019
From: UBS AG, STAMFORD BRANCH, AS ADMINISTRATIVE AND COLLATERAL AGENT
To: COREL CORPORATION; CLEARSLIDE, INC.; PARALLELS INTERNATIONAL GMBH
Reel/Frame 049787/0073 →
RELEASE OF SECURITY INTEREST RECORDED AT : REEL 047973 FRAME 0797 Recorded Jul 17, 2019
From: UBS AG, STAMFORD BRANCH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 049773/0590 →
SECURITY INTEREST Recorded Dec 21, 2018
From: PARALLELS INTERNATIONAL GMBH
To: UBS AG, STAMFORD BRANCH
Reel/Frame 047973/0797 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2017
From: LYADVINSKY, MAXIM; DOBROVOLSKIY, NIKOLAY; BELOUSSOV, SERGUEI M.
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 041010/0891 →
Cited By (6)
US 12,282,653 US 12,461,630 US 12,499,090 US 12,524,116 US 12,524,117 US 12,704,928