In a virtual environment, multiple and related virtual machines are often packaged or pooled together into a single entity or object. Pooling the virtual machines into a single object allows the virtual machines to be deployed into an active environment efficiently and at one time, once all of the virtual machines have been provisioned. In the context of a distributed computing system, such as multi-tiered web applications, deploying all of the required virtual machines at once is more efficient and manageable.
However, when the scope of a distributed computing system is large, the size of the pool of virtual machines grows proportionally, even though most of the virtual machine instances included within the pool may be of the same type. To account for such size issues, conventional methods simply increase the size of the virtual machine pool, resulting in wasted storage, memory, etc. Moreover, in cases where each virtual machine instance is slightly different, conventional methods cannot engage in cloning; rather, conventional methods require the generation of a single virtual machine for each distinct virtual machine type, again, resulting in wasted storage and memory.