views:

1194

answers:

4

I currently use VMware workstation to create separate workspaces for various clients that I do work for. So for a given client I only install software needed for a specific job, and don't have to worry about software A for client #1 mucking up software B for client #2.

With an adequate sized hard drive this works well but I am not sure I am using VMware to its best advantage. The steps I go through when setting up for a new job are:

  1. Do a windows update on a base VMware image that I have saved away.
  2. Make a full clone of the base image and rename for the new job
  3. Launch the new image and configure/install as necessary.

After doing this for a while I now have a collection of VMware images sitting around that are all at different levels of updates unless I manually go into each image and kick off an update cycle. And if there is some new tool that I want in all of my images I have to also go around and do multiple manual installs. But I feel secure in knowing that each image is self contained (albeit taking 10+Gb at a hit) and that if anything happens to a single image then an issue cannot propagate into any other image. (Note that I do do regular backups of all my images)

So my question is am I doing this the best way, or should I consider linked clones so that I only have to do a windows update or common application install on my base system? What are the pro's and con's of each way of organizing things?

In addition, although I try not to keep data files inside the Image's local disks I find that the share to my local hard drive seems very slow compared to the Images file system, hence I tend to leave work inside the image. Should I force myself to not leave data inside the image? Or put another way, how much corruption can a VMware image take before any single file in the images filesystem becomes inaccessible?

Edit

Some thoughts I have had since posting this question

  • With a full clone I can archive old work away and remove it from my primary hard drive
  • Link clones take up a lot less space than a full clone, but I am concerned about archiving a linked clone away somewhere else.
  • The time taken to make a full clone is not too significant (5-10 mins) and I am generally doing it on a weekly basis.
  • However I also tend to do a lot of "Lets see what happens with a clean install", especially when I am documenting how to install applications for the client.
  • I have found that my VMware images cause a lot of fragmentation on my hard drive, so I also end up doing a lot more defrag that before I used VMware. I am not sure if using linked clones would reduce this.
+2  A: 

This is really going to depend on what kind of and how many projects and clients you have. Building a new VM for every client doesn't scale well if you have dozens of clients, since you'll have to be keeping them all up to date.

I'd be wary of keeping files spread between the host and VMs as you mention though. It's better to keep all your dependencies in one place.

I'm interested to see others' VM strategies here too.

BQ
+1  A: 

I work for CohesiveFT, the guys who make the Elastic Server platform - so I am biased - but we use the platform to deliver projects to partners and customers. It allows us to set up assembly-time components for different projects and then build them into VMs on the fly for VMware, Parallels, Xen and EC2. The service has a tagging feature so you can tag software packages, server specifications and templates and keep your assets straight.

You can also create assembly portals (think a content management system for assembling virtual servers) which you can control or even let customers have access to customizing their own virtual servers.

http://www.elasticserver.com

+2  A: 

I'd stick with your current system. In this situation, having isolated images gives you a lot more flexibility. It might cost you some more time doing updates and installs, but it will be worth it. And that's mostly stuff that you can have going in the background while you do other things, so if you manage your time well the time spent on that should be negligible.

Also, it's probably a good idea to keep your images on their own disk or at least on their own partition. If you do that it shouldn't have any effect on fragmentation on the rest of your system.

Gerald
+1 for the suggestion to separate images from system disk. This one bugged me for a long time.
Avi
A: 

Hi,

You can have a quick browse at virt-manager, just as an aside as to whats also there.. you never know, you might even like it..I think having such a tool can give you a bigger kick in performance and less disk defrag issues.

You would have to go for a steep learning curve and the conversion time to make it all work perhaps.

If updates is your main time spender, try WSUS, nothing related to VMs itself, but it helps with deploying windows updates.

Lastly, check Hanselman's blog on Invirtus, Virtual Machine Optimization at its best.

Ric Tokyo
+1 for WSUS. Seems interesting. 10x
Avi