Microsoft is doing something pretty wild in terms of storage in Windows Server 8. In this post, I’ll look at the new Storage Spaces concept and how you might be able to use it to get more bang for your storage buck. This post is based on the community preview that was out at the end of February.
What is Storage Spaces?
Storage Spaces is a technology that allows logical storage volumes to be virtualized across a collection of physical disks without the use of an expensive disk array. Using a JBOD connected to a server running Windows 8, IT organizations can create volumes that span the physical disks; these volumes can also be larger than the physical storage attached. As the logical volume grows, the physical storage can be upgraded without affecting the virtualized storage much past an alert that the disk is missing. When a larger replacement disk is added to the pool, information is copied there to recreate redundancy and expand the size of the Disk Pool.
Note: Windows can also manage SMI-S-capable arrays directly in Windows Server 8, so your existing array can be leveraged here as well, but it will not exist in a Storage Space.
How do I create a Storage Space?
First, you will need some disks with no data on them. If the disks you use to create this configuration have data, it will be removed during a format that happens during the configuration.
Once you have some disks, you can open Server Manager as shown in Figure A. In the examples here, I am using one 250GB VHD and one 500GB USB drive configured as a pass-through disk,
Storage Pools in Server Manager on Windows Server 8 (click to enlarge)
Initially, I had planned to use only VHDs but thought I would see if there were performance differences trying this with both the USB and VHD. Generally, you should keep the type of drives within a JBOD the same; if the disks are SAS, keep them all SAS, but the size of the drives can be upgraded at any time.
Storage Spaces are made up of three parts:
- Spaces: Are collections of disks recognized by this server, which in most cases, will just appear as available physical disks
- Disk Pools: Are created on top of a storage space displaying storage as the total amount of space available across all physical disks so volumes can be created from this storage.
- Volumes: Are Logical disks created from the total storage within a disk pool. These are the disks that Windows will see as a drive.
First, navigate to the Storage Pools section of server manager. Once there, any disks found that are eligible for a disk pool will be listed in the physical disks portion of the display. In Figure B, Server Manager shows that there is 843GB available for use and that I have two physical disks attached — one that is 466GB useable and one that is 250GB useable. The windows partition is not available for inclusion in a Storage Space.
Select Disks for the Storage Pool
Right click on the highlighted entry under Storage Spaces and choose New Storage Pool to kick off the New Storage Pool Wizard. During the wizard, you will complete the following tasks:
- Naming the storage pool
- Selecting the disks to include
- Confirming your choices
- Completing the wizard
As of now, you can only use a Storage Spaces disk pool as a data storage location. When selecting physical disks you can designate the following options for allocation:
- DataStore: Contains actual data
- Manual: Allows for the use of the disk as a specific type, manually assigned by an admin. This allows certain disks to be used only for certain spaces.
- Hot Spare: This disk will be considered a hot spare if one disk should fail
I have selected both disks to be allocated to the data store. In the event I would decide to add a hot spare, I can add more disks to the pool as they become available.
Once you have picked the disks to include, click Next to confirm you selections. Then click Create and wait for the operation to complete. I noticed that this process took about 10 seconds to complete, which is much faster than I expected.
Another thing I noticed was that the next wizard, — in this case, the one for creating virtual disks — can be run immediately after the Storage Pool Wizard by checking a box and clicking Finish.
Creating a virtual disk (click to enlarge)
In the Virtual Disk wizard, you will complete the following tasks:
- Choose a storage pool
- Select a storage layout (choose how data will be placed on the disk):
- Simple: Data is striped across disks, maximizing capacity and throughput, but decreasing reliability
- Mirror: Data will be mirrored across two or three disks, improving reliability but decreasing capacity
- Parity: Data will be striped with parity information across all disks, reducing capacity but improving reliability
Note: This does feel a bit like RAID, but that is only an analogy; the technology is not the same as RAID and does not use any type of RAID groupings as far as I can tell.
Following layout selection, you will select a provisioning type of Thin (allocated on demand) or Fixed (allocated right now).
The last configurable step is to choose the disk size and confirm results. When I completed the wizard, the provisioning process was finished almost faster than the screenshot could be taken.
Creating a new virtual disk
As with the previous wizard, you can select the Create A Volume When This Wizard Closes option to jump right into the next section.
This wizard is similar to that of adding a new disk to any Windows box. You will select the Server and Disk (shown below) and configure the volume size and file system (which can be NTFS or ReFS, but that is another post).
Select Resources for a New Volume
Just because I was curious to see what would happen, I removed a disk from the pool and waited for the server to rescan. Once that happened, the server manager generated a warning about the disk that went offline. When the missing disk was reattached, it did not immediately come back online. I found that a restart was necessary to get the disks to reappear. Once the services came back up after that, all the disks were right there. I hope that this is corrected before the product ships as disk replacement should be something that can be done without restarting.
Why would I do this when I can buy an array?
Initially I thought the same thing, but then I realized the goal is to help make storage cheaper for small business (I think at some point this may be enterprise ready, but let’s not get ahead of ourselves). Using a tray full of any disks can be much cheaper than any storage array and given the price of array disks and the wait time to get them, the option to use SAS from any vendor is pretty appealing.
When testing this in my home lab, I was able to add more disks to the pool for use simply by attaching a USB disk. Because I am testing with Windows Server 8 in a Hyper-V virtual machine, I think that might have caused some of the weirdness I saw initially with disks not showing up right away. This is nothing that wasn’t fixed by a reboot. Since then, the disk pool has worked quite well.
Can I build a Storage Space on my existing array?
You could, but the process will cause data loss; if you are thinking of transitioning to a Storage Spaces environment, the best move is to build the Spaces configuration on raw disks. You can then transition your existing data over to the Spaces configuration.
Let’s not get too far out ahead of reality — Storage Spaces is brand new for Microsoft and exists in a Beta version of Windows Server. I think the technology is extremely cool and will be a good option for a lot of small and medium IT shops looking for affordable storage, but the testing phase outside of Microsoft has just begun. If you can get this into a lab and test it, you will likely have no trouble when it is ready for prime time. From what I have seen, it might be pretty close right now, but who knows what might change by the official release.
I am looking forward to toying around with this feature more and getting more storage to use with Spaces during the beta period. I hope to revisit this topic again once the build is finalized and we know just what will remain in Windows Server 8.