Leading Your Customers to Modern IT with Windows Server 2012 R2: Storage Spaces
I know this little gem is not getting enough play with many partners and SMB customers; Storage Spaces. We talked a lot about it when it was initially released with Windows Server 2012, and then again when we updated it and added functionality in the R2 release, but I am still amazed at the number of partners that gloss over Storage Spaces. It think this happens for many reasons. we all get set in our ways and comfortable selling what we know or have used previously. We tend to gravitate to what is tried and true! The SAN, the NAS box, or other such storage appliance. While there is absolutely nothing wrong with going with what works, there is also nothing wrong with trying something new. Storage Spaces can fulfill a number of potential scenarios, both on premises and in the cloud. It may save your customer money allowing more of the IT budget to be spent on your services, which are certainly more lucrative.
Before we go further I would like to mention that if you looked at Storage Spaces before the Windows Server R2 release, please note there have been many significant improvements to the technology. Please explore it again. Also, You will sometimes find information in the blogosphere that negatively portrays Storage Spaces. I would ask you look the date of the article (as they are usually quite old), and know that proper configuration of Storage Spaces is key. As we will see in the resource links below, Storage Spaces are commonly used to stripe disks together in order to aggregate their IOPs, bandwidth, and storage capacity in Microsoft Azure when a high scale VM is attached with several premium storage persistent disks. If they are running critical high scale, high performance workloads in the largest datacenters in the world successfully, they can certainly accommodate the solutions you will likely propose to your customers.
The First Rule of Storage Spaces is you get out of Storage Spaces what you put into Storage Spaces
Before I can elaborate on the first rule, we need a basic understanding of Storage Spaces. From the Storage Spaces Overview on TechNet the Technology is defined as:
…a technology in Windows and Windows Server that enables you to virtualize storage by grouping industry-standard disks into storage pools, and then creating virtual disks called storage spaces from the available capacity in the storage pools.
Storage Spaces enables cost-effective, highly available, scalable, and flexible storage solutions for business-critical (virtual or physical) deployments. Storage Spaces delivers sophisticated storage virtualization capabilities, which empower customers to use industry-standard storage for single computer and scalable multi-node deployments. It is appropriate for a wide range of customers, including enterprise and cloud hosting companies, which use Windows Server for highly available storage that can cost-effectively grow with demand.
With Storage Spaces the Windows storage stack has been fundamentally enhanced to incorporate two new abstractions:
Storage pools. A collection of physical disks that enable you to aggregate disks, expand capacity in a flexible manner, and delegate administration.
Storage spaces. Virtual disks created from free space in a storage pool. Storage spaces have such attributes as resiliency level, storage tiers, fixed provisioning, and precise administrative control.
As noted above, Storage Spaces exist in “Windows” in addition to Windows Server, so a great way to cut your teeth is to use a few USB drives (your excess low capacity flash drives work great) and test it on Windows 8 or Windows 10.
So lets get back to this rule. “you get out of Storage Spaces what you put into Storage Spaces”. This is true on two accounts. One, you cannot expect to get SAN-like performance from Storage Spaces if you repurpose a decommissioned older server and attach a bunch of 5000 RPM SATA JBOD of various ages and sizes. If your expectation is that the Windows Server and the Storage Space perform, build it to a specification. Use a quality server with quality and high performance disks! Second, appropriate configuration is just as important.
You have several ways to utilize resilient storage and they are highlighted in the Storage Spaces Overview. I have pasted the essence below:
Storage Spaces provides three storage layouts (also known as resiliency types):
Mirror. Writes data in a stripe across multiple disks while also writing one or two extra copies of the data. Use the mirror layout for most workloads – it helps protect your data from disk failures and provides great performance, especially when you add some SSDs to your storage pool and use storage tiers.
Parity. Writes data in a stripe across physical disks while also writing one or two copies of parity information. Use the parity layout for archival and streaming media workloads, or other workloads where you want to maximize capacity and you’re OK with lower write performance.
Simple (no resiliency) . Writes data in a stripe across physical disks without any extra copies or parity information. Because the simple layout doesn’t provide any protection from disk failures, use it only when you require the highest performance and capacity and you’re OK with losing or recreating the data if a disk fails. You can also use the simple layout when your application provides its own data protection.
Additionally, Storage Spaces can automatically repair mirror and parity spaces in which a disk fails by using dedicated disks that are reserved for replacing failed disks (hot spares), or more rapidly by using spare capacity on other disks in the pool. Storage Spaces also includes background scrubbing and intelligent error correction to allow continuous service availability despite storage component failures. In the event of a power failure or cluster failover, the integrity of data is preserved so that recovery happens quickly without lost data.
Note that Storage tiers, write-back cache, dual parity, and the ability to Automatically rebuild storage spaces from storage pool free space are updates added in the Windows Server R2 timeframe.
WHAT ELSE CAN STORAGE SPACES DO?
I am glad you asked! Storage Spaces can be leveraged by Virtual Machines in Azure (and other hosted datacenters) and has a particular application in overcoming strictures or limitations resident in the Azure fabric, such as IO and disk size limitations on Storage Accounts and premium Storage Accounts.
Referencing Azure Subscription and Service Limits, Quotas, and Constraints Storage Limits, we can see that a typical Azure Storage Account is limited to 500 TB and a total request rate of 20,000 IOPS. For larger and more demanding solutions that do not require Premium Storage, Storage spaces allows us to easily overcome these obstacles. There are intrinsic limits on virtual disks within Storage Accounts and based on VM tier as well, so please be mindful of these. Details can be found within the previously mentioned Service limits link above.
Where you can really see the potential of Storage Spaces in a Hybrid or Azure hosted solution is when Premium Storage is used, especially when looking at high end SQL server implementations.
Just last week, Pradnya Khadapkar, posted a great article on the Azure website titled Azure Premium Storage: Design for High Performance where she called out Storage Spaces as the mechanism for Disk Striping Premium Storage Windows VMs in Azure. Likewise, last month Jason Roth also called out Storage Spaces as essential in his Performance best practices for SQL Server in Azure Virtual Machines article. He stated:
For Windows 8/Windows Server 2012 or later, use Storage Spaces. Set stripe size to 64 KB for OLTP workloads and 256 KB for data warehousing workloads to avoid performance impact due to partition misalignment. In addition, set column count = number of physical disks. To configure a Storage Space with more than 8 disks you must use PowerShell (not Server Manager UI) to explicitly set the number of columns to match the number of disks. For more information on how to configure Storage Spaces, see Storage Spaces Cmdlets in Windows PowerShell
With the merits of Storage Spaces extending to the cloud in VERY high performance workloads, there is no doubt this Windows Server technology is alive and well. Isn't it time to take a closer look?
You can check out our whole series on Windows Server 2012 R2 at https://aka.ms/ts2windowsserver2012r2
Have a happy holiday!