Virtual machine mobility using resource pools

In one embodiment, a portable virtual machine may use a generic resource allocation request to access a host resource. A virtualization host may receive a generic resource allocation request 400 from a portable virtual machine 302. The virtualization host may provide a host resource to the portable virtual machine 302 based on the generic resource allocation request 400.

BACKGROUND

A virtual machine operating on a virtualization host may be configured to specifically run on that virtualization host. The virtual machine may make specific requests for a host resource by naming a host resource specific to that virtualization host. If that virtual machine is moved from a source virtualization host to a target virtualization host, the virtual machine may be reconfigured to operate on the target virtualization host. An allocation request from the virtual machine may not produce the proper result in the target virtualization host without reconfiguration.

SUMMARY

Embodiments discussed below relate to a portable virtual machine using a generic resource allocation request to access a host resource. A virtualization host may receive a generic resource allocation request from a portable virtual machine. The virtualization host may provide a host resource to the portable virtual machine based on the generic resource allocation request.

DETAILED DESCRIPTION

Embodiments are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the subject matter of this disclosure. The implementations may be a machine-implemented method, a tangible machine-readable medium having a set of instructions detailing a method stored thereon for at least one processor, or a virtualization host for a computing device.

Through the use of resource pools, a portable virtual machine may eliminate the tight coupling between a virtual machine configuration and the host resources of a specific host. Resource pools may act as an abstraction layer between the physical characteristics of a system and the requests of the virtual machine. The virtualization host may either assign the host resources directly to a resource pool, or lend part or all of the host resource capacity to the resource pool. The portable virtual machine may then reference a resource pool and specify the functional characteristics of the requested allocation, rather than having to reference a specific resource directly.

In this way, the virtual machine may move from one host system, referred to as a source virtualization host, to another host system, referred to as a target virtualization host, without reconfiguration. The source virtualization host and the target virtualization host may have the same resource pool topology aggregating the host resources. Each resource pool may be uniquely identifiable on a particular virtualization host. The virtual machine configuration may reference a specific resource pool.

The virtual machine configuration may also contain a resource criterion or a configuration specification. For instance, the virtual machine configuration may specify a specific network, using a particular virtual local area network identifier, and having at least a minimum amount of bandwidth. The resource pool may use this information to find a host resource capable of connecting to the specified network with the bandwidth available.

Upon selection, a resource pool may configure the host resource to use the specified virtual local area network identifier and reserve the bandwidth for the virtual machine before making the host resource available to the virtual machine. The virtualization host may allocate and connect the host resource to the virtual machine dynamically, leaving the virtual machine configuration unchanged.

If multiple resources may meet the resource criterion, the resource pool may apply a distribution calculation for determining which host resource to select, such as a load balancing calculation, a priority calculation, an availability calculation, or a consolidation calculation. A distribution calculation is any calculation used to determine the proper use of a set of resources, such as a load balancing calculation, a priority calculation, or an availability calculation. A load balancing calculation determines an even distribution of resources. A priority calculation determines if a virtual machine has initial choice of higher performance resources. An availability calculation reallocates other resources when that resource was not available. A consolidation calculation determines an optimal grouping of the resources for the virtual machine.

The portable virtual machine may move seamlessly between virtualization hosts. A user or management client may create symmetrical resource pools, with matching aliases, on each host to which the virtual machine might be moved. Next, the resource pools may manage the host resources in whole or in part. The virtual machine may be instantiated upon any of these virtualization hosts without reconfiguration. Though the virtual machine may be remapped to different resources on each host, the level of abstraction provided by the resource pools may allow the virtual machine to remain agnostic of these details.

Thus, in one embodiment, a portable virtual machine may use a generic resource allocation request to access a host resource. A generic resource allocation request asks for a host resource without having to be reconfigured depending on the virtualization host. A virtualization host may receive a generic resource allocation request from a portable virtual machine. The virtualization host may provide a host resource to the portable virtual machine based on the generic resource allocation request.

FIG. 1illustrates a block diagram of an exemplary computing device100which may act as a virtualization host. The computing device100may combine one or more of hardware, software, firmware, and system-on-a-chip technology to implement a virtualization host. The computing device100may include a bus110, a processor120, a memory130, a read only memory (ROM)140, a storage device150, an input device160, an output device170, and a communication interface180. The bus110may permit communication among the components of the computing device100.

The processor120may include at least one conventional processor or microprocessor that interprets and executes a set of instructions. The memory130may be a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by the processor120. The memory130may also store temporary variables or other intermediate information used during execution of instructions by the processor120. The ROM140may include a conventional ROM device or another type of static storage device that stores static information and instructions for the processor120. The storage device150may include any type of tangible machine-readable medium, such as, for example, magnetic or optical recording media and its corresponding drive. The storage device150may store a set of instructions detailing a method that when executed by one or more processors cause the one or more processors to perform the method. The storage device150may also be a database or a database interface for storing a host resource profile.

The input device160may include one or more conventional mechanisms that permit a user to input information to the computing device100, such as a keyboard, a mouse, a voice recognition device, a microphone, a headset, etc. The output device170may include one or more conventional mechanisms that output information to the user, including a display, a printer, one or more speakers, a headset, or a medium, such as a memory, or a magnetic or optical disk and a corresponding disk drive. The communication interface180may include any transceiver-like mechanism that enables computing device100to communicate with other devices or networks. The communication interface180may include a network interface or a mobile transceiver interface. The communication interface180may be a wireless, wired, or optical interface.

The computing device100may perform such functions in response to a processor120executing sequences of instructions contained in a computer-readable medium, such as, for example, the memory130, a magnetic disk, or an optical disk. Such instructions may be read into the memory130from another computer-readable medium, such as the storage device150, or from a separate device via the communication interface180.

FIG. 2Aillustrates, in a block diagram, one embodiment of a direct resource association200. Normally, a virtual machine210may access a host resource220using information specific to the virtualization host in which the mobile virtual machine210operates. If a virtual machine210is being moved from a source virtualization host to a target virtualization host, a user or management client may specify how to transform the virtual machine configuration to reference a specific host resource220on the physical system of the target virtualization host. During this transformation, the user or management client may examine the resources on the target virtualization host to determine the suitable resources for the virtual machine210. The user or management client may then modify the virtual machine configuration to reference the target host resources220before instantiating the virtual machine210in the target virtualization host.

FIG. 2Billustrates, in a block diagram, one embodiment of an abstracted resource association250. A resource pool260frees a virtual machine210from having to reference a specific host resource220directly. Instead, the resource pool260may function as a collection of host resources220, presenting a set of capabilities to the virtual machines210. The resource pool260may have an identifier that serves as an alias for this collection of host resources. Thus, the virtual machine210may be configured by specifying one or more resource criteria describing the capabilities of the host resources220and, by specifying an alias, the resource pool260. When the virtual machine210is instantiated, the resource criteria may be passed to the resource pool260with the specified resource pool alias. The resource pool260may then select an appropriate host resource220from the resource pool collection. The virtual machine210may avoid gathering information about the configuration or runtime properties of the source virtualization host, examining or reconfiguring the resources on the target virtualization host, or modifying the virtual machine configuration in order to move between virtualization hosts.

By referencing a resource pool260, the virtual machine210may skip reconfiguration before accessing a target virtualization host. The virtual machine210may make a generic resource allocation request to access one or more host resources represented by the resource pool260using a resource pool alias. The resource pool260may be associated with at least one of a networking resource261, a processor resource262, a memory resource263, a storage resource264, or other host resources265. A resource pool260may be of a uniform type, such as a resource pool having just storage resources264, or of a heterogeneous type, such as a resource pool having a network resource261and a processor resource262.

A virtual machine may be moved from a source virtualization host to a target virtualization host by reconfiguring the virtual machine for the new virtual environment.FIG. 3Aillustrates, in a block diagram, one embodiment of the initial state300of a virtual machine transfer. A user may seek to transfer a virtual machine302from a source virtualization host304to a target virtualization host306. The virtual machine302may have a source virtual machine configuration308in the source virtualization host304. The source virtual machine configuration308describes the source host resources that the virtual machine302may be using. For example, the source virtual machine configuration308may list the resource pools as “Customer1”, the Ethernet port as “Port1”, and the storage location as “C:\MyFile.ext”.

Based on this virtual machine configuration308, the virtual machine302may access a storage file310located in a path of “C:\MyFile.ext”, kept by a storage resource pool312at the storage resource for “Customer1”. The virtual machine302may access a source switch port314at “Port1,” with a virtual local area network (VLAN) identifier of12, a bandwidth of 1 gigabyte, and acceleration enabled. The source switch port314may use a network resource pool316for “Customer1” having a source local area network (LAN) Ethernet switch318and a source internet Ethernet switch320. Because of the source virtual machine configuration308, the switch port314may select to use the local area network Ethernet switch318.

The target virtualization host306may have a target storage resource pool322for “Customer1”. The target virtualization host306may also have a target network resource pool324for “Customer1” associated with a target local area network Ethernet switch326and a target internet Ethernet switch328. The location of the host resources associated with the target storage resource pool322and the target network resource pool324may not be located in the same place as the source storage resource pool312and the source network resource pool316.

FIG. 3Billustrates, in a block diagram, one embodiment of the configuration state330of a virtual machine transfer. In this state, the target virtualization host306may be configured to match the source virtualization host304. For example, the target virtualization host306may copy the source storage file310to create a target storage file332, having a storage location path of “F:\MyFile.ext”. The target virtualization host306may create and configure a target switch port334in the target virtualization host306. The target switch port334may be at “Port2,” with a virtual local area network identifier of 12, a bandwidth of 1 gigabyte, and acceleration enabled. Since the switch port configuration is not part of the virtual machine configuration, the target virtualization host306may gather the switch port information through other techniques. Note that the path to the target storage file332and the name of the target switch port334may be different, as file systems may have a different structure and switch port names may be unique across data centers.

FIG. 3Cillustrates, in a block diagram, one embodiment of the modification state340of a virtual machine transfer. The source virtual machine configuration308may be copied to the target virtualization host306to create the target virtual machine configuration342. The target virtual machine configuration342may be modified to reflect changes to the storage location and the switch port name. For example, the target virtual machine configuration342may list the resource pools as “Customer1”, the Ethernet port as “Port2”, and the storage location as “F:\MyFile.ext”.

FIG. 3Dillustrates, in a block diagram, one embodiment of the final state350of a virtual machine transfer. In the final state350, a copy of the virtual machine302is moved from the source virtualization host304to the target virtualization host306. The virtual machine302may transfer because of the modification to the virtual machine configuration. If a copy of the virtual machine302is left on the source virtualization host304, the identifier for the virtual machine302may be changed to differentiate between the virtual machine302on the source virtualization host304and the target virtualization host306.

By using the resource pool to create a level of abstraction between the host resources and the mobile virtual machine, a mobile virtual machine may use a generic resource allocation request to move between virtualization hosts without reconfiguration. A generic resource allocation request asks for a host resource without having to be reconfigured depending on the virtualization host. Instead, the generic resource allocation request may request a resource pool, using a resource pool alias. The resource pool alias may allow the virtualization host to supply the host resource while allowing the virtual machine to use the same generic resource allocation request on multiple virtualization hosts.FIG. 4illustrates, in a block diagram, one embodiment of a generic resource allocation request400. The generic resource allocation request400may have a virtual machine identifier (VM ID)410to identify the virtual machine requesting the host resource. The generic resource allocation request400may have a resource pool alias420identifying the resource pool. The generic resource allocation request400may have a configuration specification430describing how to configure the host resource for use by the virtual machine. The generic resource allocation request400may have a resource criterion440to guide the virtualization host in selecting a host resource for the virtual machine.

By using the generic resource allocation request, a mobile virtual machine may be moved between virtualization hosts without reconfiguration.FIG. 5Aillustrates, in a block diagram, one embodiment of the initial state500of a virtual machine transfer. A user may seek to transfer a virtual machine502from a source virtualization host504to a target virtualization host506. The virtual machine502may have a virtual machine configuration508accessible in the source virtualization host504. The virtual machine configuration508describes the functional characteristics of the host resources that the virtual machine502may be using. For example, the virtual machine configuration508may list the resource pools as “Customer1”, a connection as “local area network”, a virtual local network identifier of 12, bandwidth of 1 gigabyte, acceleration enabled, and the storage file as “MyFile.ext”.

Based on this virtual machine configuration508, the virtual machine502may access a storage file510located in a path of “C:\MyFile.ext”, kept by a storage resource pool512at the storage resource for “Customer1” with a path of “C:\”. The virtual machine502may access a source switch port514at “Port1,” with a virtual local area network identifier of 12, a bandwidth of 1 gigabyte, and acceleration enabled. The source switch port514may use a network resource pool516for “Customer1” having a source local area network Ethernet switch518and a source internet Ethernet switch520. Because of the virtual machine configuration508, the switch port514may select to use the local area network Ethernet switch518.

Rather than specifying a specific switch port514, the virtual machine configuration508may detail the connectivity, virtual local area network, bandwidth, and acceleration for proper functionality. Similarly, the virtual machine configuration508may name the storage file510or describe the characteristics of the storage, such as the size of the file, but not the path to that file.

The target virtualization host506may have a target storage resource pool522for “Customer1” having a path of “F:\”. The target virtualization host506may also have a target network resource pool524for “Customer1” associated with a target local area network Ethernet switch526and a target internet Ethernet switch528. The location of the host resources associated with the target storage resource pool522and the target network resource pool524may not be located in the same place as the source storage resource pool512and the source network resource pool516.

FIG. 5Billustrates, in a block diagram, one embodiment of the configuration state530of a virtual machine transfer. In this state, the target virtualization host506may be configured to match the source virtualization host504. For example, the target virtualization host506may map a path to the storage file510, having a storage location path of “F:\MyFile.ext”. The target virtualization host506may access the same virtual machine configuration508as the source virtualization host504. The virtual machine configuration508may be unchanged between the source virtualization host504and the target virtualization host506.

FIG. 5Cillustrates, in a block diagram, one embodiment of the final state540of a virtual machine transfer. In the final state540, the target virtualization host506may create and configure a target switch port542. The target network resource pool524may find an Ethernet switch with the connectivity specified by the target virtual machine configuration534. The target switch port542may be at “Port2,” with a virtual local area network identifier of 12, a bandwidth of 1 gigabyte, and acceleration enabled. Similarly, the target storage resource pool522locates the storage file “MyFile.ext” by looking within the file system path specified in the target storage resource pool522. The virtual machine502is moved from the source virtualization host504to the target virtualization host506. If a copy of the virtual machine502is left on the source virtualization host504, the identifier for the virtual machine502may be changed to differentiate between the virtual machine502on the source virtualization host504and the virtual machine502on the target virtualization host506.

FIG. 6illustrates, in a flowchart, one embodiment of a method600of providing a host resource in a virtualization host. The virtualization host may receive a portable virtual machine from a source virtualization host (Block602). The virtualization host may receive a generic resource allocation request from the portable virtual machine (Block604). The virtualization host may determine a resource pool alias from the generic resource allocation request (Block606). The virtualization host may identify a resource pool from the resource pool alias of the generic resource allocation request (Block608). The virtualization host may determine a configuration specification from the generic resource allocation request (Block610). The virtualization host may determine a resource criterion from the generic resource allocation request (Block612). The virtualization host may execute a distribution calculation on the host resources in the resource pool (Block614). The virtualization host may select the host resource based on the resource criterion and the distribution calculation (Block616). The virtualization host may configure the host resource based on the configuration specification (Block618). The virtualization host may allocate the host resource based on the resource pool (Block620). The host resource may be at least one of a network resource, a processor resource, a memory resource, a storage resource, or other host resource. The virtualization host may provide a host resource to the portable virtual machine based on the generic resource allocation request (Block622).

FIG. 7illustrates, in a flowchart, one embodiment of a method700of receiving a host resource in a portable virtual machine. The portable virtual machine may determine a resource type to be used by the virtual machine (Block702). For example, the resource type may be at least one of a network resource, a processor resource, a memory resource, a storage resource, or other host resource. The portable virtual machine may identify a resource pool providing a resource type (Block704). The portable virtual machine may embed a resource pool alias identifying the resource pool in the generic resource allocation request (Block706). The portable virtual machine may embed a configuration specification in the generic resource allocation request (Block708). The portable virtual machine may embed a resource criterion in the generic host request (Block710). The portable virtual machine may send a generic resource allocation request from a portable virtual machine to a virtualization host (Block712). The portable virtual machine may receive a host resource form the virtualization host based on the generic resource allocation request (Block714).

Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms for implementing the claims.

Embodiments may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network.

Although the above description may contain specific details, they should not be construed as limiting the claims in any way. Other configurations of the described embodiments are part of the scope of the disclosure. For example, the principles of the disclosure may be applied to each individual user where each user may individually deploy such a system. This enables each user to utilize the benefits of the disclosure even if any one of a large number of possible applications do not use the functionality described herein. Multiple instances of electronic devices each may process the content in various possible ways. Implementations are not necessarily in one system used by all end users. Accordingly, the appended claims and their legal equivalents should only define the invention, rather than any specific examples given.