IP Library Granted Patent US 9,772,869
Granted Patent B2
US 9,772,869 · App. 14/606,798 · Granted Sep 26, 2017

System and method for performing efficient failover and virtual machine (VM) migration in virtual desktop infrastructure (VDI)

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,772,869
App. No.
14/606,798
Granted
Sep 26, 2017
Kind
B2
Abstract

Certain aspects direct to systems and methods for performing virtual machine (VM) management to provide efficient user login and minimize resource usage. The system includes a virtual machine server storing a hypervisor and multiple VMs, and a virtual desktop controller. The virtual desktop controller is configured to control the virtual machine server to execute the hypervisor, and to execute at least (M+S) instances of the VMs on the executed hypervisor. When the virtual desktop controller detects a current number X of the executed VMs on the executed hypervisor, the virtual desktop controller determines whether X is greater than M. If X is greater than M, the virtual desktop controller controls the virtual machine server to execute some instances unexecuted VMs as the spare VMs on the hypervisor, such that S instances of the spare VMs are available to provide efficient user login.

Claims (54)

1. A system, comprising:

a virtual machine server storing a hypervisor and a plurality of virtual machines (VMs) {VM- 1 , VM- 2 , . . . , VM-N}, wherein N is a positive integer greater than one;

a plurality of computing devices communicatively connected to the virtual machine server via a network, wherein each of the computing devices is configured to remotely access one of the executed VMs; and

a virtual desktop controller communicatively connected to the virtual machine server via an interface, wherein the virtual desktop controller comprises a processor, a memory, and a storage device storing computer executable code, wherein the computer executable code, when executed at the processor, is configured to:

control the virtual machine server to execute the hypervisor, and to execute at least (M+S) instances of the VMs as spare VMs on the executed hypervisor, wherein M and S are integers, 0≦M<N, and 0<S<N;

detect a current number X of the executed VMs assigned to the computing devices on the executed hypervisor, wherein X is an integer, and 0<X≦N;

determine whether the current number X is greater than M; and

in response to determining that X is greater than M, control the virtual machine server to execute a plurality of unexecuted VMs as the spare VMs on the executed hypervisor, such that at least S instances of the spare VMs are available, wherein the virtual machine server is configured to:

receive a first instruction from a first computing device of the computing devices to access one of the VMs, wherein the first computing device is not remotely accessing any of the executed VMs;

assign one of the spare VMs to the first computing device in response to the first instruction;

receive a second instruction from a second computing device of the computing devices to shut down a corresponding executed VM assigned to the second computing device, wherein the second computing device is remotely accessing the corresponding executed VM; and

shut down the corresponding executed VM in response to the second instruction.

2. The system as claimed in claim 1 , wherein the computer executable code, when executed at the processor, is further configured to:

when S is greater than (N−X), control the virtual machine server to execute all of the unexecuted VMs as the spare VMs on the hypervisor.

3. The system as claimed in claim 1 , wherein the virtual machine server is further configured to:

execute the hypervisor; and

execute the VMs on the executed hypervisor,

wherein each of the executed VMs is configured to be accessible for the computing devices functioning as a plurality of thin clients.

4. The system as claimed in claim 1 , wherein the computer executable code is configured to detect the current number X of the executed VMs assigned to the computing devices periodically.

5. The system as claimed in claim 1 , wherein each of the VMs is a shared instance of a pooled VM.

6. A method for performing virtual machine (VM) management to provide efficient user login and minimize resource usage, the method comprising:

controlling, by a processor of a virtual desktop controller, a virtual machine server to execute a hypervisor, and to execute at least (M+S) instances of a plurality of VMs {VM- 1 , VM- 2 , . . . , VM-N} as spare VMs on the executed hypervisor, wherein the virtual desktop controller is communicatively connected to the virtual machine server via an interface, N is a positive integer greater than one, and M and S are integers, wherein 0≦M<N, and 0<S<N;

detecting, by the processor of the virtual desktop controller, a current number X of the executed VMs assigned to a plurality of computing devices on the executed hypervisor, wherein the computing devices are communicatively connected to the virtual machine server via a network, wherein each of the computing devices is configured to remotely access one of the executed VMs, X is an integer, and 0<X≦N;

determining, by the processor of the virtual desktop controller, whether the current number X is greater than M; and

in response to determining that X is greater than M, controlling, by the processor of the virtual desktop controller, the virtual machine server to execute a plurality of unexecuted VMs as the spare VMs on the executed hypervisor, such that at least S instances of the spare VMs are available;

wherein the virtual machine server is configured to:

receive a first instruction from a first computing device of the computing devices to access one of the VMs, wherein the first computing device is not remotely accessing any of the executed VMs; and

assign one of the spare VMs to the first computing device in response to the first instruction;

receive a second instruction from a second computing device of the computing devices to shut down a corresponding executed VM assigned to the second computing device, wherein the second computing device is remotely accessing the corresponding executed VM; and

shut down the corresponding executed VM in response to the second instruction.

7. The method as claimed in claim 6 , further comprising: when S is greater than (N−X), controlling, by the processor of the virtual desktop controller, the virtual machine server to execute all of the unexecuted VMs as the spare VMs on the hypervisor.

8. The method as claimed in claim 6 , wherein each of the VMs is a shared instance of a pooled VM.

9. The method as claimed in claim 6 , wherein the virtual machine server is further configured to:

execute the hypervisor; and

execute the VMs on the executed hypervisor,

wherein each of the executed VMs is configured to be accessible for the computing devices functioning as a plurality of thin clients.

10. A non-transitory computer readable medium storing computer executable code, wherein the code, when executed at a processor of a virtual desktop controller, is configured to:

control a virtual machine server to execute a hypervisor, and to execute at least (M+S) instances of a plurality of VMs {VM- 1 , VM- 2 , . . . , VM-N} as spare VMs on the executed hypervisor, wherein the virtual desktop controller is communicatively connected to the virtual machine server via an interface, N is a positive integer greater than one, and M and S are integers, wherein 0≦M<N, and 0<S<N;

detect a current number X of the executed VMs assigned to a plurality of computing devices on the executed hypervisor, wherein the computing devices are communicatively connected to the virtual machine server via a network, wherein each of the computing devices is configured to remotely access one of the executed VMs, X is an integer, and 0<X≦N;

determine whether the current number X is greater than M; and

in response to determining that X is greater than M, control the virtual machine server to execute a plurality of unexecuted VMs as the spare VMs on the executed hypervisor, such that at least S instances of the spare VMs are available;

wherein the virtual machine server is configured to:

receive a first instruction from a first computing device of the computing devices to access one of the VMs, wherein the first computing device is not remotely accessing any of the executed VMs;

assign one of the spare VMs to the first computing device in response to the first instruction;

receive a second instruction from a second computing device of the computing devices to shut down a corresponding executed VM assigned to the second computing device, wherein the second computing device is remotely accessing the corresponding executed VM; and

shut down the corresponding executed VM in response to the second instruction.

11. The non-transitory computer readable medium as claimed in claim 10 , wherein the computer executable code, when executed at the processor, is further configured to:

when S is greater than (N−X), control the virtual machine server to execute all of the unexecuted VMs as the spare VMs on the hypervisor.

12. The non-transitory computer readable medium as claimed in claim 10 , wherein each of the VMs is a shared instance of a pooled VM.

13. The non-transitory computer readable medium as claimed in claim 10 , wherein the virtual machine server is further configured to:

execute the hypervisor; and

execute the VMs on the executed hypervisor,

wherein each of the executed VMs is configured to be accessible for the computing devices functioning as a plurality of thin clients.

14. The non-transitory computer readable medium as claimed in claim 10 , wherein the computer executable code is configured to detect the current number X of the executed VMs assigned to the computing devices periodically.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2020
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC,
To: AMZETTA TECHNOLOGIES, LLC,
Reel/Frame 053007/0151 →
CHANGE OF NAME Recorded Jun 22, 2020
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 053007/0233 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2015
From: BURRELL, BRANDON; RAMALINGAM, MUTHUKKUMARAN
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 034824/0070 →