|
|
-
So finally it happened. Hypervisors are (essentially) free. I remember the very first engagement I had with VMware technologies some 8 years ago; that was the ESX 1.1 (beta) time frame: we did a Proof of Concept and closed the deal with a very satisfied customer... While they were very happy about the achievements they have always taken the opportunity to remind me how expensive VMware (i.e. ESX 1.1) was. Well, time goes by I guess and what used to be a large chunk of the project expenditure it is now a piece of (business) commodity. "Business commodity" meaning that hypervisor vendors are no longer going to make money out of it, which is different than being a "technology commodity". Well I guess I will save the "control point concept" for another post: it's a long discussion - interesting though.
Back on track.
I am currently doing some research on virtualization vendors positioning in the x86 space and on July 24th Mike DiPetrillo posted a very interesting thought about the implication of making ESXi (yeah Mike, it's ESXi, no longer ESX 3.5i) free of charge. I suggest you read it carefully, along with all the interesting comments, on line here. It's a long thread but if you are among the 99.99% of x86 customers in the SMB space wondering "should I use VMware or Microsoft technologies to virtualize my datacenter?" I strongly suggest that you go through it. Mike did a great job (well other than getting the official brand name of his flagship product wrong... ;-) sorry Mike, I had to say that) in setting the stage.
I am not going to repeat what's in the post (as I have assumed you read it at this point) but this is what he came out with (in blue pen) in order to virtualize some 30 Windows servers on as few as 3 physical hosts.
Need: Microsoft -- VMware
Basic Consolidation: $3,000 -- FREE
Centralized Management: $3,500 -- $2,995
Basic Advanced Features (Backup and Patching): $7,260 -- $2,995
There have been a number of comments regarding the fact that Mike used additional fee-based products (for <patching> for example) whereas many customers would be fine with free tools such as WSUS (Windows Software Update Services). Many might also argue that you can't buy VMware products without software subscription and support (which I think Mike didn't take into account) whereas you can buy MS products without those. I am not interested in this micro-level details since, at the end of the day, getting to an apple-to-apple comparison is going to be impossible given the fact that both software vendors have offerings that can hardly intersect with each other: it would be like to try to find the face of a sphere... the sphere has many faces... actually an unlimited number.
I am probably one of the most agnostic persons around when it comes to the virtualization software to be used as I don't have any vested interested in any of the parts involved. As long as customers and end-users can get "the most for the cheapest" I am the happiest person on this earth that's why I welcome so much VMware and Microsoft engaging at this level to provide more value at a more reasonable cost.
Having this said there is something in this analysis that I want to challenge (and not necessarily to put either one vendor or the other in a bad light - I want to do that based on my experience and for the sake of customers). Specifically I want to challenge the assumption that High-Availability should be taken out of the picture. I have always advocated that one of the primary reasons for which customers virtualize is for easy HA and DR. I have written about this feeling many times; here and here for example. So I wanted to re-run Mike's number taking into account Windows Server 2008 Enterprise Edition (which includes MS Cluster Server) and VMware VI3 Standard Edition (which includes VMware HA). I am not a master in pricing but I understand from Mike's post that Win 2008 EE is $4,000 so that's the number I am going to re-work with. On the VMware front things start getting a bit cumbersome. The best option (I think - other suggestions?) would be to use the "Standard" Accelerator Kit which is the counterpart of the "Foundation" Mike used. The "Standard" Accelerator Kit comes at $5,995 but it includes VMware Virtual Center Foundation and "only" 4-sockets VI3 Standard licenses (the "Foundation" Accelerator Kit has 6-sockets licenses). So I have to add another $2,995 for the additional 2-sockets VI3 Standard license a-la-carte (yes apparently, by chance, the 2-sockets "VI3 Standard" license comes at the same price of the "VI3 Foundation" Accelerator Kit).
So the new table, which includes High Availability functionalities, would look like this:
Need: Microsoft -- VMware
Basic Consolidation: $12,000 -- FREE -> Win 2008EE x 3 -- ESX 3i
Centralized Management (includes high availability): -> Win 2008EE x 3 + Systems Center VMM Workgroup -- VI3 Std Accelerator Kit + VI3 Std 2-sockets $12,500 -- $8,990
Basic Advanced Features (includes high availability) -> Win 2008EE x 3 + Systems Center Suite Enterprise -- VI3 Std Accelerator Kit + VI3 Std 2-sockets (Backup and Patching): $16,260 -- $8,990
So even if you add the mandatory subscription and support costs to the VMware column they continue to lead (substantially?) in terms of price / features. I want to underline again that someone might argue that some of the fee-based MS features are not strictly needed as the same result can be achieved paying less compared to what's in the table above. I'll leave it to you to work out the micro-details and perhaps you might find out that the MS stack might make more sense to you and your specific situation.
I have also to say however that many people have mentioned that Mike didn't take into account the soon to be released stand-alone Hyper-V version for $28. While it's true that this version can change the dynamics of the first table above, it is my understanding that this specific version will not support Enterprise features such as MS Cluster Server so it cannot be used to alter the pricing dynamics of the second table.
However, what I struggle to fully get is related to the last comment Mike did on the post:
>NOTE: Windows licenses were not calculated into the costs since we assumed that the average SMB customer will continue to use and run their existing Windows Server 2003 installations which they already own the licenses for. >Based on lots of conversations with analysts, press, bloggers, and customers this is a safe guess for the next 1 - 2 years as Windows Server 2008 gets adopted. If you were to calculate in licenses costs then the best license to use >would be Windows Server 2008 Datacenter which allows for unlimited VMs no matter which solution you use. You should then subtract $12,000 $3,000 from the Microsoft column in each example and add $6,000 to BOTH >columns (Microsoft and VMware) to get the cost for early adopters of Windows Server 2008.
And then again in the comments section:
>Good point about OEM licenses. I tried to keep most of the complexities of Microsoft licensing out of this post, but yes, if you have an OEM license then you cannot reassign it to another server unless you bought Software >Assurance for that license within 90-days of original purchase. I will make a note of this in the blog. I will also put on the to-do list to provide some insight into the complexities of Microsoft licensing.
>The OEM licenses could impact the cost model in 2 ways:
>1) If you decided you were going to stick with Windows 2003 for some time to come then you would purchase new Windows 2003 licenses for your VMs. You would still end up purchasing Windows 2008 licenses as well for the >Hyper-V hosts and not for the VMware hosts. The only exception would be if you purchased Software Assurance with the Windows 2008 licenses in which case you get downgrade rights and could run Windows 2003 in your >VMs. All of this gets complex since Software Assurance is only available through certain Microsoft license agreements which are not always present with SMB customers (our target example in this post).
>2) If you decide to go ahead and upgrade to Windows 2008 then the note at the end of the blog post still holds true on the impact to both columns.
>Thanks again for pointing this out. I for one really do hate OEM licenses since they're so restrictive. Cheaper - yes, but restrictive.
Mike is right to assume that most customers would continue to use Windows Server 2003 for some time to come. He is also right that, assuming a complete re-licensing needs to be done, Windows Server Datacenter is the best option given its "unlimited VMs policy". Last but not least he is also right in mentioning that usually these "upgrades" paths for the OEM versions are not available for the SMB customer set.
I think he is missing some specific scenarios and he has some wrong assumptions though . When you license a host with Windows 2008 Datacenter not only you have unlimited virtual machine licenses, but you also have license entitlement for the underline virtualization technology (i.e. Hyper-V / Parent Partition). This means that, if for some reasons (see below) the customer needs to re-license all the 30 Windows instances he is virtualizing, he is going to license everything with Windows 2008 Datacenter which includes both virtual machines and Hyper-V entitlements for the host. Notice that the customer could then install Windows 2003 guests as you have downgrade rights. This is an intriguing scenario because basically you are buying one (Datacenter) license from MS that entitles you to use both the virtualization layer as well as the guests. For the VMware scenario in parallel the Datacenter license is still the one that makes more sense but the problem is that VMware wants his piece of the pie now (in addition to the piece customers have to buy from MS). This makes essentially the MS hypervisor solution REALLY FREE in the comparison of the two technologies.
So assuming to take into account the Guests licensing, in specific situations where you have to re-license them, we are looking at:
Need: Microsoft -- VMware
Basic Consolidation (includes Guests licensing through Windows 2008 Datacenter - 6 sockets x $3,000 each): $18,000 -- 18,000
Centralized Management (includes high availability): $18,500 -- $26,990
Basic Advanced Features (includes high availability) (Backup and Patching): $22,260 -- $26,990
You can also normalize this chart removing the $18,000 price for the Windows Datacenter licenses and the table would end up in listing only the "virtual infrastructure" costs:
Need: Microsoft -- VMware
Basic Consolidation (assumes but does not include Guests licensing through Windows 2008 Datacenter - 6 sockets x $3,000 each): FREE -- FREE
Centralized Management (includes high availability): $500 -- $8,990
Basic Advanced Features (includes high availability) (Backup and Patching): $4,260 -- $8,990
Again, based on my (limited) licensing know-how, these two new tables hold true for:
-
Customers that cannot re-use OEM licenses
-
Customers deploying a new virtual infrastructure, only have older Windows versions (i.e. Windows 200) and want to use newer versions in the guests (i.e. Windows 2003 and Windows 2008)
-
Customers deploying a new infrastructure from scratch
So basically the two statements above made by Mike do not always hold true:
> You would still end up purchasing Windows 2008 licenses as well for the Hyper-V hosts and not for the VMware hosts
> If you decide to go ahead and upgrade to Windows 2008 then the note at the end of the blog post still holds true on the impact to both columns
Assuming my understanding is correct (but I might be missing something) under these assumptions the MS solution stack comes in at a much cheaper price (especially if you account for mandatory VMware subscriptions and support fees). So the first question that needs to be answered is: does this analysis make any sense?
If it does, then the second real question that needs to be answered is... how many customers fall in the 3 scenarios described above that favor the MS licensing model?
How many faces does a sphere have?
Massimo.
|
-
Virtualization is a disruptive technology and we all know that. With this post I want to share with you some scenarios about how server (and storage) virtualization can drastically change the landscape for "small IT shops" (aka SMB's) in the context of High-Availability and Disaster/Recovery. Up until today server "high availability" was not for everyone as it required a complexity and a cost that many IT shops could not sustain. I have already been talking about the change of paradigm that a virtual infrastructure brings in when it comes to make a service highly available. You can read this post for more info.
However that covers a small portion of the bigger picture. Particularly that post assumes that you have a number of physical servers connecting to a central storage repository so that you can restart your VM (i.e. your service) should one physical server fail. Fair enough but this obviously doesn't cover the other important subsystem which is the storage subsystem. In a scenario like this the central storage repository is a so called SPOF (or Single Point Of Failure). If you are a big Bank / Telco organization (or if you have enough money to spend anyway) you can get something decent using Midrange / Enterprise Storage arrays that support all sort of replication features so that you can literally create a fully redundant infrastructure with no SPOF. It must be noticed that while it is true that even Entry level Storage arrays might have no internal SPOF it is common referring to these boxes as a single entity (hence a potential single source of issues). This is even more evident when you think about being able to stretch your virtual infrastructure across two buildings in the same Metropolitan Area Network (such as 3 physical servers in Building A and 3 physical servers in Building B comprising a single cluster): this obviously leaves you with the only choice of putting your single Storage array in either Building A or Building B.
I don't want to get into all sort of discussions regarding how you would define a scenario like this. Someone refers to this as "DR", someone else refers to this as "Campus HA", someone else refers to this as "Continuous Availability". I am actually not interested in formal definitions. I am more interested in the fact that the vast majority of the customers I talk to (be them big Banks, big Telco's or the small SMB IT departments) would like to leverage virtualization technologies to be able to achieve this scenario in a much less complex way (typically a requirement of the big boys that have a very complex distributed IT infrastructure) or in a much less expensive way (typically a requirement of the not-so-big boys that have a tight budget). It is amazing to hear that one of the most appealing reasons for which all customers are virtualizing ... is not for consolidating the servers (sure this is important) but to provide better high availability and DR mechanisms. Virtualization is really a paradigm shift.
I have already said that for the bigs there are (expensive) technologies and products that allow you to achieve that. This is an example of a project I have been working on a few years ago. But where does this leave the "small" shops? I am talking about customers that have from 10 to 15 Windows / Linux servers and that do not have a budget that allows them to intercept Midrange Storage technologies with replication capabilities. These arrays are not enormously expensive (in fact I am assuming that who has more than 15 or 20 servers perhaps has a decent IT budget that allows them to buy these technologies). However IT departments that have up to 10 or 15 virtual instances which, by the way, could be deployed on as few as two 2-socket systems (for redundancy) based on these other assumptions I discussed in a previous post.... might not be keen on buying a Midrange Storage array just for the purpose of being able to replicate and protect the data. Don't get me wrong, the "geeks" working for IT would love to have that kit in their hands, it's the "buyer" within the organization that would question the value for the money.
That's why when I was first introduced to technologies such as those from Lefthand Networks and then Datacore I was intrigued. What these companies do in essence is storage virtualization. They do it differently and the product packaging itself is not identical but essentially, bottom line, they hide the layout of the storage arrays and the way it is presented to the hosts and their OS'es. As I said they have a different approach in how they achieve this.
Lefthand Networks sells SAN "building blocks" that are effectively x86 servers with their own software on-board. This software simply turns those network-connected x86 servers equipped with a certain amount of Direct Access Storage into a highly available and distributed SAN that the computational hosts and their OS'es can access via an iSCSI protocol.
Datacore uses a slightly different philosophy as it is sold as a software package that you would install on a Windows host (typically more Windows hosts for redundancy and high availability reasons). Storage administrators would then give visibility of heterogeneous and distributed storage resources to these hosts, typically via FC but not limited to that, so that the Datacore software could present, using various protocols such as iSCSI and FC, to the hosts and their OS'es, a virtual storage repository.
These two pictures should clarify this brief explanation of the two technologies. 
Obviously this is not intended to be an exhaustive explanation of these vendors' technologies, features and strategies. Make sure you contact them directly should you be interested in knowing more about this.
In a typical scenario as the one I have outlined in the pictures above, separated physical "storage islands" would be aggregated into a single virtual SAN by the Lefthand/Datacore software that in turns provide a robust storage repository to (yet) other physical hosts running your production applications. That is how these products are usually positioned. How all this ties into the HA and DR for the masses I was referring to? Well it turned out that it is possible (and this is how both companies are now marketing their products as well) to install the software logic within virtual machines. Imagine a new innovative deployment scenario where you would create two special purpose virtual machines on two separate virtualized hosts and each virtual machine is associated with a vast amount of locally attached storage. At that point the Lefthand/Datacore software would turn those two VM's (with a bulk of local storage space associated to them) into your virtual SAN that is going to serve, through the iSCSI protocol, the other virtual machines (supporting your own production applications) running on the same two virtualized hosts. Confused? I think a picture is worth 1000 words.
On top of all the functionalities that these software provide the most interesting, in the context of this post, is the ability to mirror the local content of the Storage VM's in order to create an active/active fully redundant iSCSI SAN. As you can depict from the picture above the logical layout is quite different from the physical layout. Let me try to explain: logically the two Storage VM's create the virtual iSCSI SAN. The virtualization layer then maps the LUN's made available by the clustered Storage VM's and use these LUN's to create VMFS volumes to host the production virtual machines to support the business. The logical perspective differs from the physical perspective in the sense that, while logically the virtualization layers connect to an "external" iSCSI SAN and use it as an external service... the actual code that instantiates the virtual iSCSI SAN runs as redundant stand-alone virtual machines on top of the same virtualization layers.
One of the key advantages of such a setup is being able to tolerate the failure of one of the two systems and continue to be able to operate. The following pictures illustrates what happens should either one of the server or an entire building go off-line for some reason.
Since the Storage VM's replicate the local storage associated to them, either one of these entities can fail (be it the Storage VM itself, the virtualization layer, the physical server or the entire building) without affecting the availability of the VMFS volumes created on top of the mirror. This is transparent to the surviving virtualization layer as it could be compared to a failure of a Storage Controller within a redundant FC Storage Server. It is worth noticing that, in case of failure of the physical hosts or failure of the building, VM's can be either manually or automatically restarted on the surviving node depending on the virtualization layer being used and the feature set associated to it.
I am not getting into the details but consider that both these software support Synchronous and Asynchronous replication of the data so that you can even tune your solution based on the distance of the two buildings. In the simplest scenario both buildings are in the same Metropolitan Area Network so you would treat the two servers as if they were installed in the same rack of a single building. On the other hand if your buildings are far apart (or otherwise not LAN-like connected) you can tune it to use Asynchronous replication and build something that is closer to a Disaster/Recovery plan (well I am oversimplifying here but you get the point).
It is also worth noticing that since the Datacore software is an add-on that you (the customer or the integrator) would install on top of Windows, you can use any virtualization layer that allows you to create Microsoft Windows virtual machines making it very flexible in terms of deployment options. Lefthand on the other hand provides the Storage VM as a virtual appliance (thus making it more robust and easy to deploy in my opinion than a Windows add-on like Datacore) that is however, as of today at least, only available for VMware VI3 virtualized platforms.
This is clearly not something that you might want to look at in the context of a medim / big virtual infrastructure deployment where Midrange / Enterprise Storage arrays with their native virtualization and replication techniques offer a great deal in terms of performance, scalability and reliability. I don't want to downplay Lefthand and Datacore but I think there is a positioning that needs to be taken into account when comparing these products with Midrange / Enterprise class Storage arrays features. But in the context of the small IT shops, using the technologies described in this post you can achieve similar features at a small fraction of the costs and it might make sense doing so.
Let's try to do the math. A couple of System x 3650 configured with 2 x Intel Quad-Core processors, 16GB of RAM, "a bunch" of local disks and network adapters might cost around 10.000$ each (list price). This makes a 20.000$ total (list price) for the hardware.
I am not an expert on Lefthand and Datacore pricing (nor I want to become one) but as far as I have seen it would be fair to assume that, in a context and scope like this, the software to enable each Storage VM would cost around 5.000$ (list price). This makes a total of 10.000$ for the virtual SAN with remote replication capabilities.
Then it comes the virtualization layer. Here there are a number of options (both from a vendor perspective as well as from a feature set perspective within the same vendor). Clearly if you want to use MS technologies to enable the virtual infrastructure solution (i.e. Hyper-V with Systems Center Virtual Machine Manager) the cost would be pretty low. On the other hand if you want to use VI3 Enterprise to enable it the costs would be higher (so would be the feature set). Obviously one should also take into account lower costs VMware VI3 alternatives (such as VMware VI3 Foundation) as well as alternative virtualization vendors such as Citrix and VirtualIron. All in all I think it would be fair to assume that one could spend, on average, 5.000$ to enable both physical systems with a virtual infrastructure software (again it might be as low as 0$ or as high as 10.000+$ depending on what you want to achieve).
All numbers we have mentioned (and assumed) are list prices and I will let you do the math on the average discounts you can achieve on each of those items (for example I know Lefthand has some bundle offerings that lower considerably the price). In general it would be fair to assume that, for a "low 2 digit thousands of US dollars" (what a great way to not tell you what I think a potential discount could be) you can get the following:
- A physical Server and Storage infrastructure capable of supporting up to 10 or 15 virtual images
- Integrated Server and Storage high availability and redundancy
- Compatible with all server virtualization enterprise features (live partition mobility / high availability for virtual machines / etc)
- Without the costs associated to a SAN environment
- With acceptable performance and good-enough scalability (in the context of small IT shops)
All this at a fraction of the costs compared to achieving similar characteristics using high end Enterprise class components and products. As I said this is not meant to be for everyone; Midrange / Enterprise Storage Server arrays should continue to be intended as the preferred choice for High Availability and Disaster/Recovery scenarios in many circumstances. This is however a great way for customers with limited budgets to achieve similar levels of features at a fraction of the price. This is not about cannibalizing the Midrange and Enterprise products market, but it is rather making similar level of features available to the masses (masses that would not be able to get the same features otherwise).
In closing this thread I'd like also to point out that virtualization is not, as many still think, (just) the capability to carve a number of software partitions out of a single physical system (aka server consolidation). Virtualization is really a paradigm shift within the data center that allows to re-architect the entire stack (hardware, software, management) in a completely different (and better) way. It allows customers and vendors to look at the typical problems from a completely different angle, thinking out-of-the-box if you will. It allows to solve problems in a way that a few years ago one could not even think it would have been possible.
Massimo.
|
-
Lately, there have been many discussions on the Internet and on various forums regarding the implementation of HA clustering technologies (namely and primarily Microsoft Cluster Server) within virtual machine environments (namely and primarily VMware infrastructures). Many customers are still treating virtual machines as if they were standard Windows servers (or Linux for what that matters) so this does make sense.
However there is a trend in this industry that is shifting typical infrastructure services from the multi-purpose operating systems into the virtual infrastructure. The top of the iceberg of this trend is called Virtual Appliances. While many view Virtual Appliances as a starting point of something big and new I really see them as the natural result (big and new) of this trend that is... turning the hypervisor into a so called Data Center OS. I have discussed this trend in a presentation that I did at VMworld 2007 in San Francisco and that you can access here.
If you stop for a minute and think about what it is happening in this x86 virtualization industry, you'll notice that many infrastructure services that were typically loaded within the standard Windows OS are now being provided at the virtual infrastructure layer. An easy example would be network interface fault tolerance: nowadays in virtual environments you typically configure a virtual switch at the hypervisor level, comprised of a bond of two or more Ethernet adapters and you associate virtual machines to the switch with a single virtual network connection. What you have done in this case is that you have basically delegated the virtual infrastructure of dealing with Ethernet connectivity problems. This is a very basic example and there are many others like this such as storage configuration/redundancy/connectivity.
These two pictures should graphically outline this trend:

(for higher quality pictures please refer to the presentation linked above)
Back on track, one of these infrastructure services that is about to migrate from within the multi-purpose OS where the application runs all the way down into the virtual infrastructure is the High Availability service. In the VMware vocabulary this is called VMware HA and this is a piece of code/intelligence that is part of the VI3 offering and whose purpose is to protect virtual machines from host failures. Basically what happens in this case is that, should a host fail, all virtual machines running on top of that failed host get automatically restarted on surviving nodes being part of the same VMware HA Cluster. However many readers would point out that there are at least a couple of very important architectural differences in how VMware HA compares to Microsoft Cluster Server implemented within virtual machines:
-
In the case of VMware HA there is a single instance of the virtual machine (with the application) to be protected. The VM is being started on a given node of the cluster given the status of the others (availability and resource utilization). Many people still think that the software stack loaded in the virtual machine is a Single Point Of Failure (imagine a Service Pack upgrade that goes wrong for example and you will have an unplanned downtime of the VM and in turn of the application). On the other hand a "virtual" MSCS solution requires two independent Windows nodes (virtual nodes in this case) so that should any problem occur within the software stack of a node it won't affect the availability of the application that can be restarted on the other virtual node.
-
In the case of VMware HA, you are really only monitoring the status of the physical server. Should a physical server go down the virtual machine is restarted on another node of the cluster. This scenario doesn't cover the software stack status within the VM nor, obviously, the application status within the VM (it must be noticed that VI3.5 introduced experimental support for monitoring the status of the OS within the VM via VMware Tools heartbeat check-points). On the other hand in a Microsoft Cluster Server solution you would typically be able to be protected by physical host failures (obviously) and you also would be able to monitor the application status so that a given service can be restarted onto another MSCS node should it fail to start on the "primary" node even if the node has not failed.
This picture should outline the differences of these two approaches:

I guess you can easily depict the philosophical differences between the two approaches. The first one is more traditional and tends to treat virtual machines as we have been treating physical servers in the last 10 years, applying the same practices and technologies. In the second picture, the philosophy is more innovative and tends to treat a VM as a simple object which leverages the new virtual infrastructure capabilities.
We are clearly at an inflection point now where many customers that used to do standard cluster deployments on physical servers (which was the only option to provide high availability) are now arguing how to do that. They now have the choice to either continue to do so in virtual servers as opposed to physical servers (thus applying the same rules, practices and with little disruption as far their IT organization policies are concerned) or turning to a brand new strategy to provide the same (or similar) high availability scenarios (at the cost of heavily changing the established rules and standards). The reason I am saying we are at an inflection point is because I really believe that the second scenario is the future of x86 application deployments, but obviously as we stand today there are things that you cannot technically do or achieve with it. Plus, there is a cultural problem from moving from an established scenario to the other.
The following table tries to summarize advantages / disadvantages of both approaches: Characteristics HA Cluster within the VM HA Cluster at the virtual infrastructure level
Easy Deployment Not True / Can't be achieved True / Can be achieved
SW stack redundancy True / Can be achieved Not True / Can't be achieved
Application Monitoring True / Can be achieved Not True / Can't be achieved
"Guest OS independent" high availability Not True / Can't be achieved True / Can be achieved
Allows to apply traditional practices and IT standards True / Can be achieved Not True / Can't be achieved
Allows to decouple appl functionalities from HA functionalities Not True / Can't be achieved True / Can be achieved
Easy to implement / inherit DR properties Not True / Can't be achieved True / Can be achieved
These are a few of the characteristics many users are currently debating. Again you can depict from the above that delegating this infrastructure service (i.e. HA) to the virtual infrastructure is a better way to implement a data center...at least in my opinion. Assuming proper and effective backup/restore procedures can be implemented for your virtual environments, assuming that you don't need strict application monitoring (or that HA clusters at the virtual infrastructure will improve over time) and assuming an IT organization can adapt easily to new deployment methods and standards... it's obviously where you want to go in the long term.
It is interesting to notice that there are a number of limitations in deploying an MSCS solution in a VMware VI3 environment: one is the fact that the VMDK files corresponding to the C:\ drive of the virtual machine nodes need to reside on a local, non-shared VMFS volume of a given ESX host - which is typically a small partition on the local hard drives that also contains the hypervisor code. On top of this there are a number of other limitations but it suffices to say how bad and not very flexible a Microsoft Cluster Server solution implemented on top of VMware VI3 can turn out to be, with no VMotion of the virtual nodes themselves given the non shared disks.
Another problem associated with the usage of HA software packages within virtual machines is that VMware tends to randomly pull in and pull out support for this at every minor and/or major infrastructure release update. Sometimes I am wondering whether these limitations imposed by VMware are due to technical challenges or to strategic politics from VMware to undermine the minds of those customers that want to keep their traditional practices. In fact this underlines the nature of the VMware strategies which is clearly not only that of introducing a hypervisor between your physical box and your legacy software stacks, practices and standards... their strategy is to literally scramble the entire data center in terms of software stacks, practices and standards. And it's not necessarily a bad thing if you think that these stack, practices and standards are not optimal (as I do).
At this point I also must remind readers that MSCS is an example that might be confusing for the simple fact that this is the very same technology that MS will be using to cope with this new trend. The idea is that, instead of using MSCS within a couple of virtual machines as we described above, they will be using MSCS to act as the High Availability mechanism for Hyper-V similarly to what VMware HA does for ESX. These pictures should clarify the idea:

Last but not least I also should mention that VI3 and MSCS are respectively examples of an implementation of an HA solution at the virtual infrastructure level (VI3) and an example of an HA software package at the virtual machines level (MSCS) that I have been using throughout this document to describe the concept. There are other technologies that can be mapped to the same concept and the list hereafter is an attempt to mention some of these options:
Virtual Infrastructure solutions w/ HA capabilities High Availability Software Packages for setup in Virtual Machines VMware Virtual Infrastructure Microsoft Cluster Server (MSCS)
Microsoft Virtualization (Hyper-V w/ MSCS) Veritas Cluster Server
VirtualIron Extended Enterprise .................. Citrix XenServer (HA module in roadmap)
..................
This oversimplifies a very complex matter; for example one could notice that VCS (Veritas Cluster Server) could be used either within a virtual machine environment (as reported in the table above) or as an alternative to VMware HA at the virtual infrastructure layer - similar to how MSCS can be used either within virtual machines or in conjunction with the Hyper-V parent partition. Interestingly enough, in such a context (i.e. used at the virtual infrastructure layer), VCS is potentially able to monitor application status provided the proper Veritas agents are loaded within the virtual machine guests...although this challenges the benefits of a deployment like this being potentially Guest OS agnostic.
Obviously all this discussion strictly pertains to typical HA scenarios where you have an application that deals with and manipulates data, and for which you need a shared storage solution. In all situations where the application is stateless and high-availability can be achieved load balancing multiple instances of it (a good example is a farm of web servers), then both high-availability and scalability is inherited by the layout of the application deployment and doesn't require any "infrastructure HA assist" (be it at the virtual infrastructure level or within the virtual machine).
In the end my suggestion is that users try to evaluate the pros and cons of the "legacy" option vs. the pros and cons of the "new trend", which leverages virtual infrastructure capabilities so that they can take educated decisions. Emotionally I do like the second option much more because it's.... better. But I perfectly understand many IT organizations have their own problems jumping on the wagon right away. By the way, I am totally for virtualization, but realistically I wouldn't rule out the potential situations of keeping some particularly critical x86 workloads on a physical MSCS cluster if that is required. Some organizations also like the idea of implementing N+1 clusters where you can protect N independent physical servers using a single virtualized host on top of which run N virtual images which are the MSCS nodes counterparts of the physical systems to be protected. While this sounds like an interesting scenario - and it is for some situations - it involves the same supportability and limitation concerns we have discussed above.
As a matter of fact, closing this long post, I have realized that I am ok with everything .... but with using HA software packages within virtual machines running on top of virtual infrastructures.... It's just too complicated, too risky, too cumbersome... too "no way."
Massimo.
|
-
In the last few months I have been struggling to understand what is so different, in terms of mass adoption, between virtualizing server workloads and virtualizing desktop workloads (also known as "VDI" or "Virtual Desktop Infrastructure"). I have been exposed to this phenomenon of x86 virtualization since around 2000 where the idea was as simple as taking a high end server and miniaturizing it into many small virtual servers. Similarly I have been exposed for the last 3 years to the other big use-case for x86 virtualization which is "Desktop Virtualization" and I can tell you that the time it took for the first traditional use-case to take off (through seeding the market with the idea - piloting and proofs of concept - mass adoption) was way shorter than the time it is taking for VDI to take off (going through the same phases above). This doesn't mean that VDI is not taking off but there are no doubts that after 3 years from introduction I have seen so many more production implementation of VMware ESX than I have seen of VDI.
Why is that? Isn't VDI just virtualizing XP rather than Windows Server? Well not quite I would say. Let's dig into some of the details (not in strict order of importance).
- Desktop Virtualization alternatives. While I am focusing this discussion on the VDI concept there are some analysts that, for good reasons, are implying that desktop virtualization is not just VDI (i.e. virtualizing Windows XP and putting it on a server in the back). There are other alternative architectures to "virtualize a desktop" such as Windows Terminal Services, Application Virtualization, OS streaming and many others. To complicate things further these technologies are sometimes complementary to each other and sometimes alternative to each other. So customers are challenged since the beginning of the potential desktop virtualization project with a great deal of input and information that they find hard to understand and digest. In the server space this has never been a great deal since "virtualizing a server" has always had a single meaning that was that of "hardware virtualization" (i.e. getting as many virtual hardware partitions as possible out of a single physical server). So in the server virtualization realm the confusion was far less than the one that is being created nowadays given all the potential architectures at the very different layers of the desktop software stack (and VDI is just one of these different architectures).
- VDI Products complexity. On top of the above complexity there is another one. In fact 8 years ago it was much easier to understand the products you needed to adopt a server virtualization model. If you used to buy 20 physical servers and install 20 Windows instances, now with server virtualization you would buy 2 physical servers, 2 VMware ESX 1.x licenses and install 20 Windows instances. As easy as it is. You couldn't do much differently and it worked great (so why bother?). VMware has since introduced new versions of the software and enriched their value proposition "linearly" with Virtual Center 1.x and eventually with VI3. On the other hand to adopt a desktop virtualization model you have to buy a virtualization platform, a connection broker, and you need to decide which access device you want to use etc etc. For every single layer of the architecture you have multiple implementations which translate into multiple different products that are supposed to do similar things (if you want to know more about the architecture of VDI have a look at this presentation). As a result in the last few years this desktop virtualization market has been very "foaming" with ISV's entering into this space and ISV's buying out other ISV's etc etc. Clearly it is much more difficult right now to understand what do to and which ISV to buy from a VDI solution than it was 8 years ago for a customer interested in entering the server virtualization space.
- Overall cost of the solution. In the desktop space there is a predominant metric that is "cost per seat" that you can hardly find in the server space. Sure customers understand that a server virtualization solution could cost slightly more than a traditional layout of a string of small physical servers but apparently they are more ready to discuss the benefits (in terms of TCO) of a virtualized solution and factor them in into the overall costs. This is especially true when these customers are considering high-availability solutions and disaster recovery that are either very expensive in the standard physical space or not achievable at all. On the other hand the "cost of the desktop" is a very strong metric that most customers are using when discussing the overall costs of a desktop virtualization solution. A couple of days ago I met with a customer that, as part of a very large bid, was buying (branded and good quality) desktops for 233€ (monitor and Windows license included). Needless to say that in a VDI solution which comprises the back end-servers, the virtualization software, the proper Microsoft licenses, the connection broker software, the thin clients and the miscellaneous utilities you might want to use to complement the scenario, the cost per user might be VERY WELL above that 233€. While for a server virtualization scenario the overall acquisition price of the solution can get close to what a customer would pay for a standard physical deployment (or at least within a reasonable range that is off-set by the tremendous advantages), to create a business case for VDI you have to include a detailed TCO analysis to get on pair with a standard desktop deployment. And we all know how difficult it is to "sell" on TCO (especially to desktops buyers).
- Microsoft licensing. Of particular importance is the issue of MS licensing. Historically, customers have always bought Windows PC's and historically these Windows PC's have come with a so called (very cheap) OEM Windows license (that is, when you buy a PC you get a Windows license tied to it). This OEM license CANNOT be used in a VDI scenario so you need to buy brand new licenses. And this is where the "fun" starts. This is a very bad story for customers both from a complexity perspective as well as from a cost perspective. At the time of this writing Windows licensing for virtual desktops is still pretty confusing: "should I buy a retail version of the OS?", "Should I buy the VECD (Vista Enterprise Centrlized Desktop) license under Software Assurance?", "What if I am not a customer with MS Software Assurance?" etc etc. All in all whatever you decide fits best your scenario as a customer, it's going to be more expensive than the cheap OEM Windows license you used to buy tied to your desktops purchase. We all hope MS will make this transition easier for our customers but so far ... not so good.
- End-user Experience. There is a big difference between virtualizing a server and virtualizing a desktop from an end-user perspective. You, as a CIO / Sys Admin, can virtualize a server or even the whole server farm and no one at your company would even notice it. It's just your own decision to do that or not to. In a desktop virtualization scenario, as soon as you start deploying the first thin client you are opening it up to the whole company. Immediately you have exposed your decision to dozens / hundreds / thousands of other individuals that, for good reasons or political reasons, will start to challenge you. Good reasons might be technical limitations that you have to compromise with as of today, limitations for which a thin client can sometimes hardly cope, in terms of local device attachment support / multimedia video performance / flexibility / off-line capabilities etc etc, with a standard desktop deployment. I can assure you that no single "average end-user" would ever realize that their mail system in the back is now running on a vm whereas yesterday it was physical; however even the more "IT-candid end-user" would understand that he / she is using Outlook from a "little box where I cannot even attach my iPOD anymore" as opposed to the PC he / she was used to! And there is when political problems start. On this I have always said that a very happy Sys Admin has a frustrated end-user base and, viceversa, a very frustrated Sys Admin has a happy end-user base. It's a matter of compromising as usual: VDI technology advancements will allow the CIO / Sys Admin to provide the standard business requirements whereas end-users will need to understand that they can't just see their business access device as if it was their home PC.
I think these are some of the major road-blocks for VDI to become really true and start the massive deployment we have seen in the traditional server virtualization use-case. All in all I think that the root of the problems when trying to re-architect the desktop deployments is that, whatever you do, it's basically a "hack". If you think about that for a minute, the WHOLE industry only has one default that is "the end-user will be using a Windows desktop". Whatever you do with any technology that the industry is creating (be it an application, a physical USB device or whatever) to make it work in a different scenario... it is a "hack". We have implemented hacks with Terminal Servers and we are doing the same with VDI and any other technology such as Application Virtualization. As long as there is an industry that creates "stuff" for the PC and there is just a handful of people that try to make the "stuff" work differently in a different scenario ... it will always be an up-hill. I look forward to the day when the industy as a whole will embrace these non-PC deployments in a more structured way than the current "I'll do this assuming the PC and then someone will be able to hack it to make it work for alternative scenarios". I look forward to the day when the average "CIO Joe" that needs to create an IT infrastructure will not only think "I have 1000 users, I have to buy 1000 Windows PC's" but rather ... "I have 1000 users, I need to buy a VDI solution for them".
At that point all these things such as products and architecture complexity, end-user experience, licensing issues etc etc will fall apart... because it has become the "obvious / default" way to give end-users access to IT.
Massimo.
|
-
VMware, at VMworld 2007, announced that next year they will provide an out-of-the-box solution/product for Disaster/Recovery scenarios. It is called Site Recovery Manager (SRM for short) and it is supposed to orchestrate and facilitate system administrators to create a D/R plan for their organizations. It is important not to confuse this product with a "stretched HA cluster" or a "Geocluster" configuration. This is a "red-button" type of product where a human being, with high-level responsibilities within the organization, will assess the situation and, in case, will declare a "disaster" which in turn means that someone will push that red-button and restart the IT organization onto the DR site. This is not usually something that an operator decides at 3AM because he/she can't ping a host or, even worse, something initiated by an automated IT trigger/sensor.
Essentially SRM will be a sort of automated and programmed workflow. This product won't add any cool low-level new technology, it will "just" provide a workflow engine that you can program to execute the very manual steps you would execute today in a disaster scenario. This is a summary of what it should be able to do for you:
-
Integration of storage replication for minidisk synchronous/asynchronous alignments (Production site <-> DR site)
-
Automation of startup sequence / suspend at the remote site of virtual machines (this includes management of QoS / SLA's)
-
Network reconfiguration of virtual machines to comply with the (potentially) new IP schema in the DR site
-
Creation of a "sand-box" environment at the remote site in order to test you DR plan(s)
In case a disaster strikes, once you push that famous red-button described above, SRM will activate the mirrored LUN's at the remote site, it will restart the virtual machines on the DR site based on the programmed sequence and it will adjust (optionally) the IP settings of the vm's to fit into the new network schema (if it is different). Additionally SRM will allow you to "play" the plan on a regular basis for test purposes creating a snapshot of the production vm's and activating them in a sort of "network sand-box". I have over-simplified here a bunch of very complex activities.
Believe it or not these are two charts I have been presenting to my customers since 2002/2003 (you can tell it from the Windows 2000 virtual machine and the good old xSeries 440 and Shark pictures) to describe a sample DR architecture.
%20good%20for%201.jpg)
They seem pretty similar to what VMware is showing today for SRM. And in fact they are similar, simply because, as I said, SRM is just something that adds up a clever / programmed workflow to automate what we used to do manually in 2003 (up until today actually).
This sounds cool (and I can tell you it is cool). However I have been working with a few customers recently to discuss DR plans for their VMware deployments; a few points got my attention and made me think: is SRM going to be a good fit for these customers and specifically for their production / DR requirements?
I must say upfront that I am not an expert on this product (which is still currently in pre-beta as far as know) and I doubt that there are any experts out there at the moment (other than its Product Managers and the developers working on it). All I know is from presentations I have seen on the technology and a few informal discussions with VMware people.
I am currently talking to some enterprise customers looking for a holistic DR plan for their infrastructure where VI3 plays a big role but it is not the only platform that needs to <play the game>. Most of these customers have a large VI3 deployment which is just a tree in a forest comprised of other platforms such as the IBM Mainframe and Unix based platforms (IBM AIX, HP-UX, Sun Solaris etc) and native Linux / Windows x86 servers. What these customers are telling me is that they do not want a DR plan for VMware, a DR plan for the Mainframe, a DR plan for the Unix boxes and a DR plan for Windows and Linux physical boxes. They possibly want a DR plan... period.
This is not simply because they want a single consistent process to kick everything at once. This is mostly due to some multiplatform requirements they have and they need to cope with. Let's go through some of them and touch the points where SRM might (possibly) fall short... at least as far as I can read from the documentation.
-
One of the constraints these customers have is the following. As soon as a disaster is declared they need to switch consistently everything onto the DR site. This practically means that, for the disk subsystem configuration, they need to stop the whole synchronization link (for all platforms) and reactivate all LUN's on the DR site at once. They can't afford to have each platform implement a different mechanism and triggers to reactivate LUN's on the remote site. They want someone/something to do this (1) at the very same point in time and (2) for the whole IT cross-platform environment. Having each platform do this "on their own" is probably more cumbersome to manage and could possibly lead to potential data inconsistencies. Reading through the SRM documentation it seems that storage integration is a key component of what it does as a product. So the question I have right now is... will SRM be able to "run through the plan" assuming the storage replica has already been managed (reactivated etc) by another "big-brother" above it? Or will it require to deal with everything end-to-end?
-
Assuming the point above can be managed somehow, one of the other roadblocks I see is the multi-platform dependencies. With these complex IT environments nowadays a given "IT service" could be provided by multiple software components possibly running on heterogeneous hardware platforms (typical example would be the usual 3-tier web/appl/db architecture). It might very well be that, for some enterprise customers, there are inter-platform dependencies so that in order to activate a given "service" an infrastructure application running on a physical x86-Linux server needs to start first, then a Unix database needs to be turned on and subsequently another application running in a Windows virtual machine can start. This is just a mere example and the situation can become more and more complex, especially as the server population and the number of services to be reactivated increase. I do understand that within SRM you can create sort of check-points where you stop the "plan-run" so that external events can occur but in a complex situation this might not be easy to manage as you need to create so many break points that they invalidate the whole concept of having a single red-button that will work through the entire plan. At first look it seems to me that SRM has been designed to be a very compelling VMware-centric workflow engine even though in a complex multi-platform environment being too much singleplatform-centric has never proven to be a good thing. I am pretty sure that SRM is going to be a life-saver for potential VMware-only shops (some SMB accounts?) or for those that have a simple multi-platform deployment but...is it going to be a good fit for many complex enterprise multi-platform scenarios where a higher level of orchestration might be required?
There would be other "potential weaknesses" that one could point out looking at the SRM ver 1 specifications (i.e. missing capability to monitor the actual application status within the virtual machines as triggers for the recovery plans) but these would be more enrichments/enhancements of a technology that is supposed to be already useful at day 0. The two points outlined above however are more "design considerations" that might result in a difficult fit of the product for some enterprise accounts. At least those I have been talking to.
Having this said I am sure VMware has done a diligent analysis when thinking about the specifications so it might very well be that these have been taken into account already. All in all it seems to be a promising technology and certainly a great step forward for the VMware business (and those of their customers).
Massimo.
|
-
Hardware virtualization these days is a hot topic and we all know that. There are many customers looking into it for the first time and one of the problems they are facing right now is how they are going to size their new virtual infrastructure. Lately I have received lots of requests from many people in order to help them project the hardware investments (in terms of physical servers) that they need to jump onto the virtualization band wagon. In this post I'd like to try to provide you with a very quick and dirty method to do that.
Consider that there are many alternatives to get to a "decent and professional" technical result: you can either hire a consultant for a performance analysis of your current physical infrastructure and have him/her come out with the required hardware infrastructure to support your workload or you can do that on your own with professional tools available in the market (consultants can also leverage these tools and yet provide additional value). These are the best alternatives if you want to come out with a "professional" output that could help you to better present your internal hardware purchase request; please keep this in mind throughout the document. These approaches however could have a few drawbacks:
- They are time consuming. No matter what, it takes time to gather the data and analyze them to come out with a proper sizing (professional tools can help a lot here)
- They are expensive. If you want to use these professional tools and/or consultants to do this, it will cost you some dollars/euros to come out with that magic number.
There is no free lunch. The more professional you want to go... the more expensive it gets.
Having this said I'd like to offer you a "non-professional way out" so to speak. But before we get into the details of my methodology (ITIL practitioners might want to kill me for calling it a methodology) I want to set the stage for it. My sizing suggestions are going to be somewhat weak if you don't take into account the following concepts:
- Taking a "snapshot" of a physical environments is certainly time consuming but also difficult to achieve. By definition x86 server farms are very dynamic in nature so it could happen, especially for big deployments, that as soon as you are done with accounting the last server in your study, the whole picture has changed (sometimes dramatically) with new servers being introduced and old servers being removed. It's like taking a picture of 20 kids playing in a green field... you can be 100% sure that two snapshots are never going to be the same.
- Sometimes the performance effects that virtualization introduces are not predictable. There have been circumstances where a given application that was consuming very little resources on a physical system started to drag lots of CPU cycles once virtualized for no particular reasons. It is not so easy to develop an algorithm that will take as an input the physical resource utilization and translate them into virtual resources utilization simply because the effects of this thin layer are still very unpredictable in some cases.
- Another thing to keep in mind is that over-provisioning of hardware resources might turn to be cheaper than buying consultants and/or tools to calculate in a more professional way the exact size of the resources you need. The idea here is that if you take an educated (and conservative) guess on the number of systems and their configurations that you would require to support your own server farm (and you add a certain % of resources for contingency just in case) the total amount of money that will be spent on the infrastructure is (likely) to be less than what you would pay for a proper sizing consultancy + a more precise sizing of the infrastructure. Am I suggesting consultants are a waste of money? Not at all. They would provide you with a very professional study report that you can bring to your management for the budget approval of new servers and new infrastructure software.
- I have provided myself quick and dirty suggestions to customers and IBM business partners where I have taken educated guesses on the sizing of a target Virtual Infrastructure and where a proper professional study report was not strictly required. And in those situations, back to the over-provisioning discussed above, I have never come across a customer that was not happy because his/her systems were only used at 45% and not properly sized to run at 65/70% of resources utilization (especially in those circumstances where companies had to expand and could put those spare resources at good use in a short period of time).
- How much would you want to stress your physical systems anyway? Is 65/70% of CPU resource utilization a reasonable target number before "moving to the next" box? Or is 50% a better number? Or can you push it close to 90/95%? Also what are the effects of response time of applications running in virtual machines when the resource utilization of the host goes up? This CPU-centric measure of course assumes that you have enough/balanced memory in your system (you will never get to 65% of CPU utilization on a 4 socket systems with just 4GB of memory for example). These are however road-blocks during your professional studies: even if you take into account all the details regarding the actual resource utilization of your physical systems there is no magic rule at this point at least (and that I am aware of) that will be able to provide you with a definite answer on the target resource utilization for a given virtualized host before you start to see degraded performance.
- Most of the time one should concentrate around CPU and Memory configurations for sizing hosts that support virtual machines. This is not because other subsystems are not important obviously but sizing a storage subsystem is a complete other matter and certainly out of the scope of this post. By the way since a virtual infrastructure allows you to decouple physical computational resources (i.e. the servers) from the virtual machines hard drives (i.e. the centralized storage) you can size the two components separately. Sizing the storage will need to take into account things like overall space required, proper raid levels and size of the logical units (but as I said this discussion is not within the scope of this post). Typically two standard HBA's in each of the servers comprising the virtual infrastructure have enough bandwidth to support the traffic to and from the SAN (no matter what the sizing of the centralized storage has been). Similarly for the NIC's it shouldn't be a problem given the fact that most of the time the number of NIC's in a given system is a function of the complexity of the networks you need to connect your hosts to rather than a performance sizing exercise. That's the reason for which the methodology below will focus on CPU and Memory sizing: once you have determined the # of CPU's and total amount of RAM to be used you can stick with two SAN HBA's per server and as many network connections you need (as I said the choice of the network subsystem configuration is more related to the virtual infrastructure architectural design rather than a pure sizing discussion).
At this point you might consider this a weak argument and certainly not a very precise study on how to properly size your servers to support your VMware project. And that is exactly what it is: an educated guess based on "not actually measured data". So what is this all about? It is very simple and straight forward. Again, not very professional, but easy, quick and most of the time close to what a tool or a diligent study would tell you in a professional report.
So for those people that do not have time and money to get on the "professional band wagon" my suggestion is this: instead of starting from an actual measurement of your physical servers and then analyze your data to "engineer" a proper sizing, why not taking the other way around. Why not leveraging industry "rules of thumbs" reverse-engineering what other customers have already experienced world-wide and apply this to your own scenario? We are talking about two very simple and straightforward data-points here:
- Rule of thumb #1: Every brand new Intel/AMD core (or pCPU from now on) can support on average between 3 to 5 virtual CPU's (or vCPU from now on).
- Rule of thumb #2: Per every brand new Intel/AMD core configured you should have between 2 and 4 GB of RAM to obtain a "balanced system".
That's pretty much it. Most VMware customers using VI3 in production world-wide will probably tell you that, no matter how they got to their setup (i.e. through a pilot, an educated guess, a consultancy, a tool analysis) they will likely fall into the rules of thumbs above: they are all supporting 3 to 5 vCPU per physical core and their servers have between 2 and 4 GB or physical memory installed per physical core. Consider that the 3-5 is an average. I know customers in extreme situations that have 2 vCPU's per core and others that have 8 vCPU per core. 3 to 5 is pretty conservative and, unless you are in such an extreme situation, the worst that could happen is that you are over-provisioning your new server farm (see above).
So why not getting straight into an example which I am sure will clarify the whole thing. Say you have for example a physical server farm comprised of 60 physical servers. You are going to virtualize 55 of these 60 (this can be for multiple reasons). Of these 55 servers, 45 are going to be 1 vCPU virtual machines (this can be either because they were already 1 pCPU servers or because they were SMP servers but the resource utilization is so low that you can afford to migrate them into a 1 vCPU sand-box). 10 of the 55 are going to be 2 vCPU virtual machines.
So let's do some math. The total amount of vCPU's that you are going to activate is 45 x 1 vCPU + 10 x 2 vCPU = 45 vCPU + 20 vCPU = 65 vCPU's
Let's now try to see how many cores you need to support this workload applying the first rule of thumb: 65 vCPU / 3 = 22 cores (rounded). Consider that I wanted to be even more conservative and based on the generic "3 to 5 vCPU per core" I wanted to take the more conservative 3 vCPU per core. If I wanted to be more aggressive I would have used 5 vCPU per core so the math would have been 65 vCPU / 5 = 13 cores. This might be possible but we want to be conservative in such an "educated guess" so I would stick on the 22 cores.
Now, given that quad-core CPU's are widely available, we will calculate the number of actual "CPU packages" that we need to support this virtual infrastructure: 22 cores / 4 cores = 6 CPU packages (rounded). In terms of memory we would need 22 cores * 4GB = 88GB of memory. Again here we have taken a very conservative approach using 4GB per core Vs 2GB per core (see above rule of thumb #2).
So in the end you can assume that in order to support your new 55 virtual servers above you need 6 CPU packages with a total of (roughly) 88GB of memory. Mapping this exercise to actual physical systems is not that difficult: most likely you might want to use 3 x dual-socket rack based systems or blade systems with 2 x quad-core CPU's and around 32GB of memory.
A word of caution should be mentioned for the memory configuration. This methodology requires a bit of "business sense" and the numbers should not be treated as a given; for example due to high memory costs it might be even possible (and cheaper) to buy 4 x dual-socket rack / blade systems with 24GB or even 16GB in each. 16GB per each of the 4 systems is 64GB of memory which is anyway certainly above the original thought if we were to use a slightly more aggressive formula with 2GB of memory per core (22 cores * 2 GB = 44GB).
Another point of attention is the CPU "sku" (or model) to be used. There is typically a wide range of processor models within a given family (for example within the Intel 53xx family or the Intel 73xx family). There is usually also a big price fluctuation between the low(est)-end model and the high(est)-end model within the same family. Given the nature of this methodology it would be difficult to suggest the right model to be used for a specific scenario but a good business/technical practice would be to use the "n-1" or "n-2" models with "n" being the high-end sku. Usually the high-end model is optimal for "raw performance" while the n-1 and n-2 sku's are optimal for "price/performance" metrics.
Again it needs to be stressed that this is a high-level educated guess on how much computational power you would need to run your projected virtual servers. As I said at the beginning this methodology does NOT overlap with a more professional approach. Having this said however the same business sense should be used anyway when interpreting suggestions gathered from professional IT tools or consultants that might or might not have a deep understanding of the x86 hardware market dynamics (in terms of pricing).
Two more things before we close this topic.
You might want to consider having an additional "building block" (i.e. server) in case one of the systems that have been sized accordingly to the methodology fails. So in the example above, assuming to stick with the 3 x dual-socket with 32GB of memory, you might want to have a 4th server so that at any point in time you will always have at least 3 of them running even in the case one of them goes off-line. This is not mandatory but you need to consider that you would be running with fewer resources in case that happens.
The other thing worth mentioning is the fact that, as the number of the physical servers to be virtualized grows, the number of CPU packages and total amount of memory grow with it. It wouldn't be uncommon to require hundreds of CPU packages and TB of memory for a large scale project. If that is the case than another decision point is whether you want to scale out your new virtual infrastructure (i.e. with 2-socket rack / blades) or scale up (i.e. with 4-socket and above high-end systems). This is a pretty old document that I wrote on the subject that might help you with that decision. As I said it's a bit old but most of the considerations still apply.
And with this I think I am done. I just want to wrap up stressing again on the fact that:
- this is far from being a professional approach (I know it very well)
- yet it's a quick and dirty methodology that will get you "there" anyway.
Long live the sizing tools. Long live the sizing consultants.
Massimo.
|
-
Last week I came across a hardware configuration requested ad-hoc by a customer to support their VMware VI3 setup. The hardware, an IBM System x 3950 M2 4-way (I know it's not yet generally available at the date), was configured with as many as 5 quad-port 10/100/1000 Ethernet adapters which in total would account for 5 x 4 Ethernet ports + the 2 on-board NIC's. The grand total was 22 Gigabit Ethernet ports per physical server. I thought: "there must be something wrong here".
I must admit that this is a customer I haven't worked with (closely) so I don't know where this number is exactly coming from even though I can imagine that this is due to the typical practice of physically segmenting every specific network service in a VMware VI3 environment. If you start for example to dedicate a physical interface to the Service Console, one to VMotion, one for iSCSI / NFS, one for the dedicated Backup network, one for each of the production networks and you multiply everything by 2 (for redundancy reasons) you easily get to a double digit number of network adapters even for the most basic setup. Consider that this is not a technical limitation since there are a number of technologies (such as VLANs and VMware Port Groups) that could allow you to logically segment all networks above. In the final analysis it is typically a design decision based on best practices and customer's internal policies/politics. I don't want to get into the design principles now but on average what happens is that the bigger the scope of the project is (that is... the bigger the customer is) the more stringent these policies/politics are. So it's not uncommon to see many Small and Medium Business customers running with fewer adapters and Enterprise customers running with many more NICs (all the way to 22!).
No matter what your opinion is on the topic (in terms of how to properly design a VI3 network layout) but I am sure you'll agree with me that the requirement for a high number of network adapters is primarily due to segmentation issues rather than raw performance issues. Let me put it in another way: if you need to have 22 NIC's configured in your host it is not (usually) because you need 22 Gbit/second of (nominal) bandwidth out of your 4-way server. Most likely it is because you need to segment your network layout in order to have 22 x RJ45 physical copper ports to plug somewhere. And by the way you could probably do with 10/100 Mbit/sec adapters but that is neither "cool" nor "practical". And if you instead need that many ports for raw performance issues... then you should triple-think if you want to do that on top of a hypervisor these days since it's going to add so much overhead that it's going to be like driving a 22 cylinders Ferrari through Manhattan: the bottleneck is not going to be in the number of cylinders!
Having this said 22 NIC's is a bit of an extreme number. Usually the number of "suggested" Ethernet ports might vary between 4-6 and 12-14. For those of you that do not have a solid background on the matter the layout would look something like this:

As you could depict the number of network connections adds up complexity to the physical design of the cluster and the datacenter. Consider also that the layout in the picture above does not even take into account redundancy so, even though a bit of optimization can be achieved, you should multiply these connections by a factor of two in general. This is how and why you can easily require 6 or 8 or 10 Ethernet connections per each virtualized host. As you can imagine this is not a "bandwidth" problem.
And this reminds me of a panel I attended at VMworld regarding the future of I/O technologies which turned immediately into a one hour debate regarding "will the future of I/O be 10Gbit Ethernet or will it be Infiniband?". That was an interesting session. I am not going to talk in details about what Infiniband is but in a nutshell it is a technology that allows you to collapse on a single transport media both Ethernet and fibre channel protocols. Its other major characteristics are:
- high bandwidth
- low latency
- "I/O virtualization"
It sounds good at first but one big drawback of this technology is that it would require a complete new cabling and datacenter architecture (i.e. switches etc etc) and for those customers that have heavily invested in Ethernet and Fibre Channel architectures (and know-how) this is not a viable option.
Here the discussion might become very complex as people working on Ethernet technology would argue that Ethernet might be considered the future base transport for both storage and network (i.e. with iSCSI) whereas Infiniband people would argue instead that it is Infiniband that has been designed from the ground up to be the Datacenter interconnect technology etc etc. I want however to keep this discussion very simple and only focus on the current "network" problem for most of the customers using or approaching virtualization technologies that require a certain number (typically high) of network interfaces.
I must say upfront that I have not any vested interest in supporting one technology over the other but I think that during that VMworld session the prominent "10 Gbit Ethernet" gurus took the problem from a wrong perspective: "10 Gbit Ethernet is 10 times faster than 1 Gbit Ethernet so this means less cable and less complexity". If that is what the technology has to offer then I don't think this is going to solve our problems because in a couple of years I would be using 22 (or whatever the number is) x 10 Gbit adapters in a 4-socket system ... just because at that point 22 x 1Gb adapters will be either no longer "cool" nor "practical". Remember it is not (usually) a bandwidth problem but rather a physical segmentation issue. Which brings me to a few aspects of Infiniband that the Infiniband gurus did not leverage too much, in my opinion, during that panel and that are going to make this technology (potentially) more appealing as it doesn't just use brute performance force to provide added value. There are two major points that are worth considering in this discussion: the first is that VMware is supposedly going to support Infiniband technologies in the upcoming VI3.5 due in a few weeks/months (this is no longer a secret). The second important aspect to take into account is the fact that Infiniband technology can be "bridged" into legacy datacenter I/O architectures such as standard Ethernet and Fibre Channel devices. No one would want to rip and replace its datacenter network infrastructure with a brand new technology when Ethernet is doing very well at what it is supposed to do. The problem is not Ethernet per se; the problem is that, because of the scenarios we are implementing we need so many Ethernet NIC's inside a single server that this technology alone is becoming not practical. Assuming you have a VI3 datacenter with as many as 20 ESX nodes and each of these nodes have, say for example, 12 Ethernet NICs... wouldn't it be cool to "centralize" this complexity of 12 NIC's into a sort of concentrator and allow the 20 nodes to talk to each other in a much more simplified and efficient way (yet allowing them to talk to the legacy network)? Well this scenario is possible using Infiniband bridges that connect the Infiniband (IB) network to the legacy network. Confused? I can imagine... but a picture should explain this much better:

Basically, installing a single Infiniband (IB) host adapter into each server, you can create a number of "virtual ports" that would map into the IB switches and in turns into the IB-Bridges to connect to your legacy Ethernet infrastructure. If you have to have 22 x RJ45 Ethernet cables because your internal policies / politics require you to connect to physically segmented networks.... that's fine, you can do that, but instead of duplicating 22 x RJ45 Ethernet NIC's per each server you have centralized that onto the IB-Bridge device. It goes without saying that this technology allows you to "expose" the same networks you plug into the IB-Bridges all the way into the ESX Servers using a mix of virtual IB Ethernet adapters and VMware Port Groups. After all what you want to do is:
- Creating something that is transparent to and compliant with your network policies / politics
- Continuing to use your VI3 hosts as if they had the typical 8, 10 or 12 NICs connected to them (in terms of network visibility)
- Yet getting rid of these physical 8, 10 or 12 NICs per each server
I was surprised that the discussion in that panel was more geared towards raw performance rather than other features and scenarios like this because I really think that, from a pure theoretical perspective, Infiniband would have more to say than 10Gbit Ethernet specifically for relatively big VI3 deployments. It's also interesting to notice that technically Infiniband allows you to carry Fibre Channel traffic too so, without adding any new adapter on the server, you can add a Fibre Channel IB-Bridge to the picture and let the ESX hosts connect transparently to legacy FC Storage Servers through the same IB host adapter.
Having this said I have learned across the years that it's not always the best technology and solution to win so chances are that we will never see the massive adoption of IB technologies (and its partitioning/virtualization features) that will make it a "business as usual" type of technology for the "average Joe administrator".
Time will tell.
Massimo.
|
-
"I need to setup a VI3 solution. Which CPU should I choose from a performance perspective? Intel or AMD?". I have heard this ad nauseam. If I was to get one single cent for every thread discussion I have seen on the net regarding the matter... I would be a billionaire. I have my opinion on the matter and I want to share it with you with this post.
Background
Intel and AMD are the two leading providers of x86 processors respectively with the Xeon brand and the Opteron brand (in the server space). This is not an introduction to what they do (Wikipedia might be your place if you are looking for that). At the time of this writing it must be noticed that Intel has introduced quad-core CPU support some 12 months ago more or less for the Xeon 5xxx family (previously Xeon DP for dual processor systems) and they have just announced quad-core CPU support for the Xeon 7xxx family (previously Xeon MP for multi processor systems). AMD has only been shipping dual-core CPU's so far and they have too just announced quad-core support across all their Opteron families (which includes 2P and 4P+ systems). So we will assume, throughout the discussion below, that they both provide quad-core CPU technologies.
Straight to the point, Xeons and Opterons have very radically different architecture implementations: Xeon has historically relied on the concept of the "Front Side Bus" where the sockets connect, through a bus, to the external memory controller. This picture should clarify the concept:

This architecture is referred to as a UMA architecture or Uniform Memory Access in the sense that each socket can get to any memory location in a uniform way (in terms of latency primarily). Consider that the latest chipsets now provide dedicated connections to each socket (as opposed to the shared connection that has been summarized in the picture), however it must be noticed that now 4 cores share the same socket thus increasing the level of contention.
On the other hand the Opteron processor has a very different architecture which is based on the concept of an integrated memory controller so that each socket (and memory controller) connects to the other sockets (and memory controllers) by means of a direct Hypertransport. Isn't it "cool"? Look at the picture below.

This architecture is referred to as a NUMA architecture or Non Uniform Memory Access meaning that, depending on where the data in memory is, a given CPU core could have a different latency to get to it. For example if the data that a CPU core on a given socket needs to access lives on a piece of memory directly connected to the integrated memory controller, access to it will be ideally very fast; if the data lives on a remote memory bank (i.e. one connected to the integrated memory controller of another socket) memory access will be slower.
You can imagine the memory access latency of a UMA system to be somewhat in the middle between the local memory access and the remote memory access of a NUMA system.
These are the facts. On top of this high level differences there are other important differences in the way Intel and AMD has implemented their solution. For example Intel has always been forced to use lately high capacity (dedicated and shared) caches among the cores to overcome the Front Side Bus contention inefficiencies. On the other hand the AMD architecture has not historically required high capacity caches due to their design to achieve comparable performance results.
How all this affects VMware ESX performance? Not too much in my opinion but more importantly not at the level for which you should bother. Let's see why.
Should I bother? I don't think so
My opinion, and my first rule of thumb, is... "number of cores being equal, if you spend more than 5 minutes worrying about these details you are basically wasting your time". This is not because raw performance is not important but simply because these guys are pushing what you can get out of the silicon to the limits (no matter what the architecture is) and it is very difficult to determine which one is faster over the other nowadays. There are market niches where AMD is still king of the hill (particularly those HPC memory intensive / floating point type of applications - sorry not an expert on the matter) but in general we are talking about commercial workloads running on top of a virtualization software layer which introduces a very unknown effect on performance.
Which leads me to my rule of thumb #2 that is... "if you meet/hear someone with a very specific idea of AMD being definitely better than Intel in a VMware environment or Intel being definitely better than AMD, disregard his/her opinions". Virtualization has radically changed the way we build our IT and you need to understand that all x86 server hardware has been studied and developed with the simple paradigm of 1server-1OS-1Application in mind. Every single piece of the various subsystems (cache levels etc etc) has been tuned to achieve the maximum performance, over the last few years, for that legacy context. When you scramble all that with the new paradigm that is 1server-1hypervisor-nOSs-nApplications you are basically using a hardware platform (including the CPU) that has been tuned for the last decade to do something else. There are a very small set of people in this industry (I would say perhaps 30 or 40 and they typically work for CPU vendors, systems vendors and virtualization software vendors) that are working day and night to understand the effects that virtualization is having on the current generation of hw systems. And quite frankly the most extreme comment I have heard from them was a "for this particular workload running in a virtual machine, we have noticed that <put your processor of choice> has a slight lead over <the other one>". I have never heard one of them stating "Intel is definitely better than AMD" or "AMD is definitely better than Intel". So my rule of thumb #2 could also be read as "if you are not talking to one of these 30 - 40 guys .... don't waste your time".
Without getting into the problem of religious wars which I think are pretty ridiculous, the problem with people claiming very definitive statements of one being better than the other is that they are convinced of what they are saying. Most likely they have both technologies running in-house and based on their limited experience (not limited time wise - but limited projects-wise) they claim that "based on what they have seen" A is better than B. The problem with this is that it is ENORMOUSLY difficult to run a benchmark that allows an apple to apple comparison between two different systems to determine which one is the best. There are dozens (perhaps hundreds) of variables in such field experiences / benchmarks that are just not valid scientific method to valuate such a complex matter. And I don't even want to talk about people that benchmark their 4-socket enterprise servers running a file copy or using SiSoft Sandra (which would be like benchmarking the speed limit of a Ferrari with the test taking place in Milan downtown at 8am ... what would you expect? A Fiat could turn out to be faster than a Ferrari given this variable). I want to talk about subdle variables that might lead you to think something that is not real in facts. A good (real) example would be a customer of mine complaining about a slow application running within a vm. He was complaining about the fact that the batch job running inside a vm would take twice the time to complete compared to the same job running on a similarly spec'ed physical system. It turned out that running the job at different points in time during the day provided (very) different results. This was nailed down to be an environmental problem (such as SAN and network utilization at different hours) but let me tell you: 99% of the people testing an AMD based system at 8am in the morning with this batch (elapsed time: 2 hours) and an Intel based system (same config, same everything....) at 11am (elapsed time: 3 hours) would definitely point their browser onto the VMware forum with a nice post that says "I know for sure that an AMD system is 50% faster than an Intel based system". Missing the point.
However I am not saying that both AMD and Intel are equal performance-wise. What I am saying is that:
- We know so little about the effects that virtualization is posing on the hardware (we are just scratching the surface now of these implications)
- Both Intel and AMD are pushing the silicon to the extreme of laws of physics
- Both Intel and AMD are leapfrogging each other every 6 months
... that to me it is a waste of time discussing which one is better than the other. What you need to keep in mind is that they are damn good pieces of technology and you can't go wrong with either one or the other.
This leads me to the "IT artists" which is the extreme, in my opinion, of these "home-made experts". The IT artists are those that argue AMD being better than Intel because of its "native quad-core design". As an IT guy I am interested in three things CPU-wise:
- Absolute performance
- Price
- Power consumption
Quite frankly how AMD or Intel is giving me the above... is a technical detail I am not interested in. The IT artists however tend to articulate that AMD has no FSB and the way Intel can keep up in terms of performance is using big caches. This is very true but the real point is: as long as Intel is giving me that big cache at a fraction of the costs AMD would need to charge me for... should I care? I don't work for the fashion business so I am not interested in how "elegant" the AMD design is Vs the "cumbersome" Intel design. What I want is highest performance, at the lowest price, at the lowest power consumption. Period. I am not bashing AMD here to promote Intel. I think AMD is doing wonderful things to make this x86 platform progress as I tried to point out here but the problem is that it seems that "fashion" is easier to sell and market than the "real" stuff.
And before you get me wrong I am not saying that an integrated memory controller is not a smart choice (Intel will get there anyway) and certainly those 30 - 40 people above could entertain us some 2 days talking about the performance implications of having a FSB Vs an integrated memory controller. But they are not IT artists, they start from the layout to articulate from a scientific perspective why and how it affects performance. IT artists just look at the layout and say "the layout is cool so it must be better".
Rule of thumb #3 is "when you meet an IT artist, don't pay too much attention to what she/he says".
Conclusions
I like to close with an analogy here. Think at the next purchase of hardware as a journey from Milan to New York. Where the vendor you are buying from being the airline, the aircraft you are flying with being the system/server and the engines of the aircraft being the CPU's.
So my question is... when you need to buy a ticket... do you start from which engine provides the best performance to search then for aircrafts that use that engine to determine which airlines use those aircrafts... and you buy a ticket from them? Well... no offense but if you do, I think you need a doctor.
When I buy a ticket I care more about the airline that provides me the best service (at the right price obviously). I want to buy a ticket from an airline that appreciates my business, that is there to support me if I need it, that is able to make my life easier and my journey better if I go with them. This includes having chosen the right aircraft for that journey for my comfort. There might be instances however where, even a good airline, is using obsolete and odd aircrafts and, although they are alright and supportive as an organization, you might want to fly with another company just because they have better aircrafts. What I am pretty sure of though is that if the airline suites your need and they are using good and comfortable aircrafts that meet your standards... there is no way you don't want to fly with those just because you think they are not using the "coolest" engines. After all, assuming you can get to destination 20 minutes in advance with the cool engines, your journey might be a nightmare anyway (especially if your take-off gets delayed by 4 hours ... what are those 20 minutes going to buy you in the end?)
What I am trying to say here is that when you decide to buy a new server from a system vendor you should first look at the commitment that this system vendor has with regards to your business (that is virtualizing your system). A good system design is of course important and needs to meet your standards and requirements. However good management tools, an understanding of what your objective is and the capability to complement a hardware sale with the know-how to implement what you need are other important characteristics along with a vision on where this industry is going so that the vendor can help you take the right decisions. A vendor or partner that you trust basically.
Such systems vendors have done their diligent homework to understand what CPU to use in any given system and you should trust their choice (like you trust Airbus or Boeing for having chosen a specific engine for a specific aircraft). After all you need to remember that what a system vendor wants to do is to sell you something that performs well at the lowest cost and lowest power consumption. In the final analysis they want happy customers otherwise customers will not come back.
Don't waste your time on the engines: it's a detail of a much bigger picture (and the detail right now is not even important given that the two options are excellent). Look at the forest not at the tree. When booking a journey, ask yourself which frequent flyer card you should apply to ... not which engine is faster.
Massimo.
|
-
A few days ago Microsoft released Release Candidate 0 for Windows Server 2008. Apparently, in a last minute rush before the final RC0 build was "cooked", they wanted to give the industry a taste of how Windows Server Virtualization (aka Viridian) will look like. I took the opportunity to get the build and give it a try in my lab. This is not going to be a detailed step-by-step guide on how to install Viridian nor a complete analysis of its functionalities (it's still in pre-beta so it wouldn't even make much sense). It's really a "log" of what I have been playing with for about 4 hours and I wanted to share it...
The setup
While setting this up is not rocket science I found useful following a few hints that a good friend of mine (that is by chance) working at MS posted on his blog a few days ago (thanks Giorgio).
First and most important Viridian will not run on any computer out there. In order to enable it you do need to enable two technologies in the server BIOS to make it run:
- Intel-VT or AMD-V depending on the processor you are using
- No Execute (NX) or Execute Disabled (XD) bit again depending on the processor you are using.
In my test I have used an IBM HS21 blade with 2 x dual-core Inte | |