Tag Archives: storage spaces

Understanding Windows 8 Storage Spaces: confusing but powerful

Early users have been running into trouble with Windows 8 Storage Spaces. The same technology is used in Server 2012. I posted about the issues here.

Storage Spaces is a way of virtualising disk drives. You manage physical drives in a pool of storage, and allocate virtual drives from that pool. The virtual drives can be bigger than the actual space available; this is called “thin provisioning”. When you are running out of physical space, you can add additional drives.

It sounds great and it probably is (I am reserving judgement to some extent depending on long-term reports from the field) but it can be confusing, especially if you use Parity for resilience. This user setup a Parity space with three drives, 1TB, 2TB and 320GB. Storage Spaces told him that 2TB would be available (less than the total capacity because it is resilient against drive failure). However the space was exhausted at less than 1TB. Worse still, at this point the drive vanished from his system.

This is all working as designed, though it seems to me that there is plenty of potential for confusion. Here is how I understand it.

1. A Parity space writes data over three or more drives. Therefore, if you only have three drives available, it will be unable to add more data once the smallest drive is full. One small and two large drives is a bad case for a Parity space. It is better either to have four or more drives, or else drives of equal size.

An alternative is to use a mirrored space. This works by duplicating data on two drives. In the example, that should yield 1TB + 320GB of space by mirroring the data on the 2TB drive – more than was available with Parity. With a larger number of drives though, or equally sized drives, Parity is more efficient.

2. When the storage space is full, Windows takes it offline. This is to protect your data. Once you have fixed the problem by adding more drives, you can bring the space online again.

What if you have no drives handy and you NEED access to your data? You try bringing the space online, but Windows immediately takes it back offline because the error condition still exists (and Windows or its applications can be chatty about writing data).

The solution is to mark the space as read-only which you do with PowerShell. Then you can bring it back online and access your files.

Why so confusing?

Storage spaces comes from the server team and is also available in Windows 8. It is possible that the management interface is less helpful than it could be because of that, on the grounds that IT admins are more willing to plough through documentation.

For example, it would be helpful if the spaces manager would calculate the actual capacity available with the currently attached drives and the selected resilience, and tell you that, rather than giving a nominal figure which means “this is the space which these drives can provide though you might have to add more drives to make use of it all”.

Next, there is the question of alerts. The Windows Action Center should alert you if the space is nearly full. However the value of the notification area in Windows was reduced when the Windows 7 team decided to hide most notifications by default, thanks to abuse of the system by third-party software.

Incidentally I always set the notification area to Always show all icons and notifications. If I don’t like a third-party notification, I remove the application or prevent it from running automatically. Right-click the notification area and choose Customize notification icons to make this change.

image

Returning to storage spaces, I have seen several users say they did not see alerts which suggests they are not tuned quite correctly; or maybe users are just in the habit of ignoring notifications.

Third, why doesn’t Windows mark full spaces as read-only when full, instead of taking them offline? Vanishing drives are unsettling for users. Make them read-only would be easier to understand. My space is full – I cannot add more data.

Further reading

Detailed MSDN article about Storage Spaces

Post by Darren Moss with PowerShell examples for taking a space read-only or offline/online. Darren Moss is a Senior Program Manager at Microsoft.

Can you trust Windows 8 Storage Spaces?

I have been watching a few Storage Spaces threads on Microsoft’s support forums with interest. Storage Spaces is a new way to manage disk storage in Windows 8 and Server 2012. It lets you create a pool from two or more drives, create virtual drives on them with an option for RAID-like resilience, and add or remove physical drives as needed when drives fail or more storage is needed.

image

A great feature, and particularly since it comes from the server team you would expect it to be solid. Nobody can afford to use storage that is unreliable.

Look at this thread though, based on Windows 8 Enterprise Evaluation which should be the RTM code:

I had three empty discs which I used for it: 320 GB, 1 TB, 2 TB. The manager told me that the maximum capacity for this setup would be ~2 TB.

I then proceeded to fill the space up, resulting in a horrible write speed of ~20 MB/sec. Okay, that can be accepted, it is a software solution, after all.

Here’s the kicker, though: Upon reaching ~0.9 TB, the storage space vanished! Yes, vanished.

After invoking the Storage Space Manager, I discovered that the space was deemed “full” and that I was to add another disc. I also took a look at the volumes itself. Hmmh. The 320 GB disc was 100% filled, the 1 TB was at 32% and the 2 TB at 16%. And what are 32% of 1 TB and 16% of 2 TB? Why, 320 GB!

So, instead of creating a Parity storage space, it simply downsized every hard disc to the lowest denominator, i.e. 320 GB.

Which means that there are two massive problems here:

  1. It’s lying about the remaining capacity (which is confusing in itself: The manager talks about the storage space having a 2 TB capacity, but directly above it talks about a 3.01 pool capacity?)
  2. It also gives no warning when the real capacity is reached and the pool is deemed “full”. It simply takes the pool offline (instead of, say, reverting to a “read-only” mode with a warning) and you have to bring it online manually. Not fun.

and later, from another user:

Today while I copied data over to it, it once again reached “full” status and turned itself “offline” – but this time it won’t come back “online” – it changes right back to “offline” as soon as I try to bring it online…  So essentially I cannot access any of the data on the drive anymore.

or this (which likely refers to the RP) – the article to which it comments is worth a read too.

I’ve run into a major problem with storage spaces. My storage space is full. Having a full storage space puts it into an error state, and it goes offline. You can click “Bring online” but it immediately goes offline again.

So, I can’t free space on it, because I can’t get it online to delete stuff. And, more importantly, I can’t get anything off of it because it won’t stay online.

It seems my only option is to add three drives, as I had it set to parity. The only problem? I don’t have three more drives to add.

Even bugs in in the RP worry me. Storage is so fundamental that I would expect a feature like this to be 100% solid early in the release cycle, or pulled.

Update: It now seems to me that Storage Spaces is working as designed (phew!) though it is understandable that users are confused. See the new post here.

Storage Spaces coming to Windows 8 client as well as server

Steven Sinofsky has posted on the Building Windows 8 blog, making it clear that this feature is coming to the Windows 8 client as well as to Windows Server 8.

I took a hands-on look at Storage Spaces back in October.

The feature lets you add and remove physical drives from a pool of storage, create virtual disks in that pool with RAID-like resiliency if you have more than one physical drive available. There is also “thin provisioning”, which lets you create a virtual disk bigger than the available space. It sounds daft at first, but makes sense if you think of it as a resource to which you add media as needed rather than paying for it all up-front. It

The server version includes data deduplication so that similar or identical files occupy less physical space. Another feature which is long overdue is the ability to allocate space to a virtual folder rather than to a drive letter.

I do not know if all these features will come to the Windows 8 client version, but as data deduplication is not mentioned in Sinofsky’s post, and the dialog he shows does not include a folder option, it may well be that these are server-only. This is the new Windows 8 dialog:

image

Storage Spaces occupies a kind of middle ground in that enterprises will typically have more grown-up storage systems such as a Fibre Channel or iSCSI SAN (Storage Area Network). At the other end of the scale, individual business users do not want to bother with multiple drives at all. Nevertheless, for individuals with projects like storing large amounts of video, or small businesses looking for good value but reliable storage based on cheap SATA drives, Storage Spaces look like a great feature.

Most computer professionals will recall seeing users struggling with space issues on their laptop, not realising that the vendor (Toshiba was one example) had partitioned the drive and that they had a capacious D drive that was completely empty. It really is time that Microsoft figured out how to make storage management seamless and transparent for the user, and this seems to me a big step in that direction.

Hands On with Storage Spaces in Windows Server 8

Storage Spaces is a new virtual storage feature in Windows Server 8. I have the developer preview installed, but it took me a while to get Storage Spaces working – you need one or more unused hard drives. I finally managed to find a spare 150GB Sata drive and tried it out. Note that I am going to create a 1.5TB drive on this using the magic of thin provisioning, with data deduplication thrown in for good measure.

Step 1 is to go into the file services section of server manager and create a pool. A pool is a collection of one or more disks which you will use in aggregate.

image

Here I specify the pool name and the subsystem where it will find its disks. In my case it is the RAID controller built into the motherboard.

image

Success

image

Next task is to create a new volume. I’ve selected thin provisioning as I want a drive larger than the available space. If it runs out of real space, I will have to add another drive to the pool. I have also selected Simple layout, which means no resiliency. I am doing this for the demo as I only have one drive, but in reality I would always use one of the resilient options. They are apparently not RAID, even though they are like RAID.

image

Next I assign the new drive to a virtual folder, as I am bored with Windows drive letters.

image

I turn on data deduplication. This means that I can have several copies of the same file, but it will only occupy the space of one. If a file is mostly the same as another file, I will also save space.

image

Success again. Note that Windows formatted the new drive for me in a matter of minutes. It may help that most of the space does not really exist.

image

Here is my drive ready for use, with 1,572,730,876 KB free. Handy.

image

I am impressed with how easy Storage Spaces are to use, and that it works with cheap Sata drives.

Now, I remember that Windows Home Server had an easy to use storage system called Drive Extender. You could just add and remove drives. Is Storage Spaces a kind of grown up version of Drive Extender? I asked the Windows storage team and got a snooty reply. “We do not contrast our upcoming capabilities with those that might have been offered in the past as part of other Microsoft products.” However, the spokesperson did add:

Storage Spaces delivers a rich storage virtualization capability directly from within Windows. Two powerful new abstractions (Pools and Spaces) deliver multiple benefits including seamless and easy capacity aggregation and expansion ("just add drives to a pool"), optimal just-in-time allocation (via Thin Provisioning), resiliency to physical drive failures (via mirrored or parity spaces), continuous availability (via integration with failover clustering and cluster shared volumes), ease-of-management via integration with the rich new Windows Storage Management API (with WMI interfaces and associated PowerShell cmdlets), and "pay-for-play" via support for pools comprising heterogeneous media (e.g. SSDs and HDDs). Obviously, these are just a subset of features.

Obviously. I like Storage Spaces so far though, and the feature seems to bring some similar benefits to Windows Server users.