2013
04.29

I’m hooked on Storage Spaces, the mechanism in Windows Server 2012 where we can aggregate non-RAID disks and create thinly provisioned (optional), fault tolerant volumes, just like you’ve been doing on a modern SAN (but Storage Spaces is more flexible, if not as feature rich).

It appears that some like this feature so much that they’ve started to implement it inside of virtual machines:

THIS IS NOT A SUPPORTED CONFIGURATION

Sure, you might see presenters like myself do this in demos.  I make it clear: I only do this because I don’t have the hardware to do Storage Spaces at the physical layer.  Storage Spaces was designed to be created using physical disks … and then you can store your virtual machines on a Storage Space virtual disk.

Why are people implementing Storage Spaces in a production VM?  My primary guess is that they want to aggregate virtual hard disks to create a larger volume.  VHD format files can only expand up to 2040 GB.  OK … that’s the wrong way to go about it!  The correct solution would be one of the following:

  • Deploy Windows Server 2012 Hyper-V and use VHDX files.  They scale out to 64 TB – the maximum size of a VSS snapshot BTW.
  • If you’re stuck on vSphere (2 TB VMDK) or pre-WS2012 Hyper-V (2040 GB VHD) then (I hate saying this …) use a physical disk of some kind until you can upgrade to a scalable hypervisor like WS2012 Hyper-V and convert to the more flexible VHDX.

A second possible excuse is: “I want to create volumes inside a VM”.  Anyone who has spent any time owning a virtualised platform will laugh at this person.  There is a simple rule in our business: 1 volume = 1 virtual hard disk.  It gives us complete flexibility over volume management both at the physical (placement) and virtual (resizing) layer.  If you need an E: volume, hot-add a VHDX to the SCSI controller.  If you need an F: volume, hot-add a VHDX to the SCSI controller.  If you need to expand the G: volume, expand the G: VHDX and then expand the G: volume.

The other reason I expect to hear via comments is “we’re scared of virtual hard disk corruption so we want to RAID the disks in some way using Storage Spaces”.  Where to start?

  • I have never personally witnessed a corrupt virtual hard disk.  When I have heard of such things it’s because people do stupid things with snapshots or differential disks and they deserve what follows.
  • The VHDX format has built-in protection for corruption that can be caused by power loss.
  • DOING STORAGE SPACES INSIDE A VM IS NOT SUPPORTED!  It’s no one’s fault, other than yours, when it misbehaves or breaks.

Please, just start using VHDX format virtual hard disks ASAP.

21 comments so far

Add Your Comment
  1. What if i use pass through disk and make storage Space?

    • See above.

  2. Straight forward and to the point. From reading this post and the one on Hyper-V vs vSphere comparisons, I get the impression that Mr. Finn does not suffer fools well. :-)

    • Mr. Finn is wa-ay too used to people trying to find ways to do bad things when the support statement is quite clear :)

  3. Hmm i’m supprised Aidan, all reviews and tests i’ve read pointed to storage spaces being pretty useless for everything but the smallest shops. Whats so great about it? Its painfully slow performance wise and doesnt even redistribute data when you add disks…

    Is this a “drinking the coolaid” post? Or did I overlook why storage spaces would be used by any enterprise?

    • You’ve misunderstood the point of storage spaces and, probably, not understood the post.

      A) Please re-read the post to see what use of storage spaces is not supported
      B) Storage spaces is good for small businesses because it is much cheaper than traditional SAN
      C) Storage spaces scales out, gives great fault tolerance across JBODS and is cheaper than SAN, making it great for public cloud
      D) I think 1.2 million IOPS would be attractive to any humungous corporation for their OLTP workloads

  4. Thanks for the article. Can you explain why Storage Spaces appear to be not only supported, but recommended within Azure? (aside from the obvious ‘you can’t get bigger than 1TB disks in azure’)
    They’re even created automatically within some of the SQL 2014 virtual servers than you can deploy in Azure…

    http://download.microsoft.com/download/D/2/0/D20E1C5F-72EA-4505-9F26-FEF9550EFD44/Performance%20Guidance%20for%20SQL%20Server%20in%20Windows%20Azure%20Virtual%20Machines.docx

    • You’ll have to ask an Azure person.

  5. Hi Aidan, can you point me at the official support statement from Microsoft for this? My google-fu fails me obviously. I was interested in using storage spaces within a 2012 R2 VM purely for the tiering features; good old hardware RAID card being fine for providing redundancy.

    Thanks!

    • No, but it’s not supported. I know because I’ve asked PMs responsible.

  6. I would like to see storage spaces inside VM to build location redundant, synchronous mirror inside a VM (and of course – replicate the vm to the other location). Locations are connected via 20Gb Ethernet, so except of some latency because of distance, performance should be okay for a file share (exposed by the vm) that is geo redundant. Do you know anything about future support?

    • I really doubt it. To be honest, you should be building the fault tolerance in the fabric – storage and replication of either VM or storage.

      • thx – but there is no synchronous replication with Hyper-V or SOFS …. 3rd party probably but would be nice out of the box.

  7. Hi Aidan,
    Could U please refresh info about supportability? Official MS document contradicts what’s in your blog:
    http://msdn.microsoft.com/en-us/library/windowsazure/dn133149.aspx
    => From here: “For Windows 8/Windows Server 2012 or later, use Storage Spaces.”

    • That article is covering Azure. I haven’t seen anything to contradict what I’ve said.

  8. I am interested in this to aggregate pass-through disks to increase bandwidth. With two LUNs, one on each storage controller of the SAN, I could then stripe the I/O and maximize throughput with resiliency still being provided by the underlying storage. With a single server this is easily accomplished by a dynamic striped volume. Unfortunately Failover Clustering will not utilize dynamic disks for storage. So Storage Spaces is the only way to accomplish this in a Failover Cluster, virtual or physical.

    In my experience “not supported” does not necessarily mean it will not work. Usually it means that it has not been tested or that if there are problems Tech Support will not help you solve them. Do you have any further information on the caveats of doing this anyway? Possibly what the likely symptoms would be “when it misbehaves or breaks”?

    • Not supported = you are dumb to do this and your boss should fire you when it WILL break.

  9. Hi Aidan

    Great blog as always, makes me laugh how brutally you put some of these guys down but it’s for their own good!

    Maybe a few of the guys here that aren’t taking your warnings about being fired seriously need to look at the Storage replica feature you mentioned recently in the next release of Windows Server.

    I was hoping something like this would become available soon, already looking to test this on a few of our platforms but looks amazing.

  10. Hi Aidan,

    Curious if you have changed your opinion on vSphere now that ESXi supports up to a 62TB VMDK?

    • No. vSphere has falled way behind in the private/hosted cloud arena, and in hybrid solutions too. Microsoft’s whole solution leaves everyone else behind.

  11. Do you know the reason it is not supported and what are the concerns with storage spaces within a VM? Generation 2 VM’s on Hyper-V present SCSI devices, just like VM’s inside of VMware vSphere do. They both honour the SCSI response codes. So what is the risk or issue specifically with storage spaces? Whether it’s supported or not, whether it’s a good idea or not, are sometimes irrelevant if it meets a business requirement and the risks can be mitigated. It seems odd that it’s supported and encouraged within Azure, which runs on Hyper-V, and yet not supported in a VM running on Hyper-V or vSphere. Given customers with premier support agreements are entitled to commercially reasonable support without explicit instructions against using it I think they would expect MS to help them if something went wrong.

Get Adobe Flash player