Provisioning of computer systems using virtual machines

US 7 577 722B1

drawing #0

Show all 6 drawings

A provisioning server automatically configures a virtual machine (VM) according to user specifications and then deploys the VM on a physical host. The user may either choose from a list of pre-configured, ready-to-deploy VMs, or he may select which hardware, operating system and application(s) he would like the VM to have. The provisioning server then configures the VM accordingly, if the desired configuration is available, or it applies heuristics to configure a VM that best matches the user's request if it isn't. The invention also includes mechanisms for monitoring the status of VMs and hosts, for migrating VMs between hosts, and for creating a network of VMs.

PatentSwarm provides a collaborative workspace to search, highlight, annotate, and monitor patent data.

Start free trial Sign in

Tip: Select text to highlight, annotate, search, or share the selection.

Claims

1. A method for creating a virtualized computer system comprising:
storing a plurality of pre-configured model virtual machines (VMs) having different hardware and software configurations, wherein each of the model VMs have at least one model virtual machine identifier;
creating a set of staged VMs from the model VMs by, for each of the model VMs, include software to configure operation system parameters to establish a connection to a server comprising additional data needed to provision staged VMs onto physical host platforms and strip an identity, wherein stripping the identity comprises removing the at least one model virtual machine identifier;
inputting from a requester, information to determine an appropriate staged VM and a desired computer configuration to host the staged VM, wherein the inputting includes validating the information for correctness and consistency and suggesting changes if the staged VM cannot be implemented in the desired computer configuration;
determining and selecting the appropriate staged VM from the set of staged VMs, the staged VM being most closely incorporating a configuration that is requested via the information;
monitoring a status of a plurality of hosts platforms and heuristically selecting a compatible physical host platform from the plurality of the host platforms that is compatible with the desired computer configuration and best suited for hosting the staged VM; and
automatically deploying a deployed VM onto the compatible physical host platform by copying the staged VM to the compatible physical host platform, the deployed VM thereby obtaining a new identity by obtaining at least one new identifier different from the at least one model virtual machine identifier that identified the staged VM, wherein the automatically deploying includes installing an additional application in the deployed VM if the additional application is being requested via the information and the additional application is not pre-installed in the staged VM.

Show 8 dependent claims

10. A system for creating a virtualized computer system comprising a plurality of physical host platforms and a provisioning server, which comprises:
a database storing a plurality of pre-configured model virtual machines (VMs) having different hardware and software configurations, wherein each of the model VMs have at least one model virtual machine identifier;
a staging module creating a set of staged VMs from the model VMs by, for each of the model VMs, include software to configure operation system parameters to establish a connection to a server comprising additional data needed to provision staged VMs onto physical host platforms and strip an identity, wherein stripping the identity comprises removing at least one model virtual machine identifier; and
a provisioning engine receiving information from a requester to determine an appropriate staged VM and a desired computer configuration to host the staged VM, wherein the receiving includes validating the information for correctness and consistency and suggesting changes if the staged VM cannot be implemented in the desired computer configuration, determining and selecting the appropriate staged VM from the set of staged VMs, the staged VM being most closely incorporating a configuration that is requested via the information, monitoring a status of a plurality of hosts platforms and heuristically selecting a compatible physical host platform from the plurality of host platforms that is compatible with the desired computer configuration and best suited for hosting the staged VM, and automatically deploying a deployed VM onto the compatible physical host platform by copying the staged VM to the compatible physical host platform, the deployed VM thereby obtaining a new identity by obtaining at least one new identifier different from the at least one model virtual identifier that identified the staged VM, wherein the automatically deploying includes selecting and installing an additional application in the deployed VM if the additional application is being requested via the information and the additional application is not pre-installed in the staged VM.

Description

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates in general to the field of creating, configuring and deploying computer systems with user-specified features and in particular to an application of virtual machine technology.

2. Description of the Related Art

Few users of modern computers have managed to avoid the frustrations involved in configuring a new computer for use. Of course, one way to minimize set-up problems is to buy a ready-made computer with all software already loaded. This solution is often far from optimal, especially for more sophisticated users who may need a hardware and software configuration that is not common and therefore not offered at all, or only at unacceptable cost. Even for the normal user, however, the computer-in-a-box solution has the disadvantage of inflexibilityonce the box is delivered, every new application and upgrade must be installed by the user.

Once a computer is configured, it must then also be managed and administered it on an ongoing basis. The tasks of configuration, management and administration are further complicated by the fact that a typical multi-user environment includes a large number of computers having a variety of operating systems and applications running in them. Furthermore, the demands for specific configurations of operating systems and applications often arise unpredictably, as they are needed. Provisioned computers may, for example, be needed for only a few minutes for some environments (for example, in the classroom, for quality assurance testing, etc.), a few days (for example, running simulations, analyzing data, etc.), or for longer periods (for example, in an IT department).

One solution that has been made possible by the growth of networks, especially the Internet, is hosting, in which providers remotely take care of installation, configuration and maintenance not only of the physical machines and the Internet connectivity, but also of the applications running on them. This is advantageous for customers because it provides a comprehensive service that allows the users to outsource their application hosting and management needs.

A major component of the cost to the hosting providers who offer such a service is the need to provision machines and applications for new customers. A typical scenario of what happens when a new customer requests the provisioning and hosting service is that the customer logs onto the service provider's web site and, via a web browser, custom-configures a server by specifying the operating system and applications. These specifications identify the machine configuration that the hosting service provider needs to provision. Depending on the specifications, the provider will either need to provision a new machine, or may satisfy the user's request by creating a replica, that is, an additional instance of an existing machine. In either case, the service provider must find a suitable unused physical machine, install the required components, configure the machine, and install and configure the selected applications. The service provider then powers on the machine, whereupon further configuration of the machine and applications is often required. The system is then finally ready to be used by the customer. If there are other machines that need to be configured, the whole process is repeated.

The process of provisioning new computers for a given task has hitherto been very resource intensive, requiring much human intervention. Although some aspects of the various provisioning tasks can be automated, according to the prior art, the process is difficult to automate completely. This is because, for example, the machines themselves must be physically powered on and storage media such as CD-ROM disks and floppy disks must be physically inserted in the appropriate drives on the computer in order to install the operating system and/or applications. Technologies do exist to automate individual ones of these tasks, but it then becomes increasingly difficult to manage all of the tasks together. Examples or such existing technologies include the Altiris eXpress system deployment and software management products of Altiris, Inc., of Lindon, Utah; the AppNstall product of StorageSoft, Inc., of Lousiville, Colo.; the IBM LANClient Control Manager product of IBM Corp.; and the BladeFrame technology of Egenera, Inc.

Moreover, some tasks, like remotely powering on of machines, requires specialized hardware on the machines. Examples of such systems include the PXE (Preboot Execution Environment) and Wake on LAN systems of Intel Corp. Another disadvantage is that a dedicated physical machine must typically be provided for each user.

There are still other solutions, such as server blades, which attempt to share hardware resources, logical partitioning, etc., but even these solutions require specialized systems; note that a server blade is typically a single circuit board populated with components such as processors, memory, and network connections that are usually found on multiple boards. One of many examples of this solution is the RLX ServerBlade 800i made by RLX Technologies, Inc., of The Woodlands, Tex. An example of a scalable, logically partitionable server is the Sun Enterprise 10000 Server made by Sun Microsystems, Inc., of Palo Alto, Calif. This of course is usually both inefficient and expensive, since few users will need all of the processing power of a network server. To illustrate, consider the following major steps that are normally required for provisioning a new computer using the prior art:

1) Assembling hardware: The first step is to assemble the required hardware. Based on the requirements of the applications that need to run on the machine, the user specifies the amount of memory that needs to be installed, the number of disk drives and size of disk space required, the number of network cards needed, the number of CPUs required, etc. A system administrator then configures the hardware according to these specifications.

2) Installing the operating system (OS): The system administrator installs the OS by inserting an installation CD into a CD-ROM drive, which typically includes a wizard that guides the installer by presenting various questions to be answered. This is followed by installing the required service pack levels for the OS.

3) Installing applications: Any applications required by the user are then installed and configured on the newly created machine. This step is repeated for each application that is needed.

If replicas of an existing computer are to be deployed to meet the needs of the user, the system administrator follows the following main steps:

1) The OS and the applications on the computer that is to be replicated are copied using conventional disk imaging software, which creates an exact image of the bits on the computer's disk. This image represents the entire contents of the disk, including the boot record, the boot sectors, the system partition holding the OS and applications and data partitions, if any, holding additional software and or data.

2) The hardware for the new computer is then assembled as described above. Since it is assumed that the replica is to be identical to the original computer, the requirements for memory, the disk, etc., are simply taken from that computer, which acts as the model computer from which the replicas are derived.

3) The image created in the step 1 above is then installed on the new computer, which may usually also be done using the disk imaging software. Successful completion of this step results in the new computer's disk being an identical replica of the disk of the model computer.

4) The newly created computer is then an exact replica of the model computer. In order to function correctly in a network setting that includes the original as well, however, it needs to be given its own unique identify. The system administrator therefore gives this machine a new identity by assigning it a new hostname and a new IP address. Machines with Microsoft Windows operating systems also require each newly created machine to have a unique Security Identifier (SID). The administrator assigns SIDs to the respective replica computers by running specific, known tools for that purpose.

Another scenario where provisioning of computers is required is a Quality Assurance (QA), or testing lab: A product is typically tested against a very large set of configurations, that is, combinations of operating systems, service packs, patches and hot fixes, applications, etc. When a new version of the product to be tested is ready, a suite of tests is run on it for each and every such configuration. Usually, this is done by running the tests on small subsets of configurations by installing each configuration subset on a respective, separate computer. When a test completes, the current configuration subset is un-installed from the respective computer and a new subset of configurations is installed. This process is repeated until the product has been tested against all the configurations. This entire process is repeated the next time the tests have to be run.

Testing products exist that automate the task of running tests. The task of switching between computer configurations remains, however, mostly a manual operation. Examples of such products include the TestDirector 7i made by Mercury Interactive Corp. of Sunnyvale, Calif.; and the Rational TestManager made by the Rational Software Corp. of Cupertino, Calif.

Because of the large number of operating systems, each with a number of service packs, patches and hot fixes, and the large number of applications that a given product usually needs to be tested against, the number of configurations to be tested against can quickly grow into hundreds. Provisioning computers for each test cycle for all these configurations obviously requires significant time and human resources.

There are known variations on the above scheme that attempt to improve the turn-around time between configuration tests. One option, for example, is to maintain each configuration in a removable disk and then to shutdown a machine, swap the disks and boot the new configuration. Even this procedure is extremely resource- and personnel-intensive. Note that the disks themselves must be stored and managed separately. Another option is to partition the disks in the computers and to have each partition host a configuration. This reduces the need for managing disks separately, but does not reduce the time required to switch between configurations, because the computer running one configuration must be shut down and rebooted with another configuration. Not only is this method also resource-intensive, but it also requires a higher degree of skill in those involved.

From the perspective of hosting providers, or of those who simply configure and deliver computer systems to user, what is needed is therefore a system and method that allows them to easily and flexibly configure the systems to be hosted or provided, with a potentially wide range of available options. It should not be necessary to have a separate dedicated physical system for each user, and configuring systems should ideally be fully automated, or at least more so than is now possible. From the perspective of users, what is needed is greater flexibility in choosing computer configurations, with easy access to a wide range of options and with quick response. This invention provides such a system and related method of operation.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram that shows the main hardware and software components of a computer system that includes a virtual machine, as well as the typical components of a virtual machine itself.

FIG. 2 illustrates the general principle of virtual machine provisioning according to the invention.

FIGS. 3-6 illustrate certain components of a provisioning server according to the preferred embodiment of the invention, namely, a virtual machine staging subsystem, a subsystem that provides instantly-deployable virtual machines, an application library, and a temporary usage area, respectively.

FIG. 7 illustrates a method of creating a virtualized computer system.

SUMMARY OF THE INVENTION

The invention includes a method and system implementation for creating a virtualized computer system based on input information identifying a desired computer configuration. The invention then automatically configures and deploys on a physical host platform a virtual machine (VM) according to the inputted information.

In a preferred embodiment of the invention, a plurality of pre-configured VMs having different configurations are pre-stored. A requester (which will usually be a human user but may also be a computer program) then selects one of the pre-configured VMs, which is then automatically prepared for deployment.

In other embodiments of the invention, the requester specifies various components of the desired VM, including the characteristics of a desired operating system (OS), of a desired hardware platform, of desired applications, or of any combination of these components. The various components available for selection are stored in a database.

Once a VM has been configured and deployed, note that it will also be possible to alter its configuration, for example by upgrading the software and/or hardware, installing different applications, etc.

The invention also provides for heuristically selecting for and configuring the VM the available, stored components that best match the requester's specifications if these cannot be met exactly. Rather than specifying components, the requester may instead (or in addition) specify desired performance or functional goals for the VM.

In most embodiments of the invention, there is a plurality of physical hosts on which VMs can be deployed. In this case, according to another aspect of the preferred embodiment of the invention, the status of the hosts is monitored and the host on which a configured VM is to be deployed is selected heuristically. A deployed VM may also be migrated from one host to another based on the monitored status of the plurality of hosts.

According to another embodiment of the invention, a virtual machine-to-hardware interface, such as a virtual machine monitor (VMM), is installed on each of a plurality of hardware hosts. Deployment of the VM is thereby made substantially independent of the overall physical hardware configuration. At least one of the hosts is then selected as the host for actual VM deployment. Because each host plus interface forms a separate physical host platform, the actual host may be selected substantially arbitrarily, according to any given criterion.

The invention also allows for creation of a network of cooperating VMs. In this case, VMs are deployed on respective physical host platforms. At least two of the deployed virtual machines have installed in them different, mutually interacting applications.

One way to obtain information identifying the desired computer configuration is to input an image of an existing physical computer.

Rather than installing the configured VM directly on a physical host platform, it is also possible according to the invention to deploy the VM by copying information defining the VM onto a machine-readable storage medium such as a CD.

DETAILED DESCRIPTION

The invention enables users to configure, deploy and get access to substantially customized computer systems. In the preferred embodiment of the invention, this is done with no need for human intervention. In broadest terms, the invention makes this possible by allowing the user either to select one of a set of model virtual machines that are pre-built with such components as virtual hardware, an operating system and one or more applications, or to specify desired components that are then assembled into a virtual machine. The chosen or specified virtual machine is then loaded onto a physical platform such as a host server. The user can then use the virtual machine as if it were a dedicated computer.

Because more than one virtual machine can normally be installed on a single host server, and will be fully isolated from other virtual machines installed on the same host, the number of users who may have dedicated systems is not limited to the number of available physical servers, yet there will be no loss of security. Moreover, thanks to the properties of virtual machines, each user's provisioned virtual machine(s) can be migrated to other hosts as needed, or even exported for running on other servers or systems, including the user's own, in which case the numbers of virtual machines and users is essentially unlimited. Before the specific novel features of the different embodiments of the invention are described, certain key concepts and structures are explained.

General System Configuration

FIG. 1 shows the main components of a computer system that includes one or more virtual machines (VMs). The illustrated system includes an underlying system hardware platform 100, system software 200, and a plurality of virtual machines (VMs) 300-1, . . . , 300-n that run on the system software 200; the hardware platform 100 and the system software 200 thus form a host for the VMs.

As in most computers, two different types of data storage are commonly provided: a system memory 112, typically implemented using any of the various RAM technologies, and a non-volatile storage medium such as one or more disks 114. FIG. 1 also shows that conventional peripheral devices 400 may be connected to run on the hardware 100 via the system software 200. Note that the disk 114 itself, from the perspective of the system hardware and software, is also a peripheral device.

The system hardware 100 includes one or more central processors CPU(s) 110, which may be a single processor, or two or more cooperating processors in a known multiprocessor arrangement. As in other known systems, the hardware includes, or is connected to, conventional registers, interrupt-handling circuitry, etc. Any conventional network interface device such as one or more cards 150 may also be included to enable communication and data transfer with external systems via a network 700. The network 700 may be of any known type, both publicly accessible networks such as the Internet and proprietary networks, and may be either wired or wireless or both.

Citations

US 7,228,337 B1 - Methods and apparatus for providing a network service to a virtual machine
In a computational device, a technique provides network communications to a virtual machine. In particular, the technique includes receiving a first communications signal having a...

US 7,006,964 B2 - Communication terminals
A system, method and apparatus are described for delivering software to a terminal 1. Before software is delivered, an emulator 51 is invoked to validate...

US 7,448,079 B2 - Method and apparatus for providing computer services
An apparatus and method are disclosed for providing one or more computer services to a plurality of customers (A,B,C). At least one virtual machine (VS)...

US 6,978,232 B1 - Method and system of demonstrating a service that provides computerized transactions using a computer network
Methods and systems for demonstrating a service that provides a computerized transaction to a client via a server coupled to a computer network. One aspect...

US 6,865,732 B1 - Providing an embedded application specific web server
A method of providing an embedded web server for a device is described. The device is of a particular device platform and is required to...

PatentSwarm provides a collaborative workspace to search, highlight, annotate, and monitor patent data.

Start free trial Sign in