IP Library Granted Patent US 10,359,969
Granted Patent B1
US 10,359,969 · App. 15/454,090 · Granted Jul 23, 2019

Creating virtual machine snapshots without interfering with active user sessions

Inventors: Iurii Ovchinnikov (Moscow, RU); Alexey Koryakin (Moscow, RU); Denis Lamtsov (Moscow, RU); Nikolay Dobrovolskiy (Moscow, RU); Serguei M. Beloussov (Singapore, SG)
Assignee: Parallels International GmbH
G06F3/065G06F3/067G06F3/0619G06F3/0664G06F9/4555G06F9/45537G06F9/45541G06F9/45545G06F9/45554G06F9/45558G06F9/45533G06F2009/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 10,359,969
App. No.
15/454,090
Granted
Jul 23, 2019
Kind
B1
Abstract

Systems and methods for creating virtual machine snapshots. An example method comprises: receiving a request to create a snapshot of a virtual machine running on a host computer system; protecting from modification a plurality of virtual memory pages of the virtual machine; responsive to detecting an attempt to modify a virtual memory page of the plurality of memory pages, copying the virtual memory page to a queue residing in a random access memory (RAM) of the host computer system; making the virtual memory page writable; retrieving the virtual memory page from the queue; writing the virtual memory page to a disk of the host computer system; and responsive to exhausting the queue, completing creation of the snapshot of the virtual machine.

Claims (54)

1. A method, comprising:

receiving, by a processor, a request to create a snapshot of a virtual machine running on a host computer system;

protecting from modification a plurality of virtual memory pages of the virtual machine;

responsive to detecting an attempt to modify a virtual memory page of the plurality of memory pages, copying the virtual memory page to a queue residing in a random access memory (RAM) of the host computer system;

making the virtual memory page writable;

retrieving the virtual memory page from the queue;

writing the virtual memory page to a disk of the host computer system; and

responsive to exhausting the queue, completing creation of the snapshot of the virtual machine.

2. The method of claim 1 , wherein writing the virtual memory page to the disk is performed asynchronously with respect to copying the virtual memory page to the queue.

3. The method of claim 1 , wherein writing the virtual memory page to the disk is performed without interrupting a user session associated with the virtual machine.

4. The method of claim 1 , wherein copying the virtual memory page to the queue is performed by a first processing thread and writing the virtual memory page to the disk is performed by a second processing thread.

5. The method of claim 1 , further comprising:

responsive to retrieving the virtual memory page from the queue, compressing the virtual memory page.

6. The method of claim 1 , further comprising:

responsive to retrieving the virtual memory page from the queue, compressing the virtual memory page;

copying the virtual memory page to a second queue residing in the RAM; and

retrieving the virtual memory page from the second queue.

7. The method of claim 1 , further comprising:

responsive to retrieving the virtual memory page from the queue, determining a value of a function of at least one of: available host memory or host processor utilization; and

responsive to determining that the value meets a threshold, compressing the virtual memory page.

8. The method of claim 1 , wherein protecting the plurality of memory pages from modification comprises modifying, in a paging table, respective writable flags associated with the plurality of memory pages.

9. The method of claim 1 , wherein writing the virtual memory page to the disk is performed by a system call bypassing an input/output (I/O) cache of the host computer system.

10. A system, comprising:

a memory; and

a processor coupled to the memory, the processor configured to:

receive a request to create a snapshot of a virtual machine running on a host computer system;

protect from modification a plurality of virtual memory pages of the virtual machine;

responsive to detecting an attempt to modify a virtual memory page of the plurality of memory pages, copy the virtual memory page to a first queue residing in a random access memory (RAM) of the host computer system;

make the virtual memory page writable;

responsive to retrieving the virtual memory page from the first queue, compress the virtual memory page to produce a compressed memory page;

copying the compressed memory page to a second queue residing in the RAM;

responsive to retrieving the compressed memory page from the second queue, write the compressed memory page to a disk of the host computer system; and

responsive to exhausting the second queue, complete creation of the snapshot of the virtual machine.

11. The system of claim 10 , wherein compressing the virtual memory page to the disk is performed asynchronously with respect to copying the virtual memory page to the first queue.

12. The system of claim 10 , wherein writing the virtual memory page to the disk is performed asynchronously with respect to copying the virtual memory page to the second queue.

13. The system of claim 10 , wherein copying the virtual memory page to the first queue is performed by a first processing thread, compressing the virtual memory page is performed by a second processing thread, and writing the virtual memory page to the disk is performed by a third processing thread.

14. The system of claim 10 , wherein protecting the plurality of memory pages from modification comprises modifying, in a paging table, respective writable flags associated with the plurality of memory pages.

15. The system of claim 10 , wherein writing the virtual memory page to the disk is performed by a system call bypassing an input/output (I/O) cache of the host computer system.

16. A non-transitory computer-readable storage medium comprising executable instructions that, when executed by a processor, cause the processor to:

receive a request to create a snapshot of a virtual machine running on a host computer system;

protecting from modification a plurality of virtual memory pages of the virtual machine;

responsive to detecting an attempt to modify a virtual memory page of the plurality of memory pages, copying the virtual memory page to a queue residing in a random access memory (RAM) of the host computer system;

making the virtual memory page writable;

retrieving the virtual memory page from the queue;

writing the virtual memory page to a disk of the host computer system; and

responsive to exhausting the queue, completing creation of the snapshot of the virtual machine.

17. The non-transitory computer-readable storage medium of claim 16 , wherein copying the virtual memory page to the queue is performed by a first processing thread and writing the virtual memory page to the disk is performed by a second processing thread.

18. The non-transitory computer-readable storage medium of claim 16 , further comprising:

responsive to retrieving the virtual memory page from the queue, compressing the virtual memory page.

19. The non-transitory computer-readable storage medium of claim 16 , further comprising:

responsive to retrieving the virtual memory page from the queue, compressing the virtual memory page;

copying the virtual memory page to a second queue residing in the RAM; and

retrieving the virtual memory page from the second queue.

20. The non-transitory computer-readable storage medium of claim 16 , wherein writing the virtual memory page to the disk is performed by a system call bypassing an input/output (I/O) cache of the host computer system.

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 Mar 9, 2017
From: OVCHINNIKOV, IURII; KORYAKIN, ALEXEY; LAMTSOV, DENIS; DOBROVOLSKIY, NIKOLAY; BELOUSSOV, SERGUEI M.
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 041525/0975 →
Cited By (1)
US 12,248,593