Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Is it possible to use a single VM image to run many guests, where each guest is a Windows Server OS (specifically Windows 2003R2 to begin with, we would evetually migrate to 2008R2 or whatever's up to date then), having installed exactly the same applications and same windows settings (hence the wish for a single image) but only differing in a few configuration files, and computername, IP-address, etc.

Edit Note: Windows Server isn't strictly a must for us. We could run the guests/nodes as XP or Win7 and it would also work.

So essentially I would like the guests to share a common "OS + app service" where all patches to the OS and applications only need to be administered once.

Each guest should however appear as a single separate server on the network (computername in the Domain, etc.) and each guest could have very slight configuration differences. (For eaxmple some guests would run service X and Y, and other guests would run service X and Z.)

Is this possible with any virtualization solution? What hardware is needed? What vendors support this? Is it a good idea after all (for Servers)?


Background: This is for our build server farm. Each build node should be exactly the same anyway, except for it's "identity" (computername, etc.) to make it accessible from the master build node. (And the master build node would be identical with but a few minor differences wrt. the build automation software.)

share|improve this question
    
Hyper-v has diffential disks but that does not handle exaclty what you are looking for. The real issue is that these servers will only be the same once (after the first boot up). What are you trying to solve anyway? –  tony roth Mar 21 '12 at 13:52
    
@tony - "What are you trying to solve anyway?" - I already added a background info. Use case is this: New app is added to the build process. Instead of having to install and configure it on all nodes (guests) I just do it once, reboot all, and voila, I'm done. –  Martin Mar 21 '12 at 18:03
    
sounds like you need application virtualization not os virtualization. –  tony roth Mar 21 '12 at 19:42
    
@tony: What is application virtualization exactly in this context? (And remember, a build process consists of a lot of tools, quite often quite patched together and only working properly if they have the whole machine/OS to themselves.) –  Martin Mar 22 '12 at 12:05
    
Not all apps can be app-v'd,xenapped etc but if yours can then this sounds perfect, I'd google app-v from MS,xenapp from CITRIX, basically it isolates the OS from the app, if the OS can boot then more then likely the virtualized app will run fine. If its a service that needs to be added to the build then MS service NOT SERVER virtualization may do the trick. Of course service virtualization is NOT rtm as far as I know. –  tony roth Mar 22 '12 at 13:25

3 Answers 3

Not that I know of, and this is why:

The virtualization method that comes closest to what you describe is the kind used by things like Solaris Zones and OpenVZ. These are *nix systems of course, but it's still a useful example. VMs of this type share a kernel between all the VMs and the hosting OS, so when the host-OS kernel is patched all the VMs get the same patch applied (after the reboot-all-the-things step, of course). What they don't get to share are any of the file-system changes such as patches to libpam or any system libraries.

Windows is a different critter and is arguably even more dependent upon kernel/file interactions. It is even less able to do what you're doing than the *nix systems are. The biggest stumbling block is that machine identity is essentially kept in a monolithic file-backed, in-memory store rather than the files of a *nix system. This is a lot harder to change than "just a few files in /etc".

share|improve this answer

I'm not aware of any solution that would allow you to substitute the underlying bits of the master image and have them magically propagate to multiple slaved systems. However, you can achieve almost the same result if you're OK with rebuilding the slaves every time you patch the master, at a very low time and effort cost.

In our dev environment, we use vSphere, and we clone our master dev web and dev db servers with VMware Linked Clone functionality. You can't access it using regular GUI management tools, since linked clones exist mostly for use by VMware View (which allows for easy management of such solutions, but is not compatible with Windows Server OS); however, the API is available and supported, so it's possible to work with linked clones using scripts. The two available options are Perl-based http://download.virtuallyghetto.com/vGhettoLinkedClone.html and PowerCLI (VMware PowerShell extension) http://www.vmdev.info/?p=202.

Once you learn how to create linked clones, you will need to figure out a way to customize every clone you create. Unfortunately, I can't help you here, since our dev is all Linux, and customizing a Linux clone is trivial (for starters, none of that sysprep mess), but I know that automated Windows customization is still doable - basically, you have to accomplish the same thing that vCenter does when you create a regular clone of a Windows VM with vCenter Client.

This is not going to be a simple project, it took us a few weeks to get everything up and running smoothly, but now we can recreate our complete dev environment in a matter of minutes, while having to manage (patching, code and db schema updates, new app deployment) only two master VMs.

I'm not going to talk about hardware here, since it all depends on your specific needs: the size and number of servers, the developers' expectations regarding performance etc. Feel free to browse Serverfault for design recommendations for vSphere environments, you'll find plenty of good advice.

As a P.S., since I doubt this is a cost-effective path for any but the largest development houses, but would be inappropriate to omit: if you have tons of money, you can achieve View-like results with any OS using vCloud Director: http://www.vmware.com/products/vcloud-director/overview.html.

share|improve this answer
    
"use by VMware View (which does exactly what you want, but is not compatible with Windows Server OS)" ... well, the build server is 2003R2 at the moment, because that made sense for a single physical server. However, all build tools also run on XP (because that's what developers use(ed - now Win7 for devs, just a few XP dev boxes left, but still all tools work on XP). So we certainly could switch to XP for the build nodes. Could you elaborate a bit on VMware View, or will I be able to make sense of what VMware puts on their site? ;-) –  Martin Mar 21 '12 at 18:16
    
If you can run it all in Win7, View becomes a no-brainer. VMware web site does a pretty decent job explaining what it is: vmware.com/products/view/overview.html. –  Max Alginin Mar 21 '12 at 19:43

You can start with a master image, copy it as you require and then customize things like name and IP as you require. However, once you modify, you will need to manage patches per machine. If you are using VMware you can use VCenter to manage patching.

share|improve this answer
1  
vsphere v5 does not support guest updates anymore! –  tony roth Mar 21 '12 at 13:48

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.