A chance comment by Avi about V2V set me thinking — how often should you have to reinstall production virtual machines?
For physical machines — say the rack of web servers serving up your website or the machine in the corner acting as your office file server — the answer is forced upon you. You install some enterprise operating system which has a 7-10 year support contract. Long before that expires, say around the 4 or 5 year mark the machine itself fails or becomes too slow to meet your needs. Since physical machines have traditionally been hard to clone, you buy yourself a new server and install a new OS, painfully recreate your configuration, and the cycle begins again.
Virtualization changes some factors in this equation. You can migrate virtual machines from one box to another and upgrade or replace host hardware transparently. Hardware failure is therefore not a factor. But hypervisor technology has changed in the last 7 years, from early technologies like UML, through VMWare, Xen and now KVM.
I personally have a VM handling my mail which is 6 years old, having been migrated from UML to Xen, and I have a lot of production VMs (webservers mainly) which were installed in 2006 on Xen and are today still in production on KVM. I wasn’t too clever when I installed those VMs and they are running on some old version of Debian with intermittent upgrades. The factor that would make me reinstall those would be to update the software rather than the hardware.
So hardware is now (from the point of view of the OS) infinitely reliable and long-lasting. But the OS’s 7-10 year support cycle which in the days of flakey PC hardware looked very long now seems to be a problem. And the hypervisor is a wildcard: I think right now that KVM as part of the Linux kernel will mature much like other Linux features. But 10+ years is a long time, perhaps KVM or Linux will take a misstep or perhaps I’ll want to upload my VMs to the “cloud”? On a more mundane level, how compatible in reality will KVM of today be with KVM in 10 or 20 years time?