Virtualizing for hardware independence with good disk performance?-Collection of common programming errors
Hardware independence is exactly the right way to look at it – separating the services you rely on from the hardware is a major benefit that virtualization offers.
Your question about portability and IO performance isn’t totally clear but I think I can see what you are getting at.
Pretty much all hypervisors, certainly all of the mainstream ones ( VMware, Microsoft, Xen, KVM) allow you to shut down a VM and move it to different storage or to a completely different host without any issue, your only problem will be dealing with the fact that you are usually copying a very large amount of data. Most of the vendors have a number of Hypervisors and, in general, its pretty straighforward to move a VM from (say) VMware Workstation to VMware Server to VMware ESX. Moving between Hypervisor vendors is a little harder and will involve some conversion but again all of the major vendors support this to some degree. In general, provided a VM is powered off, it can be moved with no more trouble than copying a large file.
Moving VM’s with minimal (or no) downtime is a lot harder but all of the major vendors provide some version of this now. With VMware it’s called VMotion, Microsoft call it Live Migration, Citrix (Xen) call it XenMotion or Live Motion. All of these require shared storage (a SAN or NAS) and enforce fairly rigid restrictions on the variety of hardware you can have in your cluster but they will allow you to move a running VM from one host to a different one in a managed cluster with near zero (millisecond\sub-millisecond range) interruption in services. This is a highly desirable feature and tends to require expensive licenses as Bart Silverstrim pointed out in his answer but Microsoft’s HyperV 2008 R2 Server allows you to build such a cluster using only free (as in beer) components which is quite interesting as do Citrix . The cheapest licenses from VMware that support this cost around $2k per CPU if I recall correctly, but you can’t really argue with the Citrix or Microsoft price point if you want to build something small. VMware is arguably the best of the bunch but you have to pay quite a lot to get everything from it, Xen is more mature than Hyper-V but Microsoft have made huge progress over the past 18-24 months so shouldn’t be discounted. Vmotion\Live Migration has no major impact on Disk IO performance.
A variation of VMotion\Live Migration involves leaving the VM running on the same host but moves the underlying storage location without bringing the VM down. This is an even more expensive licensing option from VMware (they call it Storage VMotion), Microsoft have a “Quick Storage Migration” that is similar but not totally seamless as far as I’m aware. Note the copy process still takes a long time and it will have an impact, possibly a significant impact, on overall storage performance while the migration takes place.
In terms of VM hard drive performance you should keep a few things in mind. The Hypervisors are all pretty good – you should expect to see 80%+ of native performance even under extreme conditions and for the most part unless you have very weird storage IO patterns you can safely assume 95% or better. Basically a well planned implementation with a good storage subsystem should be hard to tell apart from a native solution. You need to know how much performance your VM’s will need and then you need to provide that plus any additional performance that you need to provide anything extra (like Live Migration\failover capacity etc). As with anything else (CPU, Memory, Network Bandwidth) if you fail to provide enough storage capacity (sequential bandwidth, space, IOPS) then your solution will perform badly. The best way to approach planning for these is to get a good idea of the total storage characteristics that you need (again GB of usable space, Peak total IOPS, Peak bandwidth) add on whatever you need for imminent growth and make sure the storage solution that you put in place can provide that.
As a general rule for VM hosting environments spend money on memory, make sure you have enough CPU power and for storage (at least until we get cheap SSD storage) buy a good RAID controller\SAN\NAS and try to buy as many disks as you can – 2TB of storage that comes from 8x250GB disks will substantially outperform 2x1TB disks all other things being equal.