VSAN performance: many SAS low capacity VS some SATA high capacity?

Something that I have seen popping up multiple times now is the discussion around VSAN and spindles for performance. Someone mentioned on the community forums they were going to buy 20 x 600GB SAS drives for their VSAN environment for each of their 3 hosts. These were 10K SAS disks, which obviously outperform the 7200 RPM SATA drives. I figured I would do some math first:

  • Server with 20 x 600GB 10K SAS = $9,369.99 per host
  • Server with 3 x 4TB Nearline SAS = $4,026.91 per host

So that is about a 4300 dollar difference. Note that I did not spec out the full server, so it was a base model without any additional memory etc, just to illustrate the Perf vs Capacity point. Now as mentioned, of course the 20 spindles would deliver additional performance. Because after all you have additional spindles and better performing spindles. So lets do the math on that one taking some average numbers in to account:

  • 20 x 10K RPM SAS with 140 IOps each = 2800 IOps
  • 3 x 7200 RPM NL-SAS with 80 IOps each = 240 IOps

That is a whopping 2560 IOps difference in total. That does sound like an awe full lot doesn’t it? To  a certain extent it is a lot, but will it really matter in the end? Well the only correct answer here is: it depends.

I mean, if we were talking about a regular RAID based storage system it would be clear straight away… the 20 disks would win for sure. However we are talking VSAN here and VSAN heavily leans on SSD for performance. Meaning that each diskgroup is fronted by an SSD and that SSD is used for both Read Caching (70% of capacity) and write buffering (30%) of capacity. Illustrated in the diagram below.

The real question is what is your expected IO pattern? Will most IO come from read cache? Do you expect a high data change rate and as such could de-staging be problematic when backed by just 3 spindles? Then on top of that, how and when will data be de-staged? I mean, if data sits in write buffer for a while it could be the data changes 3 or 4 times before being destaged, preventing the need to hit the slow spindles. It all depends on your workload, your IO pattern, your particular use case. Looking at the difference in price, I guess it makes sense to ask yourself the question what $ 4300 could buy you?

Well for instance 3 x 400GB Intel S3700 capable of delivering 75k read IOps and 35k write IOps (~800 dollars per SSD). That is extra, as with the server with 20 disks you would also still need to buy SSD and as the rule of thumb is roughly 10% of your disk capacity you can see what either the savings are or the performance benefits could be. In other words, you can double up on the cache without any additional costs compared to the 20-disk server. I guess personally I would try to balance it a bit, I would go for higher capacity drives but probably not all the way up to 4TB. I guess it also depends on the server type you are buying, will they have 2.5″ drive slots or 3.5″? How many drive slots will you have and how many disks will you need to hit the capacity requirements? Are there any other requirements? As this particular user mentioned for instance he expected extremely high sustained IOs and potentially full backups daily, as you can imagine that could impact the number of spindles desired/required to meet performance expectations.

The question remains, what should you do? To be fair, I cannot answer that question for you… I just wanted to show that these are all things one should think about before buying hardware.

Just a nice little fact, today a VSAN host can have 5 Disk Groups with 7 disks, so 35 disks in total. With 32 hosts in a cluster that is 1120 disks… That is some nice capacity right with 4TB disks that are available today.

I also want to point out that a tool is being developed as we speak which will help you making certain decisions around hardware, cache sizing etc. Hopefully more news on that soon,

** Update, as of 26/11/2013 the VSAN Beta Refresh allows for 7 disks in a disk group… **


VSAN and Network IO Control / VDS part 2

About a week ago I wrote this article about VSAN and Network IO Control. I originally wrote a longer article that contained more options for configuring the network part but decided to leave a section out of it for simplicity sake. I figured as more questions would come I would publish the rest of the content I developed. I guess now is the time to do so.

In the configuration described below we will have two 10GbE uplinks teamed (often referred to as “etherchannel” or “link aggregation”). Due to the physical switch capabilities the configuration of the virtual layer will be extremely simple. We will take the following recommended minimum bandwidth requirements in to consideration for this scenario:

  • Management Network –> 1GbE
  • vMotion VMkernel –> 5GbE
  • Virtual Machine PG –> 2GbE
  • Virtual SAN VMkernel interface –> 10GbE

When the physical uplinks are teamed (Multi-Chassis Link Aggregation) the Distributed Switch load balancing mechanism is required to be configured as:

  1. IP-Hash
  2. LACP

It is required to configure all portgroups and VMkernel interfaces on the same Distributed Switch using either LACP or IP-Hash depending on the type physical switch used. Please note all uplinks should be part of the same etherchannel / LAG. Do not try to create anything fancy here as a physically and virtually incorrectly configured team can and probably will lead to more down time!

  • Management Network VMkernel interface = LACP / IP-Hash
  • vMotion VMkernel interface = LACP / IP-Hash
  • Virtual Machine Portgroup = LACP / IP-Hash
  • Virtual SAN VMkernel interface = LACP / IP-Hash

As various traffic types will share the same uplinks we also want to make sure that no traffic type can push out other types of traffic during times of contention, for that we will use the Network IO Control shares mechanism.

We will work under the assumption that only have 1 physical port is available and all traffic types share the same physical port for this exercise. Taking a worst case scenario approach in to consideration will guarantee performance even in a failure scenario. By taking this approach we can ensure that Virtual SAN always has 50% of the bandwidth to its disposal while leaving the remaining traffic types with sufficient bandwidth to avoid a potential self-inflicted DoS. When both Uplinks are available this will equate to 10GbE, when only one uplink is available the bandwidth is also cut in half; 5GbE. It is recommended to configure shares for the traffic types as follows:


Traffic Type Shares Limit
Management Network  20 n/a
vMotion VMkernel Interface  50 n/a
Virtual Machine Portgroup  30 n/a
Virtual SAN VMkernel Interface  100 n/a


The following diagram depicts this configuration scenario.

Disable “Disk.AutoremoveOnPDL” in a vMSC environment!

Last week I tweeted the recommendation to disable the advanced setting Disk.AutoremoveOnPDL in a vSphere 5.5 vMSC environment:

Based on this tweet I received a whole bunch of questions. Before I explain why I want to point out that I have contacted the folks in charge of the vMSC program and have requested them to publish a KB article asap on this subject.

With vSphere 5.5 a new setting was introduced called “Disk.AutoremoveOnPDL”. When you install 5.5 this setting is set to 1 which means it is enabled. What it does is the following:

The host automatically removes the PDL device and all paths to the device if no open connections to the device exist, or after the last connection closes. If the device returns from the PDL condition, the host can discover it, but treats it as a new device. Data consistency for virtual machines on the recovered device is not guaranteed.

(Source: http://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vmware.vsphere.storage.doc%2FGUID-45CF28F0-87B1-403B-B012-25E7097E6BDF.html)

In a vMSC environment you can understand that removing devices which are in a PDL state is not desired. As when the issue that caused the PDL has been solved (from a networking or array perspective) customers would expect the LUNs to automatically appear again. However, as they have been removed a “rescan” is needed to show these devices again instantly, or you will need to wait for the vSphere periodic path evaluation to occur. As you can imagine, in a vSphere Metro Storage Cluster environment (stretched storage) you expect devices to always be there instantly on recovery… even when they are in a PDL or APD state they should be available instantly when the situation has been resolved.

For now, I recommend to set Disk.AutoremoveOnPDL to 0 instead of the default of 1:

Hopefully soon this KB on the topic of Disk.AutoremoveOnPDL will be updated to reflect this.

Startup News Flash part 8

Part 8 already of the Startup News Flash. It is just a short one, not too many new things but some worth mentioning in my opinion.

Infinio just announced Infinio Accelerator 1.0. I wrote about what Infinio is and does in this article, in short: Infinio has developed a virtual appliance that sits in between your virtual machine storage traffic and your NFS datastore. The Infinio virtual appliance enhances storage performance by caching IO. Their primary use case is to do caching in memory. Infinio’s primary marketing message is: “100% software only – No new hardware, no reboots, no downtime”. It will accelerate any workload type running on NFS and is available for a shockingly (if you ask me) low price of 499, and they offer a free 30-day trial.

Recently a new startup was revealed named Coho Data, formerly known as Convergent.io. I wrote an introduction about them a couple of weeks ago which I suggest reading to get a better understanding of what Coho is or does. In short: Coho Data built a scale-out hybrid storage solution (NFS for VM workloads). With hybrid meaning a mix of SATA and SSD. This for obvious reasons, SATA bringing you capacity and flash providing you raw performance. Today I read an article about a new round of funding, 25 Million lead by Andreesseen Horowitz. Yes, that is no pocket change indeed. Hopefully this new round of funding will allow Coho to bring things to the next level! Congratulations…

Just a short one this round, hopefully more news next time… I would suspect so as Storage Field Day 4 is scheduled the week of the 13th.

EMC VPLEX and Storage DRS / Storage IO Control

At VMworld various people asked me why VMware did not support the use of Storage DRS and Storage IO Control in a VPLEX Metro environment. This was something new to me and when someone pointed me to a KB article I started digging.

When discussing it with the various teams the following is what we concluded for EMC VPLEX, this is what I drafted up. I have requested the KB to be updated in a more generic fashion (text all the way down below) so that the support statement will apply for all vMSC configurations. Hopefully will be published soon. The EMC specific statement, which I provided to the EMC VPLEX team, will look roughly as follows:

EMC VPLEX supports three different configurations, namely VPLEX Local, VPLEX Metro and VPLEX Geo. This KB article describes the supported configurations for VPLEX Local and VPLEX Metro with regards to Storage DRS (SDRS) and Storage I/O Control (SIOC). VMware supports Storage DRS and Storage IO Control on EMC VPLEX in each of the two configurations with the restrictions described below.

VPLEX Local:
In a VPLEX Local configuration VPLEX volumes are contained within site/location. In this configuration the following restrictions apply:
- Storage IO Control is supported
- Storage DRS is supported
- A Datastore Cluster should only be formed out of similar volumes
- It is recommended to run Storage DRS in “Manual Mode” to control the point in time migrations occur

VPLEX Metro:
In a VPLEX Metro configuration VPLEX volumes are distributed across locations/sites. In this configuration the following restrictions apply:
- Storage IO Control is not supported
- Storage DRS is only supported when “IO Metric” is disabled
- It is recommended to run Storage DRS in “Manual Mode” to control the point in time migrations occur
- Each location/site should have a Datastore Cluster formed only out of dvols (Distributed VPLEX volumes) which are part of the same consistency groups, and only with site bias to that particular location / site!
- Example: Site A will have Datastore Cluster A which contains all dvols with bias to Site A.

The more generic support statement will roughly look like this:

This KB article describes the supported configurations for vSphere Metro Storage Cluster (vMSC) environments with regards to Storage DRS (SDRS) and Storage I/O Control (SIOC). VMware supports Storage DRS and Storage IO Control with the restrictions described below.

In a vMSC configuration volumes are distributed across locations/sites. In both uniform and non-uniform configurations the following restrictions apply:
- Storage IO Control is not supported
- Storage DRS is only supported when “IO Metric” is disabled
- It is recommended to run Storage DRS in “Manual Mode” to control the point in time migrations occur
- Each location/site should have a Datastore Cluster formed only out of stretched datastore and only with site bias to that particular location / site
- Example: Site A will have Datastore Cluster A which contains all stretched datastores with bias to Site A.

Hopefully this will help the folks implementing vMSC today to make the decision around the usage of SDRS. KB team has informed me they are working on the update and as soon as it has been published I will update this article.

** KB Article has been updated: http://kb.vmware.com/kb/2042596 **