How to Avoid Virtual Machine Sprawl in Cloud Age?

Technology can be a lot like fashion, with quickly shifting trends. Once we embraced big iron but after the mainframe age the industry went into the client/server age where we soon found too many servers to manage. So we consolidated them, not back to mainframe age, but onto hypervisors. With one physical server, you can run multiple virtual machines.

Server consolidation solved a big problem and resulted in big cost savings. From management’s point of view, however, it does not actually reduce the number of servers to manage in your enterprise. To some extent, it worsens the problem!  In some circumstances it’s so easy and inexpensive to create a new virtual machine that you end up with many more servers than you really want or can effectively manage. This problem not only exists in private clouds, but also in the public cloud.

Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.

According to VMware CEO Paul Maritz in his keynote at VMworld 2010, the number of virtual machines exceeded physical machines in 2009, and will reach 10 million by the end of this year. This is definitely great news for the virtualization software industry but also a challenge moving forward.

So how should you try to solve the problem of virtual machine sprawl or even better, prevent it from happening? I discuss some solutions one by one here.

Better management

The pure number of servers poses a big challenge for management. For every additional server, you have to configure and manage it. This effort is proportional with the number of servers – despite virtualization.

While we cannot reduce the work in the back, we can definitely ease the interaction, and reduce the management complexity.

Here are several approaches:

1. Grouping. Putting related servers in a container group and managing the container can significantly reduce the complexity. You can hide the servers unless you want to dig down for more details. vSphere vApp is a good example.

2. Generalization. It’s a special type of grouping in which you can define generic behavior/settings while allowing group members to override any of them. You can think of the port group in vSphere networking as an example.

3. Aspect oriented management. You don’t look at all aspects, but one aspect of all the entities. Then, you have to handle one thing at a time. Need an example? Think about the profile management in vSphere Client. When focusing on one aspect at a time, a human being can handle complexity better.

4. Automation. Automating routine tasks and operations through scripting and programming is also critical. No one can afford clicking and typing all from GUIs in a large-scale system.

Different architectures

Server sprawl is a problem mainly because every server is different. We have to keep it even though there is only very small piece of user data that is unique, not to mention different applications. What if we could externalize user data and make all the servers the same? This way we don’t need to care much about particular virtual machines, and we can trash them anytime we want. When appropriate, we can also recycle used virtual machines.

This brings in big benefits – not only the ease of provisioning and lifecycle management but also simplification of system backup, auditing, etc.

Any disadvantages? You have to re-think your platform architecture. Legacy applications have to be re-architected and rebuilt, which may or may not be worth the effort given a particular project in a given scope.

Follow this blog for future architectural tips. I will blog more about this soon.

Merging virtual machines

Virtualization also consolidates virtual machines but does not break the boundary of multiple virtual machines. The consolidated virtual machines continue to run exactly the same way as before. The migration process is seamless and painless.

How about a step further? We can break the boundary of virtual machines and merge multiple virtual machines into one. This may sound crazy but it’s feasible for some types of virtual machines.

Let’s pick a concrete example. Say we have several virtual machines serving web content. They can easily be combined into one virtual machine by copying files and configuring virtual host features in a web server like Apache. From a users’ perspective, there is no noticeable difference.

The disadvantage is that we lose the built-in isolation by virtual machines. Sometimes you care about isolation; sometimes you don’t. When you don’t, you can definitely consider this.

Technically it may be difficult, if not impossible. For example,if you have applications running on Windows then the tight coupling with the system registry may prevent you from moving applications around. Certainly you want application virtualization technology like VMware ThinApp so that you can easy move apps by simply copying the application directory.

After all, you don’t want to merge the virtual machines manually. A good merging tool is definitely a big help here. It’s also an opportunity for some entrepreneurs to start a company because I don’t see such a tool here today.

This entry was posted in Cloud Computing and tagged , , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.


  1. Jamie
    Posted September 13, 2010 at 11:03 am | Permalink

    Good article. Software architectures before virtualization would place the apache server on a linux/windows machine to distribute the load. Now that we have resource pools and virtualization are you suggesting there is less of a need to distribute the load and consolidate the apache server in this example to a resource pool?

  2. Posted September 13, 2010 at 11:13 pm | Permalink

    Thanks Jamie,

    Even we have virtualization today, we cannot get away from OS or JEOS (just enough OS). When you have multiple physical servers serving web content, you can virtualize them to multiple virtual machines with 1-1 mapping running on a physical server. You can also merge the virtual machines into one with the Web contents consolidated.


3 Trackbacks

  • […] machines. You can achieve these in two ways: power off or suspend your virtual machines not in use; consolidate applications from multiple virtual machines to one. In the first case, the vRAM used turns zero. In the latter case, the memory overhead of operation […]

  • […] The one to one mapping allows vendor to pre-install and configure an application in a virtual machine, therefore simplify installation and configuration. When a user receives the virtual machine, she can just run it with very few changes like IP address if static IP is needed. While the installation/configuration issue is dramatically simplified for ONE application, you will have more operating systems to manage. This is the virtual machine sprawl as discussed in my previous article How to Avoid Virtual Machine Sprawl in Cloud Age. […]

  • […] to install a new operating system and other software. Because of this feature, we start to have a new problem with too many (unused or useless) virtual machines. But this is a separate topic that deserves its […]

Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


    My company has created products like vSearch ("Super vCenter"), vijavaNG APIs, EAM APIs, ICE tool. We also help clients with virtualization and cloud computing on customized development, training. Should you, or someone you know, need these products and services, please feel free to contact me: steve __AT__

    Me: Steve Jin, VMware vExpert who authored the VMware VI and vSphere SDK by Prentice Hall, and created the de factor open source vSphere Java API while working at VMware engineering. Companies like Cisco, EMC, NetApp, HP, Dell, VMware, are among the users of the API and other tools I developed for their products, internal IT orchestration, and test automation.