Technical issues represent just a small part of the issues IT managers face when deciding to adopt virtualization. Beginning much earlier than the pain from actual implementation, IT managers will be frustrated by trying to find products that are officially supported in a virtual environment and by trying to understand how licensing applies.
Currently, Windows is the only operating system which requires a commercial license for virtual machines. This implies that Microsoft has the biggest problem in adapting its licensing model to the virtual world. This also affects servers on the back end, but not just from Microsoft.
Licensing the OS
Windows licensing is the very first challenge a virtualization newcomer has to overcome. It is offered in several editions; most popular are Standard, Enterprise and Datacenter. Windows also has two different licensing models: per-processor and per-client access.
Selecting the right edition becomes critical in a virtualization scenario, not just for available features, but also for price impact.
In fact, Microsoft has modified its licensing terms since the release of Windows Server 2003 R2, allowing customers to receive some notable benefits when buying the Enterprise or the Datacenter edition. In the first case, if we license just one physical server, we can have up to four virtual machines with the same OS (operating system) for free, while in the second case licensing one physical server will allow us to install unlimited virtual machines with any edition of the OS.
Even without looking at exact prices, it's evident that the Datacenter edition represents huge savings over the Enterprise edition when the project plan is to consolidate several machines to a single host.
But problems do rise when we work with Enterprise Edition: What happens, for example, if we need to license just one physical server, but eight virtual machines?
Official Microsoft documentation doesn't explain how to license the remaining four virtual machines not covered by the physical Windows license we purchased. Since this question is applicable to any virtualization platform, including Microsoft Virtual Server competitors such as VMware, the answer is critical.
At first glance, the only way to legally run more than four licensed virtual instances seems to be to buy a Windows Datacenter Edition as the host OS. But even without the needed licensing guidelines, Microsoft allows another possibility: Use more than one Enterprise Edition license to obtain the rights to run the remaining virtual machines.
In our example with eight virtual machines, we would have to purchase two Enterprise Editions licenses, both hosted on physical hardware (obviously only one of them will be used to activate Windows), allowing four virtual machines each for a total of eight virtual machines.
Note that such an approach has to be adopted even when we need several virtualized Microsoft Windows operating systems but are using other virtualization programs such as VMware ESX Server, XenSource, XenEnterprise and Virtual Iron. It's important to note that Enterprise Edition licenses are bound to physical hardware even without an actual installation on the bare metal.
To further complicate things, we have to consider that several virtualization approaches exist, and that Microsoft doesn't clearly distinguish between them, instead letting vendors interpret licensing which forces customers to live in a continuous state of doubt.
The most notable case involves SWsoft, which offers a virtualization solution called Virtuozzo. With Virtuozzo, we don't have completely autonomous virtual machines, but several partitions of the same base operating system. Each of them appears as a self-sustained OS, but they actually share a large part of the environment, including the kernel, with other partitions.
Applications installed inside this virtual infrastructure can be shared among all partitions or appear in just one of them, depending on administrator choice.
What happens in this case? Since Windows is installed just once, kernel, hardware drivers and the whole file system is shared among all partitions, it's easy to imagine that we only need a single license. But Microsoft documentation about licensing is not so clear: The operating system environment is defined as "...all or part of an operating system instance, or all or part of a virtual (or otherwise emulated) operating system instance which enables separate machine identity."
This definition clearly applies to Virtuozzo, which allows its partitions to have different network identities as well as clearly separated application sets.
Licensing back-end servers
The large majority of virtualization newcomers focus their attention on the operating system licensing. In actuality licensing is the easiest part, because you fundamentally have to understand and apply only one vendor policy because there only is one at the date of this publication: Microsoft's. How back-end servers are licensed is much more complex because each ISV (independent software vendor) can adopt different licensing policies, being slower than others to adapt to virtualization.
So, while Microsoft back-end servers follow its OS licensing scheme which requires a license for every virtual processor, vendors like Oracle explicitly deny virtualization as a licensing price mitigation factor, still requiring that all physical CPUs for each database instance are licensed.
Other products like SAP continue to adopt a per-user licensing model, preventing any benefit to adopting virtualization.
The virtual world is multi-core, too
As demonstrated earlier, Microsoft licensing is linked to the concept of the processor. This term, once perfectly clear, became vaguer since the appearance of Intel HyperThreading (HT) technology in 2002. The HT technology allowed a single CPU to act, and be seen by the operating system and its applications, as two physical processors, mimicking a symmetric multi-processing (SMP) system when executing tasks.
With the introduction of dual-core x86 CPUs in 2005, the processor concept is doomed to change forever or even disappear; every physical chip is now able to host one or more cores, effectively representing what we used to call processors, in a way that we actually have a SMP system in a single chip.
Use of multi-core CPUs proven to be highly efficient and impacted the IT market so heavily that it is already a consolidated trend; we already see the first quad-core CPUs in early 2007 and within five years we could very well reach up to 80 core density.
Unfortunately, today's virtualization software offerings aren't able to virtualize a physical chip with its cores in a virtual machine. So every single core appears as a stand-alone, virtualized CPU.
This is really confusing for customers who have to understand this difference and how it impacts on vendors' licensing models.
So what exactly does Microsoft licensing means when referring to a processor?
Current documentation clarifies this term to mean what fits the physical socket on the motherboard, and it doesn't consider how many cores are available. But despite what seems obvious, Microsoft doesn't use same approach in a virtual world: In a virtual machine, a processor is what the virtualization platform exposes. And we said it's a core. So our per-processor license becomes, behind the scenes, a per-core license, which is more than expected.
Automation means complexity
In a highly automated virtual data center (something we'll see soon), physical resources will be reassigned to virtual machines depending on their workloads. This process will surely include memory and virtual CPUs. So, what will happen in a scenario where we initially assign a single virtual processor to our virtual machine, but suddenly it receives a second processor to better serve required tasks?
We could be asked to buy a two-processor license, if we already plan to configure dynamic resource allocation, but the redistribution could never take place, or it could take place just for one day in month, or every workday just during peak hours.
Would it be fair paying for an entire secondary processor license in these cases?
Today, a notable portion of potential customers dislike virtualization for its lack of support and the complex licensing. To really conquer all market spaces, Microsoft and other software vendors have to completely rethink how they want to license virtual machines.
Considering how virtualization abstracts the concept of processor, how the market is progressing (Intel is even expected to reintroduce HyperThreading in upcoming multi-core CPUs) and the advent of application virtualization solutions, software giants should probably stop binding licenses to physical components and start to consider different paths.
One suggestion is to track physical resource usage and design a licensing plan based on usage, which could also simplify the emerging problem of departments having to account for resources in virtual data centers.
Another much more limited option is to discard once and forever the per-processor licensing model, offering only per-user licenses.
Until that time, all vendors should severely improve their licensing documentation, highlighting how their model applies to the newest scenarios. Customers have to clearly understand which solution would provide the better return on investment when they embrace virtualization.
About the author: Alessandro Perilli, a self-described server virtualization evangelist, launched his influential virtualization.info blog in 2003. He is an IT security and virtualization analyst, book author, conference speaker and corporate trainer. He is a Microsoft Most Valuable Professional for security technologies and the certifications he holds include Certified Information Systems Security Professional; Microsoft Certified Trainer; Microsoft Certified System Engineer with Security competency; CompTIA Linux+; Check Point Certified Security Instructor; Check Point Certified System Expert+; Cisco Certified Network Associate; Citrix Metaframe XP Certified Administrator.