Various embodiments of the present invention relate to virtual machines (VMs), and more specifically, to a method and apparatus for managing a VM instance.
With the development of computer hardware/software technologies and network technology, virtual machines (VMs) are widely applied to various respects of people's work and life. By means of virtual machines, users no more have to purchase high-performance computer devices and expensive application resources (such as operating systems, middleware, middleware configurations, databases, applications, etc.), do not have to install and test computer devices, and do not have to engage technical professionals to install various needed application resources.
The user may request a virtual machine to a VM provider and specify resources, such as computing resources, storage resources and application resources, should be installed on the virtual machine. Subsequently, the VM provider may allocate specific computing resources and storage resources from a resource pool and install needed application resources one after another according to configuration requirements the user specifies.
Like the process of installing application resources on a physical machine, the VM provider also needs to install various application resources one after another, and since those application resources might contain a dependency relation between them, the VM provider should serially install those application resources one after another in an order of the dependency relation. As the installation process involves a couple of configurations, the installation process of each application resource costs a certain amount of time, and as a whole it takes a long time to generate a VM instance.
In order to reduce the wait time for users, there have been proposed technical solutions for provisioning in the resource pool VM instances that satisfy simple demands. However, these VM instances only have the most basic configurations, e.g., have a specific amount of CPU resources, memory resources and operating systems, which basic configurations do not satisfy ever-increasing special needs of massive users.
With the further complication of user needs, even if a VM instance having basic configurations has been obtained from the resource pool, it takes a long time to install on the VM instance various application resources that are specified by the user. At this point, how to manage the resource pool in a more efficient way now becomes a focus of attention.
Therefore, it is desired to develop a technical solution capable of effectively managing VM instances in a resource pool, and it is desired the technical solution can provide a certain amount of VM instances in a resource pool in advance during normal running, so that when receiving a user request VM instances provided in advance may be allocated to the user quickly so as to reduce the wait time for users and increase the quality of service. On the other hand, it is desired the technical solution can be compatible with the existing technical solution, so as to provide higher response efficiency without changing the existing technical solution as far as possible.
In one embodiment of the present invention, there is proposed a method for providing at least one VM instance in a resource pool, comprising: parsing a configuration requirement with respect to a virtual machine, the configuration requirement describing a first amount of application resources to be installed on the virtual machine; building, on the basis of the configuration requirement, a resource tree describing a dependency relation between the first amount of application resources; providing in the resource pool at least one VM instance corresponding to a sub-path of the resource tree, wherein on each VM instance in the at least one VM instance there are installed application resources included in the sub-path.
In one embodiment of the present invention, there is proposed an apparatus for providing at least one VM instance in a resource pool, comprising: a processor; and a memory coupled to the processor, wherein the memory comprises instructions which, when executed by the processor, cause the processor to: parse a configuration requirement with respect to a virtual machine, the configuration requirement describing a first amount of application resources to be installed on the virtual machine; build, on the basis of the configuration requirement, a resource tree describing a dependency relation between the first amount of application resources; provide in the resource pool at least one VM instance corresponding to a sub-path of the resource tree, wherein on each VM instance in the at least one VM instance there are installed application resources included in the sub-path.
In one embodiment of the present invention, there is proposed a computer program product comprising a computer readable storage medium having a computer readable program for providing at least one virtual machine instance in a resource pool stored therein, wherein the computer readable program, when executed on a computing device, causes the computing device to: parse a configuration requirement with respect to a virtual machine, the configuration requirement describing a first amount of application resources to be installed on the virtual machine; build, on the basis of the configuration requirement, a resource tree describing a dependency relation between the first amount of application resources; and provide in the resource pool at least one virtual machine instance corresponding to a sub-path of the resource tree, wherein on each virtual machine instance in the at least one virtual machine instance there are installed application resources included in the sub-path.
By means of the method, apparatus, and computer program product of the present invention, a certain number of VM instances may be provided in the resource pool in advance, and a desired VM instance provided directly or by a simple installation process when receiving a user request.
Through the more detailed description of some embodiments of the present disclosure in the accompanying drawings, the above and other objects, features and advantages of the present disclosure will become more apparent, wherein the same reference generally refers to the same components in the embodiments of the present disclosure.
Some preferable embodiments will be described in more detail with reference to the accompanying drawings, in which the preferable embodiments of the present disclosure have been illustrated. However, the present disclosure can be implemented in various manners, and thus should not be construed to be limited to the embodiments disclosed herein. On the contrary, those embodiments are provided for the thorough and complete understanding of the present disclosure, and completely conveying the scope of the present disclosure to those skilled in the art.
It is understood in advance that although this disclosure includes a detailed description on cloud computing, implementation of the teachings recited herein are not limited to a cloud computing environment. Rather, embodiments of the present invention are capable of being implemented in conjunction with any other type of computing environment now known or later developed.
Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
Characteristics are as follows:
On-demand self-service: a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with the service's provider.
Broad network access: capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).
Resource pooling: the provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to demand. There is a sense of location independence in that the consumer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter).
Rapid elasticity: capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.
Measured service: cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported providing transparency for both the provider and consumer of the utilized service.
Service Models are as follows:
Software as a Service (SaaS): the capability provided to the consumer is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based e-mail). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
Platform as a Service (PaaS): the capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including networks, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.
Infrastructure as a Service (IaaS): the capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
Deployment Models are as follows:
Private cloud: the cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on-premises or off-premises.
Community cloud: the cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on-premises or off-premises.
Public cloud: the cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
Hybrid cloud: the cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds).
A cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes.
Referring now to
In cloud computing node 10 there is a computer system/server 12, which is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with computer system/server 12 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like.
Computer system/server 12 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. Computer system/server 12 may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.
As shown in
Bus 18 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.
Computer system/server 12 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 12, and it includes both volatile and non-volatile media, removable and non-removable media.
System memory 28 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 30 and/or cache memory 32. Computer system/server 12 may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system 34 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus 18 by one or more data media interfaces. As will be further depicted and described below, memory 28 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.
Program/utility 40, having a set (at least one) of program modules 42, may be stored in memory 28 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules 42 generally carry out the functions and/or methodologies of embodiments of the invention as described herein.
Computer system/server 12 may also communicate with one or more external devices 14 such as a keyboard, a pointing device, a display 24, etc.; one or more devices that enable a user to interact with computer system/server 12; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 12 to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 22. Still yet, computer system/server 12 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 20. As depicted, network adapter 20 communicates with the other components of computer system/server 12 via bus 18. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 12. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
Referring now to
Referring now to
Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframes (e.g. IBM® zSeries® systems); RISC (Reduced Instruction Set Computer) architecture based servers (e.g., IBM pSeries®, systems); IBM xSeries® systems; IBM BladeCenter® systems; storage devices; networks and networking components. Examples of software components include network application server software (e.g., IBM WebSphere® application server software); and database software (e.g, IBM DB2® database software). (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, and DB2 are trademarks of International Business Machines Corporation registered in many jurisdictions worldwide).
Virtualization layer 62 provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers; virtual storage; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients.
In one example, management layer 64 may provide the functions described below. Resource provisioning provides dynamic procurement of computing resources and other resources that are utilized to perform tasks within the cloud computing environment. Metering and Pricing provide cost tracking as resources are utilized within the cloud computing environment, and billing or invoicing for consumption of these resources. In one example, these resources may comprise application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal provides access to the cloud computing environment for consumers and system administrators. Service level management provides cloud computing resource allocation and management such that required service levels are met. Service Level Agreement (SLA) planning and fulfillment provides pre-arrangement for, and procurement of, cloud computing resources for which a future requirement is anticipated in accordance with an SLA.
Workloads layer 66 provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation; software development and lifecycle management; virtual classroom education delivery; data analytics processing; transaction processing; and VM instance management.
In one embodiment of the present invention, the technical solution for managing VM instances according to various embodiments of the present invention may be implemented at workloads layer 66, so that the VM instance management can be conveniently implemented in the cloud computing environment and further the VM provider's response time to user requests may be reduced. An application environment of the present invention has been illustrated above, whereas those skilled in the art should understand various embodiments of the present invention may further be implemented in any other type of computing environment that is currently known or to be developed later.
Therefore, when generating a VM instance, various application resources are installed one after another according to the dependency relation as shown in
With the complication of user needs, the amount of application resources to be installed also increases, and a dependency relation between various application resources gets more and more complicated. Generally speaking, there may exist a dependency relation as below: the middleware is installed only after the operating system is installed, the middleware configuration is executed only after the middleware is installed, the application/database is installed only after the middleware configuration is executed, etc. Tables 1-4 below schematically show examples of the operating system, the middleware, the middleware configuration and the application/database, respectively.
As shown in Tables 1-4 above, there are various levels of application resources, and there exist complicated dependency relations between these application resources. The application resources in Tables 1-4 are exemplary only, and there may exist hundreds of and even more application resources. Thereby, it is impossible to combine various application resources and provide corresponding VM instances. In addition, since it is impossible to predict which type of VM instance might be needed in future, VM instances that could be requested in future cannot be provided in the resource pool in advance.
Although existing technical solutions can provide “bare” VM instances in the resource pool or install VM instances of some underlying operating systems, this still does not satisfy user needs. At present application resources requested by a user are installed one by one only when receiving a request from the user. Therefore, the user has to spend a large quantity of time on waiting for installation.
In view of various drawbacks in the prior art, the present invention proposes a technical solution for providing at least one VM instance in a resource pool on the basis of configuration requirements of a user. As shown in
Subsequently, on the basis of sub-paths in resource tree 520, VM instances where application resources included in the sub-paths are installed may be provided in the resource pool 530. Specifically, regarding a sub-path “Start->RHEL 6.4->WAS 8.5->WAS Single->DayTraderApp,” for example, VM instances 532 including various application resources along this sub-path may be provided (e.g., M VM instances may be provided). For another example, regarding a sub-path “Start->RHEL 6.4->WAS 8.5,” VM instances 534 including various application resources along this sub-path may be provided (e.g., N VM instances may be provided). In this way, VM instances may be provided pertinently in view of the user's historical needs.
Note throughout the context of the present invention, the sub-path refers to a sub-path starting from the root node in the resource tree; the sub-path may start from the root node and ends at a leaf node, or starts from the root node and ends at a non-leaf node. In resource tree 520 as shown in
In one embodiment of the present invention, there is provided a method for providing at least one VM instance in a resource pool, comprising: parsing a configuration requirement with respect to a virtual machine, the configuration requirement describing a first amount of application resources to be installed on the virtual machine; building, on the basis of the configuration requirement, a resource tree describing a dependency relation between the first amount of application resources; providing in the resource pool at least one VM instance corresponding to a sub-path of the resource tree, wherein on each VM instance in the at least one VM instance there are installed application resources included in the sub-path.
In one embodiment of the present invention, the first amount of application resources may include one or more application resources. When there exists only one application resource, the application resource does not depend on other application resource, so the resource tree may only comprise nodes associated with the resource. When there exists a plurality of application resources, the resource tree may describe application relations between the plurality of application resources.
Specifically,
In step S604A, a resource tree describing a dependency relation between the first amount of application resources is built on the basis of the configuration requirement. The dependency relation refers to an order which is followed when installing various application resources, and the present invention does not limit how the dependency relation is obtained. For example, the dependency relation may be obtained from an additional configuration file, or the dependency relation may directly be obtained from the configuration requirement where it is included in the configuration requirement. Where the dependency relation is obtained, it may be described in a tree structure. For example, resource tree 520 in
In step S606A, at least one VM instance corresponding to a sub-path of the resource tree is provided in the resource pool, wherein on each VM instance in the at least one VM instance there are installed application resources included in the sub-path. For example, it is possible to provide at least one VM instance with respect to each path of the resource tree or with respect to only one part of sub-paths of the resource tree. In the example as shown in
According to various embodiments of the present invention, not only instances of a virtual machine that has been requested previously are provided, but also instances of a virtual machine that has not been requested previously but might be requested later may be provided by providing at least one VM instance corresponding to a sub-path of the resource tree. For example, a VM instance (on which RHEL 6.4 and WAS 8.5 are installed) as shown by VM instance 534 in
Since the user need history can reflect future user needs to some extent and helps to predict VM instances that might be requested in future, by means of the technical solution of the present invention, the wait time for users may be shortened greatly and the operating efficiency of the virtual environment enhanced further.
In one embodiment of the present invention, the configuration requirement describes a hardware resource need of the virtual machine, and the providing in the resource pool at least one VM instance corresponding to a sub-path of the resource tree comprises: obtaining at least one foundation VM instance that meets the hardware resource need; and installing application resources included in the sub-path to each foundation VM instance in the at least one foundation VM instance.
The configuration requirement may further include a desired hardware resource need, for example, may specify the computing power of CPU, the size of memory, network bandwidth and other parameters. Therefore, a foundation VM instance that meets the hardware need may be obtained first, and then application resources included in the sub-path are installed one by one on the foundation VM instance. Although the installation process here costs a certain amount of time, the installation at this point is not triggered by a customer request but is a step for preparing a VM instance in advance, so the time being consumed will not affect the customer's wait time. In this manner, a certain number of VM instances may be provided for future customer requests in the resource pool in advance, so the performance of the virtual environment may be enhanced.
In one embodiment of the present invention, the installing application resources included in the sub-path to each foundation VM instance in the at least one foundation VM instance comprises: installing application resources included in the sub-path one by one on the basis of the dependency relation. For example, the implementation may take an order of operating system, middleware, middleware configuration and application/database.
In one embodiment of the present invention, there is further comprised: obtaining process parameters associated with the installation of application resources included in the sub-path; and determining the number of the at least one VM instance on the basis of the process parameters.
Those skilled in the art may understand the user does not like waiting. When the installation time lasts only for 5 minutes, it is acceptable to the user; when the installation time last for 1 hour, however, it might be unacceptable to the user. Therefore, it may be determined, on the basis of process parameters associated with the installation process, how many VM instances will be provided in the resource pool. For example, regarding a VM instance that is installed for a long time, a larger number of VM instances may be provided; while regarding a VM instance that is installed for a short time, a less number of VM instances may be provided. At this point, even if the resource pool does not contain a VM instance being requested, the user does not mind waiting for 5 minutes.
Only one respect of the installation process has been illustrated above. Since the installation process might involve complicated operations, the process parameters may include various respects of contents. In one embodiment of the present invention, the process parameters comprise at least one of: the number of times that a virtual machine corresponding to a sub-path of the resource tree is requested, and the time for installing application resources included in the sub-path.
It should be understood in the user need history, if the user frequently requests a VM instance where some application resources are installed, then this type of VM instance might be requested again. Thus, regarding a VM instance that is requested for many times, a larger number of VM instances may be provided; while regarding a VM instance that is requested for fewer times, a less number of VM instances may be provided. Only two examples of the process parameters have been illustrated above. Those skilled in the art may further adopt other method on the basis of a concrete application environment. For example, if it is considered the installation process will occupy a large amount of computing resources in the virtual environment, then the amount of occupied computing resources may further act as one respect of the process parameters.
In one embodiment of the present invention, the amount of the at least one VM instance is proportional to the process parameters. Detailed description has been presented above to how to provide a corresponding amount of VM instances on the basis of the number of requests and the installation time. On the basis of the principle, those skilled in the art may define a concrete calculation equation as an application environment demands.
For example, the amount of VM instances may be calculated as a function of the number of requests in a past time period:
Amount of VM instances=Number of requests/a Equation 1
wherein a is a constant number, and those skilled in the art may adjust a value of a on the basis of status of the virtual environment.
For example, the number of VM instances may be calculated as a function of the installation time:
Number of VM instances=Installation time/b Equation 2
wherein b is a constant number, and those skilled in the art may adjust a value of b on the basis of status of the virtual environment.
For another example, the number of VM instances may be calculated on the basis of both the number of requests and the installation time:
Number of VM instances=Number of requests×installation time/c Equation 3
wherein c is a constant number, and those skilled in the art may adjust a value of c on the basis of status of the virtual environment.
Or the number of VM instances may be calculated on the basis of Equations 1-3 or a combination of only one part thereof. For example, a maximum, a minimum or a mean of Equations 1-3 may be selected.
On the basis of the method described above, the number of times the VM instance corresponding to the sub-path in the resource tree is requested and the installation time may be collected, and it can be calculated how many VM instances should be provided in the resource pool. These data may be added to the resource tree, and by traversing the resource tree, responding VM instances can be provided.
By traversing the resource tree as shown in
In one embodiment of the present invention, there is further comprised: parsing a second configuration requirement with respect to a second virtual machine, the second configuration requirement describing a second amount of application resources to be installed on the second virtual machine; building, on the basis of the second configuration requirement, a second resource tree that describes a dependency relation between the second amount of application resources; and combining the second resource tree with the resource tree according to a correspondence relation between the first amount of application resources and the second amount of application resources.
Since the need history may include many configuration requirements, each need may be parsed one by one or only one part of needs may be parsed, so as to obtain a plurality of resource trees. By combining the plurality of resource trees, the user's various needs with respect to VM instances may be extracted gradually, and these needs are recorded in a tree resulting from the combination.
Specifically,
In one embodiment of the present invention, the application resources at least comprise at least one of: an operating system, middleware, middleware configuration, a database system, and an application. Those skilled in the art may understand with the development of computer technology, there might be a growing variety of application resources. In the context of the present invention, examples of application resources are merely illustrated. According to the principle of the present invention, application resources may include various resources that are currently known or to be developed later.
In one embodiment of the present invention, the method of the present invention is executed periodically. For example, a configuration requirement from a user, the number of times the VM instance is requested, as well as the installation time may be monitored in real time, and the resource tree is updated in real time using these data, so as to manage the resource pool on the basis of the latest data.
In one embodiment of the present invention, there is provided a method for providing a VM instance, comprising: obtaining a configuration requirement with respect to a virtual machine as contained in a user need; and in response to the existence ofa VM instance that satisfies the configuration requirement in a resource pool, providing the VM instance, wherein the resource pool is a resource pool according to a method described in the present invention.
On the basis of the foregoing principle, various types of VM instances may be provided in the resource pool. Thus, when later receiving a request from a customer, first it is looked up in the resource pool whether or not there exists a VM instance satisfying the configuration requirement; if yes, the VM instance satisfying the configuration requirement is provided directly.
In one embodiment of the present invention, there is further comprised: in response to no existence of a VM instance that satisfies the configuration requirement in the resource pool, searching in the resource pool for a VM instance that satisfies at least one part of the configuration requirement, installing to the VM instance application resources associated with other part of the configuration requirement, and providing the VM instance.
When in the resource pool there is no VM instance satisfying the configuration requirement, a VM instance that best approaches the configuration requirement may be found, and other application resources requested by the user are installed on the VM instance, whereby the requested VM instance is obtained rapidly.
Now returning to
Detailed illustration is presented now to details to step S606B by means of a concrete example. Returning to
Various embodiments implementing the method of the present invention have been described above with reference to the accompanying drawings. Those skilled in the art may understand that the method may be implemented in software, hardware or a combination of software and hardware. Moreover, those skilled in the art may understand by implementing steps in the above method in software, hardware or a combination of software and hardware, there may be provided an apparatus based on the same invention concept. Even if the apparatus has the same hardware structure as a general-purpose processing device, the functionality of software contained therein makes the apparatus manifest distinguishing properties from the general-purpose processing device, thereby forming an apparatus of the various embodiments of the present invention. The apparatus described in the present invention comprises several means or modules, the means or modules configured to execute corresponding steps. Upon reading this specification, those skilled in the art may understand how to write a program for implementing actions performed by these means or modules. Since the apparatus is based on the same invention concept as the method, the same or corresponding implementation details are also applicable to means or modules corresponding to the method. As detailed and complete description has been presented above, the apparatus is not detailed below.
In one embodiment of the present invention, the configuration requirement further describes a hardware resource need of the virtual machine, and providing module 1030A comprises: a foundation obtaining module configured to obtain at least one foundation VM instance that meets the hardware resource need; and an installing module configured to install application resources included in the sub-path to each foundation VM instance in the at least one foundation VM instance.
In one embodiment of the present invention, the installing module comprises: a first installing module configured to install application resources included in the sub-path one by one on the basis of the dependency relation.
In one embodiment of the present invention, there are further comprised: a parameter obtaining module configured to obtain process parameters associated with the installation of application resources included in the sub-path: and a determining module configured to determine the number of the at least one VM instance on the basis of the process parameters.
In one embodiment of the present invention, the process parameters comprise at least one of: the number of times that a virtual machine corresponding to a sub-path of the resource tree is requested, and the time for installing application resources included in the sub-path.
In one embodiment of the present invention, the number of the at least one VM instance is proportional to the process parameters.
In one embodiment of the present invention, there are further comprised: a second parsing module configured to parse a second configuration requirement with respect to a second virtual machine, the second configuration requirement describing a second amount of application resources to be installed on the second virtual machine; a second building module configured to build, on the basis of the second configuration requirement, a second resource tree that describes a dependency relation between the second amount of application resources; and a combining module configured to combine the second resource tree with the resource tree according to a correspondence relation between the first amount of application resources and the second amount of application resources.
In one embodiment of the present invention, the application resources comprise at least one of: an operating system, middleware, middleware configuration, a database system, and an application.
In one embodiment of the present invention, there is further comprised: a second providing module 1030B configured to, in response to no existence of a VM instance that satisfies the configuration requirement in the resource pool, search in the resource pool for a VM instance that satisfies at least one part of the configuration requirement, install to the VM instance application resources associated with other part of the configuration requirement, and provide the VM instance.
By means of the methods and apparatuses of the present invention, a certain number of VM instances may be provided in the resource pool in advance, and a desired VM instance may be provided directly or by a simple installation process when receiving a user request.
The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
Number | Date | Country | Kind |
---|---|---|---|
201410236341.9 | May 2014 | CN | national |