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.

13 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.

Get Adobe Flash player