Awwlright, both of you, my dear readers. I should not be writing this post, but I have to get it off my chest. This is part I of two Scandalous posts. Unfollow me now, before it’s too late.
I have been around so many people lately who are loving, fawning over, peddling, drooling over and otherwise talking up virtualization, that I have to remind all of us:
Virtualization is a workaround. Necessary, perhaps desirable in the real world where we work every day, but a workaround none the less.
Why is it a workaround? Because it avoids, that is allows us not to face, some of the profound sucking sounds generated by today’s operating systems. Frankly, if operating systems and software were better, these sucking sounds issues would not need working around so urgently, and we would not need virtualization quite so much.
What sucking sounds? Consider the reasons why you are trying to run those 500 vm’s on a chassis of blades in the first place. I bet, at the end of the day, it’s just to make an end run around things that the virtualized OS’s can’t handle on their own.
- Resource management. One key function that virtualization supplies that the OS doesn’t is the ability to regulate the amount of disk space, cpu utilization, memory and so on that the applications and services we use consume. If the OS actually did that in a meaningful way, the hypervisor would not need to. To wit: where’s the dial that says “limit process x to 20% of the total CPU and 50% of the memory on this machine.”
- Security. Multiple VM’s provide, at least so far, some added isolation between processes and security context that might be hard to manage on a single server in, say, Windows.
- Software Conflicts. Even if there were a powerful enough server, could you install all the services required for your organization under one Windows operating system on one server? Yeah, that. That’s what I’m talking about. Most operating systems are, today, still terrible at hosting a bunch of heterogeneous services. Miserable at it. It’s not wise, it’s not safe, it’s not practical.
- Reboots. Nearly every installation or removal of a service or application requires a reboot. A better OS would limit reboots just in the way the host system does not need to be rebooted when a single VM is rebooted. Sure, some progress has been made, but there’s no pressure, really, to make a system that stays up for years at a time.
- Portability of Services. So, it’s really cool to move a running process from one host to another. Cool and amazing, but only because the OS can’t do that. If the OS could, that would also be cool, amazing, and potentially simpler and easier.
“Back in the day,” as they say, it was the job of an OS like Unix to provide a multiple-service, multiple-user environment that would host all the processes you needed to run, and stay up. Today, especially in Windows, it seems like we’ve essentially given up on that idea altogether. Virtualization is practical, viewed in this light, but it’s also an enabler. It allows operating systems to suck more and more, and continue to ignore whole vital feature sets, because they’ll just be hosted in (baby-sat by?) some “meta OS” that makes up for their deficiencies. Today, nobody is going to invest a bunch of money making Windows better at hosting heterogeneous services, because now those people are all busy working on Hyper-V, avoiding the problem.
And, consider the down side – how many copies of, for example, the Windows core services are running on those hard-working CPUs in your virtualized environment? What for? Now we need expensive deduplicated storage(?!) because of all the redundant files we have. Some folks are even running all those redundant processes from the redundant files directly out of deduplicated storage so they can run side by side on a farm of very powerful machines. That’s actually a whole lot of worthless computing, no?
I know, it’s the real world, and this is the only available solution. We all need to virtualize. It’s a requirement. I can live with it, as a necessary evil. I’ll sit back down now.
Still, isn’t it spectacularly wasteful?
<Commence tomato throwing>