IP Library › Granted Patent US 9,672,060
Granted Patent B2
US 9,672,060 · App. 14/814,828 · Granted Jun 6, 2017

Managing virtual machine migration

Inventors: Shweta Behere (Sunnyvale, CA); Sung Ryu (Sunnyvale, CA); Joshua Flank (Sunnyvale, CA); Pradeep Thirunavukkarasu (Sunnyvale, CA)
Assignee: NETAPP, INC.
G06F9/45558G06F9/45512G06F2009/4557G06F2009/45579G06F2009/45583
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,672,060
App. No.
14/814,828
Granted
Jun 6, 2017
Kind
B2
Abstract

Exemplary embodiments provide techniques for managing VM migrations that use relatively simple and uncomplicated commands or APIs that can be executed through scripts or applications. Configuration and preparation for the conversion may be addressed by one set of command-lets or APIs, while the conversion itself is handled by a separate set of command-lets or APIs, which allows the conversion command-lets to be uncomplex and to require little input. Moreover, the architecture-specific commands can be largely abstracted away, so that the configuration and conversion processes can be carried out through straightforward general commands, which automatically cause an interface (e.g., at the conversion server) to call upon any necessary architecture-specific functionality. Still further, the information that must be entered by a user may be kept to a minimum, because the initial configuration information may be used by the system to automatically discover additional information that is needed to perform the conversion.

Claims (76)

1. A method comprising:

based on a request to migrate a first virtual machine from a first hypervisor of a first hypervisor type to a second hypervisor of a second hypervisor type,

executing a first set of commands via a first interface to collect configuration parameters about the first virtual machine, wherein executing the first set of commands at least causes execution of a first script within a guest operating system of the first virtual machine to determine at least a first configuration parameter of the configuration parameters;

querying the first virtual machine with the first configuration parameter to obtain additional configuration parameters which relate to virtual hardware of the first virtual machine; and

executing a second set of one or more commands defined by a second interface to configure a second virtual machine on the second hypervisor based, at least in part, on the configuration parameters about the first virtual machine, wherein the second interface defines the second set of commands for the second hypervisor type which is different than the first hypervisor type.

2. The method of claim 1 further comprising:

determining network parameters of the first virtual machine based, at least in part, on the execution of the first set of commands, wherein the network parameters indicate at least a mapping between a network interface and a media access control address of the first virtual machine; and

recreating the network parameters in the second hypervisor for the second virtual machine.

3. The method of claim 2 , wherein recreating the network parameters in the second hypervisor for the second virtual machine comprises:

determining that the first hypervisor utilizes physical network interfaces and the second hypervisor utilizes virtual network interfaces;

creating a virtualized network interface on the second hypervisor to emulate the network interface of the first virtual machine;

mapping the virtualized network interface to a media access control address similar to the media access control address of the first virtual machine; and

associating the second virtual machine with the mapped virtual network interface.

4. The method of claim 1 further comprising:

migrating the guest operating system from the first virtual machine to the second virtual machine; and

executing a second script on the migrated guest operating system to modify a configuration parameter of the migrated guest operating system for compatibility with the second virtual machine.

5. The method of claim 1 further comprising:

determining a first storage location for a virtual machine disk image of the first virtual machine based, at least in part, on the execution of the first set of commands;

storing configuration information to be used by the second hypervisor in the virtual machine disk image;

determining a second storage location for the virtual machine disk image to be stored for access by the second hypervisor; and

copying the virtual machine disk image from the first storage location to the second storage location.

6. The method of claim 5 further comprising:

converting the virtual machine disk image of the first virtual machine from a first type of virtual machine disk image compatible with the first hypervisor type to a common data format; and

converting the virtual machine disk image from the common data format to a second type of virtual machine disk image compatible with the second hypervisor.

7. The method of claim 1 , wherein executing the first set of commands via the first interface comprises identifying the first interface based, at least in part, on the first hypervisor type, wherein the first interface is an application programming interface for the first hypervisor.

8. One or more non-transitory machine-readable media comprising program code for migrating a virtual machine the program code to:

based on a request to migrate a first virtual machine from a first hypervisor of a first hypervisor type to a second hypervisor of a second hypervisor type,

execute a first set of commands via a first interface to collect configuration parameters about the first virtual machine, wherein the execution of the first set of commands at least causes execution of a first script within a guest operating system of the first virtual machine to determine one or more of the configuration parameters;

use one or more of the configuration parameters to query the first virtual machine to obtain additional configuration parameters which relate to virtual hardware available to the first virtual machine; and

execute a second set of one or more commands defined by a second interface to configure a second virtual machine on the second hypervisor based, at least in part, on the configuration parameters about the first virtual machine, wherein the second interface defines the second set of commands for the second hypervisor type which is different than the first hypervisor type.

9. The machine-readable media of claim 8 further comprising program code to:

determine network parameters of the first virtual machine based, at least in part, on the execution of the first set of commands, wherein the network parameters indicate at least a mapping between a network interface and a media access control address of the first virtual machine; and

recreate the network parameters in the second hypervisor for the second virtual machine.

10. The machine-readable media of claim 9 , wherein the program code to recreate the network parameters in the second hypervisor for the second virtual machine comprises:

determine that the first hypervisor utilizes physical network interfaces and that the second hypervisor utilizes virtual network interfaces;

create a virtualized network interface on the second hypervisor to emulate the network interface of the first virtual machine;

map the virtualized network interface to a media access control address similar to the media access control address of the first virtual machine; and

associate the second virtual machine with the mapped virtual network interface.

11. The machine-readable media of claim 8 further comprising program code to:

migrate the guest operating system from the first virtual machine to the second virtual machine; and

execute a second script on the migrated guest operating system to modify a configuration parameter of the migrated guest operating system for compatibility with the second virtual machine.

12. The machine-readable media of claim 8 further comprising program code to:

determine a first storage location for a virtual machine disk image of the first virtual machine based, at least in part, on the execution of the first set of commands;

store configuration information to be used by the second hypervisor in the virtual machine disk image;

determine a second storage location for the virtual machine disk image to be stored for access by the second hypervisor; and

copy the virtual machine disk image from the first storage location to the second storage location.

13. The machine-readable media of claim 12 further comprising program code to:

convert the virtual machine disk image of the first virtual machine from a first type of virtual machine disk image compatible with the first hypervisor type to a common data format; and

convert the virtual machine disk image from the common data format to a second type of virtual machine disk image compatible with the second hypervisor.

14. An apparatus comprising:

a processor; and

a machine-readable medium having program code executable by the processor to cause the apparatus to,

based on a request to migrate a first virtual machine from a first hypervisor of a first hypervisor type to a second hypervisor of a second hypervisor type,

execute a first set of commands via a first interface to collect configuration parameters about the first virtual machine, wherein the execution of the first set of commands at least causes execution of a first script within a guest operating system of the first virtual machine to determine one or more of the configuration parameters;

use one or more of the configuration parameters to query the first virtual machine to obtain additional configuration parameters which relate to virtual hardware available to the first virtual machine; and

execute a second set of one or more commands defined by a second interface to configure a second virtual machine on the second hypervisor based, at least in part, on the configuration parameters about the first virtual machine, wherein the second interface defines the second set of commands for the second hypervisor type which is different than the first hypervisor type.

15. The apparatus of claim 14 , further comprising to program code executable by the processor to cause the apparatus to:

determine network parameters of the first virtual machine based, at least in part, on the execution of the first set of commands, wherein the network parameters indicate at least a mapping between a network interface and a media access control address of the first virtual machine; and

recreate the network parameters in the second hypervisor for the second virtual machine.

16. The apparatus of claim 15 , wherein the program code executable by the processor to cause the apparatus to recreate the network parameters in the second hypervisor for the second virtual machine comprises program code executable by the processor to cause the apparatus to:

determine that the first hypervisor utilizes physical network interfaces and that the second hypervisor utilizes virtual network interfaces;

create a virtualized network interface on the second hypervisor to emulate the network interface of the first virtual machine;

map the virtualized network interface to a media access control address similar to the media access control address of the first virtual machine; and

associate the second virtual machine with the mapped virtual network interface.

17. The apparatus of claim 14 further comprising program code executable by the processor to cause the apparatus to:

migrate the guest operating system from the first virtual machine to the second virtual machine; and

execute a second script on the migrated guest operating system to modify a configuration parameter of the migrated guest operating system for compatibility with the second virtual machine.

18. The apparatus of claim 14 further comprising program code executable by the processor to cause the apparatus to:

determine a first storage location for a virtual machine disk image of the first virtual machine based, at least in part, on the execution of the first set of commands;

store configuration information to be used by the second hypervisor in the virtual machine disk image;

determine a second storage location for the virtual machine disk image to be stored for access by the second hypervisor; and

copy the virtual machine disk image from the first storage location to the second storage location.

19. The apparatus of claim 18 further comprising program code executable by the processor to cause the apparatus to:

convert the virtual machine disk image of the first virtual machine from a first type of virtual machine disk image compatible with the first hypervisor type to a common data format; and

convert the virtual machine disk image from the common data format to a second type of virtual machine disk image compatible with the second hypervisor.

20. The apparatus of claim 14 , wherein the program code executable by the processor to cause the apparatus to execute the first set of commands via the first interface comprises program code executable by the processor to cause the apparatus to identify the first interface based, at least in part, on the first hypervisor type, wherein the first interface is an application programming interface for the first hypervisor.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2016
From: BEHERE, SHWETA; RYU, SUNG; FLANK, JOSHUA; THIRUNAVUKKARASU, PRADEEP
To: NETAPP, INC.
Reel/Frame 038638/0911 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2015
From: RYU, SUNG; BEHERE, SHWETA; FLANK, JOSHUA
To: NETAPP INC.
Reel/Frame 037383/0164 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2015
From: RYU, SUNG
To: NETAPP INC
Reel/Frame 036227/0236 →
Continuity (2)
Provisional Application 62161802 · May 14, 2015
Related Publication 20160335106A1 · Nov 17, 2016