I got asked today what my favourite feature of Windows Server 2012 was. For me, that’s a really tough question because there are loads of new features in Windows Server 2012. There are many existing features which have been improved and don’t even get me started on Windows Server 2012 R2, due for official release very soon although already available via MSDN, TechNet and VLSC.
I thought about it for a minute or so but it was obvious to me that Storage Spaces is the coolest and favourite feature of mine in Windows Server 2012 because for Windows Server, it’s a huge reboot on what we can do with storage natively, super easy to setup and operate and it has no additional costs to use as it’s included in Standard edition.
What are Storage Spaces?
Storage Spaces can be boiled down to a simple idea. Imagine that you have a server and with that server, you’re given a ‘pick and mix’ bag of disks and these disks that you have are all of varying capacities and even types (SAS, SATA and even USB) and you want to use these disks in the cheapest and most efficient fashion. Storage Spaces is made for you.
With conventional RAID setups, the above example just isn’t viable because RAID needs you to have matching disk types, capacities, firmware and various other parameters. Imagine then, that you could install these assorted drives into your server, configure them into one or more pools of storage resource and carve out chunks of that storage however you liked? A simple drive (a la JBOD), data that you want to protect and need fast write speeds (like RAID1) and data that you want to protect and need fast read speeds (think RAID5).
You can do all of this through an interface that’s common to you, the Windows Server GUI or PowerShell if you prefer? What’s more, you don’t have the capital expense of expensive storage solutions for your server like DAS (Direct Attached Storage) cages or SAN (Storage Area Network) arrays.
Surely That’s Not All It Does?
Of course not, Storage Spaces aren’t just as simple as my example above because it offers much more.
Think how you have a RAID set configured on a conventional RAID controller: Your server has six bays and you configure two as a mirror to the Windows Server 2012 installation and you decide to put the remaining four into a RAID5 stripe to store and protect your user and application data. Everything works fine but then, two months’ from now, you decide that you need another application or service on that server that would really benefit from a RAID1 Mirror and its higher write speeds. Your options are limited to put it on the sub-optimal RAID5 Stripe or extend the server with an expensive DAS cage because you are out of free disk slots on the server.
With conventional RAID, an entire physical disk and its capacity is assigned to the logical drive. In Storage Spaces, you create drives within one or more Storage Pools, the logical grouping of all of your physical drives and you then create Storage Spaces from those Storage Pools.
The screenshot above shows what a real-world Storage Pool with several configured Storage Spaces could look like, taken from my Windows Server 2012 Essentials machine, and as you can see, I’ve each one configured differently.
When you create a Storage Space inside a Pool, you get a set of options which allow you to configure all of the attributes of that Storage Space such as protection type, drive letter and capacity. You can even allocate more capacity to a storage space than you physically have. Because of these capacity and protection type options, you really can maximize the value you get from your set of disks and use then exactly how you need them.
This is one of the really cool things about Storage Spaces. The idea is so simple but yet really effective. In my image above, you can see my Windows Server 2012 Essentials server has a pool capacity of 19.0 TB (yes, I spent a lot of money on disks) and the available capacity right now is 7.82 TB, yet I’ve told Windows that I want the new Storage Space to be 25 TB.
Welcome to Thin Provisioning
It goes without saying that you can’t actually use more than you have as the data would have nowhere to be stored, but the principal is that you plan and configure your storage space sizes in advance to meet your long-term need and not what you currently have. You use capacity up to what you have currently and add more disk over time to give you additional physical capacity, spreading your capital expenditure over time. Best of all, adding more disk to a Storage Pool is simply a couple of clicks.
Storage Spaces doesn’t need to be limited to just one server like my simplistic example either. Windows Server 2012 likes to share so lets you use Storage Spaces in any way that you might want to use a normal disk. You can use a Storage Space to store a Hyper-V virtual machine .vhd file or an iSCSI target presented out to another server.
How to Find Out More
Hopefully this post has got you really interested and thinking about some of the possibilities with Storage Spaces. We saw a number of new features in recently for Storage Spaces too. Hopefully I’ll get to replace my home solution with R2 before too long, pending wife approval of course so I look forward to being able to share what I experience with that.
As there is more to Storage Spaces than I could force anyone to read in a single post, I’d highly recommend heading over to TechNet for a read of more of the features such as Failover Clustered Storage Spaces, Hot Spares, ReFS File System support and more and not forgetting, the Storage Spaces Overview page.