Friday, March 7, 2008

The beauty of VMWare!

I have been using VMWare for a long time now.  most for testing, and workstation use, which has been great. My experience has been limited to VMWare workstation, GSX Server, and VMWare Server. I'm really looking forward to getting to work with VMWare ESX. 
Recently, and in creating the roadmap for my technology plan at work, I included virtualization as one of the primary goals. Though ESX is in the works, the reality of it is a bit more complex than dropping in a server and running it. There is a SAN requirements, multiple servers, infrastructure, as well as virtualizing a lot of the the physical servers that already exists in order to take advantage of the technology. 
Before getting to that, however, I decided to start deploying servers on VMWare server. 
The problem:
I have multiple servers in each of the locations I have, and each location has different requirements for server space, memory, etc ... 
The old method worked, but wasn't efficient. I would basically create a Virtual Machine that is the size of the needed space for the server, and deploy that in one VM. that worked for each of the servers, but having the OS templates for every possible disk size needed is a pain to maintain, also, does not give me the option to expand easily and seamlessly. 
The solution:
Instead of using the full VM for the OS and the space, I created just one VM that contains the OS, for instance, 12GB, customized it, and save it somewhere. 
Then, I created a number of additional VMs, which I called by the size of their drive space allocated to them. So, I would create a VM called 40GBHDD , and create a drive of 40Gb on it. I did not install an OS on them, but used them just as hard drive templates. 
Also, I made sure not to allocate the space ahead of time, as to not consume the 40GB of space with the template file. 
Now that I have a template file that is split into 2GB chunks, I have about 5Mb of space taken up by this VM, and is not a virtual hard drive that can be connected to any VM. 
So I essentially created a custom solution to be able to plug in any hard drive size I want into my VMs to accommodate the different server sizing requirements without taking up much space, and shows up as a very elegant solution. 
In addition, this gives me the flexibility to expand my needed space in the future by connecting additional drives, copying the data from the old drive to the new drive, then disconnecting the old drive. All this would be done without ever touching the OS. 
The other advantage is data protection in case of an OS crash or malfunction. If windows doesn't boot anymore... very well, I just trash the OS, copy a new copy of my template, boot it up, configure it, and reconnect the data drive to it. 
This method takes deployments of servers from hours to literally minutes... 
- Copy VM Template
- Copy Hard Drive template(s) 
- Connect Hard Drive template to VM
- Boot up VM - Configure it
you have a server! 
I don't know if anyone would ever read this and benefit from it, and whether people would be interested in more technical details about doing it. please leave a comment if there is interest. otherwise, I just wanted to share the general concept, as it is now saving me a lot of time, and thought it might do the same for someone else looking for something similar. 

No comments: