Windows 8 Storage Spaces: How it works on the client side

Derek Schauland looks at the new feature called Storage Spaces in Windows 8 and shows you some of the options for setup and management.

In my last post I looked at how Windows Server 8 manages storage and the concept of Storage Spaces, which is a method of managing storage using a virtualized layer between what Windows sees (logical volumes) and the physical hardware, which allows Windows to create pools of disks across many physical disks connected to a server. Using Storage Spaces will turn a JBOD into more reliable, cheaper, arrays of storage and possibly bring the cost of storage down significantly.

I decided to poke around in the client and see if the Storage Spaces concept was in there - how it differed or was the same. What I found was a more consumer-friendly way to create a storage space (not that it isn't intuitive in Server) and a bit nicer front end. This post looks at Storage Spaces from the client side of Windows 8.

Storage what?

This is a new concept for a client OS in many ways. Sure you could attach iSCSI drives to prior versions of Windows and present volumes that lived on many disks, but it was never really something, in my opinion, that would fall on the user to do. Storage Spaces changes that drastically.

Suppose I have two USB Hard Disks, one of them 300 GB and one of them 500 GB in size. In Windows 7 and earlier, I would have just that; two drives connected to my system each with a fixed size. If I have Windows 8 on my system, I can create a Storage Space on my computer and use both of those disks as a single pool of storage.

On the pool, I can create volumes (or what Windows will see as drives) having different sizes. The best part is that these drives can be pretty much any size I want them to be using thin provisioning, and when I get more disks to add to the pool, the storage can grow seamlessly. For example, still using the same two drives from the previous example, I would have approximately 800GB of storage to use. What if I wanted to create a volume that was 2TB for movies or music? I can tell Windows that the volume is 2TB (or 10TB for that matter) and thinly provision it so the disk grows only as needed. This way I can start with the physical disks I have and grow them as needed, simply by adding larger disks to the pool.

Growth on demand

When Windows creates pools of disks, the disks have metadata related to the pool written to them so that they can be identified as part of the pool. This allows disks to be essentially remembered in case of a server failure. What else does this allow?

Because data is written across multiple disks within the pool, the disks can be swapped out for larger disks as needed and the data will be rebuilt as new disks are added. This way, the size of the volume and the size of the attached disks do not need to be directly related.

Note: As a rule, I would replace as few disks as possible at the same time; replace one disk at a time and allow data to rebuild before starting again. Also, keeping the disk bus type the same across a pool is a good idea. Mixing USB and SAS or SATA is possible, but results may not be desirable.

Let's get into Storage Spaces on the CTP client

To create a storage space on the Windows 8 CTP, open the Control Panel and navigate to System and Security | Storage Spaces.

Figure A

Managing Storage Spaces

From the Storage Spaces applet, select the Change Settings button and select Yes when prompted by UAC. This will allow you to perform the following actions:

  • Create a storage space
  • Rename a Pool
  • Delete a Pool
  • Add Drives

Clicking on Create A Storage Space will allow you to enter a name and select a drive letter. In the middle of the screen, you can select the resiliency type:

  • Two way mirror: creates two copies of content across disks; if one disk fails, you can add a new disk and data will be rebuilt from the other copy.
  • Three way mirror: this selection stores three copies of data allowing you to recover from two simultaneous drive failures.
  • Parity: requires at least three disks, will stripe data across disks using one third of the capacity as the parity section. This will provide the best resiliency, but will reduce capacity by one third.
  • None: this resiliency does not protect against loss and stores one copy of your data, but also only requires one disk.
Note: I noticed that the Storage Spaces screen closed when I selected a resiliency option that requires more drives than are available. I am not sure if this will continue as the CTP progresses toward the final product, but I would like to see an alert pop up to let the user know that this configuration is not supported with the number of attached disks.

Once you've made your choice, select the size of the storage space and click Create New Space.

To delete a storage pool, expand it so that all of its options are shown and select Delete Pool. This will prompt you for confirmation; click Delete Pool and you'll see the deletion in process as shown in Figure B.

Figure B

Deleting a storage pool

Be patient when deleting a storage space. I did see that the screens went unresponsive while performing the action but did notice that the deletion action did complete. This may have to do with the size of the space you are deleting.

Renaming a space allows you to change the name of an existing storage space, just as the name suggests.

Why is this feature useful?

I think Storage Spaces can be a huge new feature for two reasons:

  1. Data resiliency: your data can be spread across multiple drives, even on USB disks
  2. Volumes of any size: the storage spaces configured on a computer can be larger than the physical media size. Disks can be added as needs change, but no space reconfiguration is needed

Recently, I lost a USB drive on a system that stored a good amount of data. The disk got corrupted and required a raw data recovery. Had the Storage Spaces feature been available for that system, I might have had a much easier time recovering the data (or not losing any data in the first place).

This could be a fantastic feature for end users and consumers using Windows 8.

Changing computers

You might notice in Figure A that I already have some Storage Spaces disk pools created. This happened because I created a space and some disk pools on Windows Server 8, and when I connected the disks to the client and rebooted, the spaces just showed up. This is because of the metadata written to the disks when they were used on the server OS. Windows Storage Spaces was able to read that metadata and bring those pools and volumes online. That was the coolest part of the whole thing for me. Note: One of the volumes I created on Windows Server 8 used Microsoft's new Resilient File System (ReFS), which the Windows 8 client can see as being on the volume, but cannot use at this point. In addition, ReFS currently only supports data volumes.

Storage Spaces is one of my favorite features in Windows 8 (both CTP and Server beta). I encourage you to download the CTP and check this feature out for yourself.