I have been involved in a few projects recently that use Server Virtualisation and I thought I'd share my observations and thoughts.
First off I think it is definitely a very useful technology when used in the correct place. From my experience low usage servers work well on the platform, as a rough estimate if you logon to the server and the CPU never goes above 10% utilisation then it is ideal. This can include domain controllers and DNS servers etc. Servers that don't migrate well are SQL servers, although I have seen it done and for development it can make sense.
The main thing to ensure is that the host is a good box with lots of memory, lots of disk space and fast disks (I have found that RAID5 and RAID0 disks arrays are a good choice). Using 64bit Windows 2003 (or 2008) makes a good host as it can access more physical memory. In my case the VM host is not on the domain, it is in its own workgroup. I needed to do this because it hosts the domain controller but in some situations I think it is a reasonable model anyway. I am using the VMware Server to host my VMs, this product is free and in my experience has superior performance to the Microsoft server (although I have not tried the Windows 2008 platform). It also has the advantage of allowing me to take whole images and run them on my local copy of VMware workstation. The VMware server also allows you to create clients that have more than one CPU.
I have changed my small office network over to VMs and although it is very small in comparison to most companies it has given some benefits that are equally applicable to any company. My original server was a domain controller and also general purpose file and application server. It was getting a bit old and I had some more modern hardware free. I toyed with the ideal of rebuilding the server but that seemed like a lot of work and what would happen next time I wanted to upgrade, converting it to a VM made sense.
VMware have a free tool VMware Converter that can convert a physical server in to a VM, this meant that I could try out the migration without any downtime on the live server. At the same time as migrating to a VM I was also able to increase the size of the system drive as it was getting a bit small after upgrading from Win2k to Win2k3. I was also able to split off some of the application server roles to a new VM as it didn't really make sense for them to be on the domain controller. Having a VM host also allowed me to host other machines that I don't use as often, for example, my main development machine is now running Vista but occasionally I need XP so I simply cloned the old physical XP development machine using VMware Converter and can boot it up anytime I need it.
Once virtualised the benefits include:
- I now have a simple backup of the whole machine. In the event of a hardware failure or upgrade I simply copy the files to another VM host machine and boot it up.
- I can backup the full machine live by using a the VSS (Volume Shadow Service). The tool I use is Hobocopy and this allows me to snapshot the client machine without shutting it down. The image it creates can be booted on another VM host if I have a hardware failure. (This doesn't remove the need for some application backups as well, e.g. Exchange, but does make it easier for less frequent changes, e.g. AD, DNS etc.).
- I can try out changes to the servers and simply roll back the whole machine to an earlier snapshot.
- "All eggs in one basket", if the host fails so do all the clients.
- It is possible for one VM to slow down other clients on the same host.
At the same time as doing this migration I also made use of DFS (Distributed File System). I have set this up so that one machine is the host and all shares to my SAN disk or servers are accessed through this. This means that it doesn't matter how the physical hardware changes the access to shares is the same. To take this one step further I would even create a DNS entry for the DFS host so that even the DFS host can change without changing any other applications or configurations.
One thing setting up the DFS highlighted to me was that cheap SAN devices (e.g. the Buffalo Terastation) are limited. They rarely support NTFS, even if that say they support AD (Active Directory) they are limited to the number of accounts they will import (I think 1000 is common). If they don't support AD then you have to manually setup security and even if they do it is not the same as the security on the DFS host. The expensive SAN systems tend to work in a different way and appear to the host like any other disk drive, I can't find a way to do this with this cheaper systems. The lack of NTFS is the biggest issue for me, I can't use security on folders and also tools like Robocopy don't read the file timestamps properly. I also have a file image backup that looses properties like the hidden attribute which makes restores difficult. These problems led me to hunt out another option and I think I have found it. Drobo is a disk array that I can connect to the VM host or VM server as a real drive. It has the advantage over normal external drives of being expandable as you need more disk space, you could start with four 500Gb disks (giving 1.4 Tb) and when this is full you simply remove one disk and put it another larger one. If there is a failure you can also swap a drive and it will automatically resync it. The unit is not cheap but I think it makes a really good system for disk storage when used with DFS.