The invention disclosed relates to optimal use of virtual machine resources, creating instances at runtime on demand and disposing them off once the user is no longer actively using them, by decoupling the user/project created application specific content from the O/S and application software installed on the virtual machines and storing it separately in a centralized content store.
Existing systems and methods of utilizing virtual machines are highly inefficient and expensive. This is done so that the user's work (application content) is available the next time the user wants to continue her work. This would have to be done every time the user modifies her content and would lead to a rapid proliferation of virtual machine images. For a system with multiple users working on multiple projects, the result is an ever-growing library of machine images that need to be persisted and maintained with new operating system patches and software updates. This is both expensive and hard to maintain. The user's application content is also tied to a virtual machine image and is not easily available for use elsewhere or for other users, unless it is manually transferred over.
What is needed is a technology to solve the problem of inefficient use of virtual machine instances and to avoid the rapid proliferation of machine images.
Example embodiments of the invention provide improved application content storage, virtual machine management, and runtime provisioning to solve the problem of inefficient use of virtual machine instances and to avoid the rapid proliferation of machine images.
Example embodiments of the invention comprise accessing a base generalized reusable virtual machine image and configuring memory according to an instantiated copy of the base virtual machine image. Project specific content is accessed from a central content store configured to store the content separately from the base virtual machine image, for improved maintainability of the base virtual machine image and the content. The instantiated copy of the base virtual machine image and project specific content are linked at launch time to form a project specific functioning virtual machine. After completion of the project specific function, the project specific content is stored separately and the project specific functioning virtual machine is removed from the memory. This minimizes the use of virtual machine instances to only when they are needed. This makes the project specific content available for use elsewhere and by other permitted users. This also minimizes proliferation of unused project specific function virtual machine images, frees-up the need for additional storage space and enables easier automated maintenance of the separately stored base virtual machine image and updating of the centralized plurality of project specific contents.
In an example embodiment of the invention, a virtual machine storage and runtime provisioning system comprises a means for accessing a base generalized reusable virtual machine image and configuring memory by cloning an instantiated copy of the base generalized reusable virtual machine image. The base generalized reusable virtual machine image comprises an image of a reusable virtual machine instance that can be duplicated or reactivated for later use.
Each of a plurality of project specific contents is configurable to link to the instantiated copy of the base generalized reusable virtual machine image at runtime, forming a project specific functioning virtual machine. The plurality of project specific contents is stored in a central content store of the memory. In accordance with embodiments of the invention, the central content store is configured to store the plurality of project specific contents separately from the base generalized reusable virtual machine image, for improved maintainability of the base generalized reusable virtual machine image and the plurality of project specific contents.
The example embodiment of the invention further comprises a means for accessing at least one project specific content stored in the central content store. The instantiated copy of the base generalized reusable virtual machine image is linked with the at least one project specific content, to form a project specific functioning virtual machine in the memory, in response to a launch command. The launch command may be issued to realize a project specific functioning virtual machine to perform a project specific function. The running generates updated project specific content.
The example embodiment of the invention further comprises a means for running the project specific functioning virtual machine to perform the project specific function.
The example embodiment of the invention further comprises a means for removing from the memory, the project specific functioning virtual machine after completion of the project specific function and storing the updated project specific content in the central content store. In this manner proliferation is minimized of unused project specific function virtual machine images in order to free-up storage space in the memory. In addition, automated maintenance may be enabled, of the generalized reusable virtual machine and automated updating may be enabled, of the centralized plurality of project specific contents.
The example embodiment of the invention further comprises a guest agent configured to link the instantiated copy of the base generalized reusable virtual machine image and the project specific content, to form the project specific functioning virtual machine.
The example embodiment of the invention further comprises metadata including specific parameter values for a parameterized machine configuration and parameterized application configuration that are to be provided at provisioning time. The metadata allows the maintenance of generic application containers that are specialized at the last minute before users access the application. The metadata helps solve the problem of maintenance on machine images with pre-installed applications, so that a separate machine image need not be maintained for each project.
These and other embodiments of the invention provide improvements in computer capabilities. The virtual machine storage and runtime provisioning system, minimizes proliferation of unused project specific function virtual machine images, frees-up storage space in the memory, and enables automated maintenance on the generalized reusable virtual machine and updating of the centralized plurality of project specific contents.
Example embodiments of the invention solve the problem of maintenance of generalized re-usable machine images, which avoid a resulting fast proliferation of machine images. As used herein, a generalized reusable machine image comprises a base machine image including a guest agent and a guest OS, and one or more software applications capable of running on the guest OS. Example embodiments of the invention provide improvements in computer capabilities. The virtual machine storage and runtime provisioning system, minimizes proliferation of unused project specific function virtual machine images, frees-up storage space in the memory, and enables automated maintenance on the generalized reusable virtual machine and updating of the centralized plurality of project specific contents.
In accordance with embodiments of the invention, the method for creating virtual machines at runtime decouples the application content from the software. The method treats virtual machines as pure application containers. The project/deployment specific content is kept under revision control in a central content store. The content is automatically pulled to the newly provisioned machine as it starts up. The content is versioned and the latest version is always used for new deployments. Existing deployments are updated by explicitly re-pulling only differences in the content from the central content store.
Embodiments of the invention help solve the problem of maintenance of generalized re-usable machine images. In the past, a fast proliferation of machine images would result, which leads to an ever growing library of machine images that need to be updated with new operating system patches and software updates.
In accordance with embodiments of the invention, the image maintenance may be applied to a small set of generalized machine images. This results in a system that lends itself to automated maintenance. The project-specific content also becomes centralized and manageable.
In accordance with embodiments of the invention, just in time aggregation of the application software and the content is automated.
In accordance with embodiments of the invention, the user specifies the content store repository URL when a system blueprint is created. When the launch command is issued by the user or another program, the system automatically installs content from the content store repository, to the newly provisioned virtual machine, before the applications are automatically launched. When the user connects to the machine, they find the correct content loaded.
The architecture 101 includes the following high level components:
1. Portal 130 is a thin web application that allows user web clients 132 access to the platform 106 via the platform services API 126.
2. Platform 106 is a highly available web services application, whose main function is to provision host systems 108, using API calls to the cloud 100 Infrastructure-as-a-Service 128 providers, via cloud driver 124.
3. Host system(s) 108 are provisioned on-demand by the platform 106.
The central component is the platform 106, which is a persistent distributed application running on machines in the cloud 100. The platform's clients are the portal 130 (e.g., a simple web app, a mobile app) and other 3rd party clients 134. Clients may launch and run various types of projects in the host system 108. An example of executable reusable software may be a program for dynamic process simulation. The platform 106 may launch a generalized reusable virtual machine 110′ in the host system 108 to run a project-specific function with the executable software. For example, a project “A” (shown in
The platform 106 includes the central content store 120, storage for metadata 140, reusable VM store 113, and storage for guest agent software 112. The content store 120 is a service for content storage and revision control. The reusable VM store 113 stores a base generalized reusable virtual machine image VM 110, which includes generalized reusable virtual machine executable software, a guest operating system, and a guest agent.
The platform 106 is a concurrent and distributed application that may run on all cloud data centers 104(0) to 104(i) in the cloud 100 of
After the platform 106 has launched the generalized reusable virtual machine 110′ in the host system 108, the user web clients 132 may directly interact over path 135 with the virtual machine 110′ running in the host system 108.
The Infrastructure as a Service (IaaS) 128 of the architecture 101, is a network utility program for accessing, monitoring, and managing remote datacenter infrastructures 104(0) to 104(i) in the cloud 100, to perform functions such as compute (virtualized or bare metal), storage, networking, and networking services (e.g. firewalls).
Each of the cloud data centers 104(0) to 104(i) of
When a particular data center executes the concurrent and distributed platform 106 application, the platform application 106 currently running on a processor and memory 102 in the data center, performs the method of virtual machine storage and runtime provisioning, in accordance with embodiments of the invention. The platform application 106 running in the cloud data center accesses a base generalized reusable virtual machine image 110 from reusable VM store 113 and configures memory 102 to clone an instantiated copy 110′ of the base generalized reusable virtual machine image. The base generalized reusable virtual machine image 110 comprises an image of a reusable virtual machine instance that can be duplicated or reactivated for later use. The platform application 106 running in the cloud data center accesses at least one project specific content from the content store 120, of a plurality of project specific contents stored in the central content store 120. The platform application 106 running in the cloud data center links the instantiated copy 110′ of the base generalized reusable virtual machine image 110 with the at least one project specific content to form a project specific functioning virtual machine in the memory 102, in response to a launch command. The launch command may be issued to realize a project specific functioning virtual machine to perform a project specific function. The platform application 106 running in the cloud data center runs the project specific functioning virtual machine to perform the project specific function. The running generates updated project specific content. The platform application 106 running in the cloud data center removes from the memory 102, the project specific functioning virtual machine after completion of the project specific function and stores the updated project specific content in the central content store. In this manner, proliferation is minimized of unused project specific function virtual machine images to free-up the memory 102, compute, storage, networking and/or other resources, in accordance with embodiments of the invention.
In accordance with example embodiments of the invention, the central content store 120 is configured to store the plurality of project specific contents 122A and 122B separately from the base generalized reusable virtual machine image 110 in the reusable VM store 113, for improved maintainability of the base generalized reusable virtual machine image 110 and the plurality of project specific contents 122A and 122B.
The metadata 140 may include specific parameter values for a parameterized machine configuration and parameterized application configuration that are to be provided at provisioning time, in response to a launch command. The metadata 140 allows the maintenance of generic application containers that are specialized at the last minute before users access the application. The metadata 140 helps solve the problem of maintenance on machine images with pre-installed applications, so that a separate instance need not be maintained for each specific project. The configured machine image and actions that are automatically performed at provisioning time are maintained centrally in the platform 106 by a respective application team. When an end-user wishes to use the application in a specific project, it is included in a specific project definition or system blueprint. The end-user may define some of the metadata parameters in the system blueprint to specialize the virtual machine configuration for the specific project (e.g. file locations or remote URLs where content is to be found). When the user wishes to invoke a running instance of the project-specific functioning virtual machine, a launch command is issued. The platform 106 provisions and automates the project-specific functioning virtual machine. The parameter values are applied to the project-specific functioning virtual machine just before the system is ready and running.
The platform 106 includes a plurality of project specific contents 122A and 122B stored in the central content store 120. Each of the plurality of project specific contents, for example 122A, is configurable to link to a copy of the base generalized reusable virtual machine image at runtime, forming a project functioning virtual machine 110′(A) (shown in
Examples of the generalized reusable virtual machine executable software 111 may include an executable software program for dynamic process simulation. A first example project-specific function to which the executable software 111 may be applied may be a project “A” (shown in
Another example project-specific function to which the executable software 111 may be applied may be a project “B” (shown in
The project-specific functioning virtual machine 110′(A) runs in the host system 108, to perform the project-specific function “A”, in response to the launch command 202 issued by the user or another program. In the example discussed above, the project specific content data 122A may include steam source data, valve data, piping data, controlling logic, and the like, which is operated on by the project functioning virtual machine 110′(A) executing the project for designing a process for a steam control system.
When the platform 106 creates the project specific functioning virtual machine 110′(A) in
The decommissioning releases back to the cloud 100 all of the resources (memory, CPUs, network connections, etc.) used by the project specific functioning virtual machine 110′(A), after completion of the project-specific function, project “A”. The decommissioning algorithm 107 may operate automatically or the user may invoke it manually.
After completion of the project specific function “A”, the project specific content data 122A may include updates as a result of the project specific functioning virtual machine 110′(A) running and performing the project specific function, Project “A”. The updated project specific content data 122A is stored in the central content store 120, and may overwrite the original content data 122A.
The project specific content 122A is kept under revision control in the central content store 120A. Project specific content updates may be received and buffered in the buffer 103. The content is versioned and the latest version is always used for new deployments. In some instances, a specific version of the content may be retrieved for deployment. The algorithm 109 may determine the difference in the content to be updated. Existing content in the central content store 120 may be updated by changing only the differences in the content being updated.
In this manner, embodiments of the invention minimize proliferation of unused project specific function virtual machine images, free-up storage space in the memory.
In response, the platform 106 accesses the base generalized reusable virtual machine image 110 from reusable VM store 113 and configures memory 102 in the host system 108 by cloning a second instantiated copy 110′ of the base generalized reusable virtual machine image 110, including replicas of the generalized reusable virtual machine executable software 111′, the guest operating system 116′, and the guest agent 112′. The platform 106 also accesses metadata (B) 142B and content data (B) 122B. The guest agent 112′ is configured to link the second instantiated copy 110′ of the base generalized reusable virtual machine image 110 with the metadata (B) 142B and the project specific content data (B) 122B to form a second project specific functioning virtual machine 110′(B). The metadata (B) 142B is accessed, including specific parameter values for a parameterized virtual machine configuration and parameterized application configuration that are to be provided at provisioning time in response to the launch command. The metadata parameters specialize the virtual machine configuration for the specific project (e.g. file locations or remote URLs where content is to be found).
The project-specific functioning virtual machine 110′(B) runs in the host system 108, to perform the project-specific function “B”, in response to the launch command 202 issued by the user or another program. In the example discussed above, the project specific content data 122B may include combustible gas source data, valve data, piping data, controlling logic, and the like, which is operated on by the project functioning virtual machine 110′(B) to design a process for a flare system.
At step 602, a base generalized reusable virtual machine image is accessed and memory is configured according to an instantiated copy of the base generalized reusable virtual machine image, the base generalized reusable virtual machine image comprising an image of a reusable virtual machine instance that can be duplicated or reactivated for later use.
At step 606, at least one project specific content is accessed, of a plurality of project specific contents stored in a central content store configured to store the plurality of project specific contents separately from the base generalized reusable virtual machine image, for improved maintainability of the base generalized reusable virtual machine image and the plurality of project specific contents.
At step 608, the instantiated copy of the base generalized reusable virtual machine image is linked with the at least one project specific content to form a project specific functioning virtual machine in the memory, when a launch command is issued to realize a project specific functioning virtual machine to perform a project specific function.
At step 610, the project specific functioning virtual machine is run to perform the project specific function, wherein the running generates updated project specific content.
At step 612, the project specific functioning virtual machine is removed from the memory, after completion of the project specific function. This clean up or decommissioning process reduces proliferation of unused project specific function virtual machine images, freeing-up compute, storage and memory, networking, and/or other resources in the data center. During the time the project specific functioning virtual machine was in use, at least one project specific content may have been updated. In that case, the updated project specific content is stored in the central content store. By having the generalized reusable virtual machine images and the project specific content stored separately, each can also be managed separately and more efficiently. For example, automated maintenance can be performed on the generalized reusable virtual machine images to update the software, the operating system and/or other services. Similarly, version control can be performed to keep track of updates to project specific contents in the central content store.
Although specific example embodiments of the invention have been disclosed, persons of skill in the art will appreciate that changes may be made to the details described for the specific example embodiments, without departing from the spirit and the scope of the invention.