3

I'm using Windows 10 Enterprise. I have four identical 3TB disks set up in a Storage Space pool. Each disk shows up as providing 2.72 TB to the pool. I create a storage space with REFS and resiliency as Parity.

Coming from a RAID-5 world, I set the size to (N-1)*drive_size = 8.16 TB. When I proceeded to copy data to the disk, I was surprised when it ran out of space after 7.26 TB. I guess there are a few terms I don't understand.

Under Storage Spaces, it shows:

  • WDC 3TBx4 (F:)
  • Parity
  • 8.16 TB
  • Using 10.8 TB pool capacity

In Windows Explorer, it shows:

  • WDC 3TBx4 (F:)
  • 915 GB free of 8.15 TB.

I guess what I don't understand is, when creating the pool and space in the first place, what these definitions are:

  • Total pool capacity
  • Available pool capacity
  • Size (maximum) <---------------- something I can set
  • Including resiliency

Since I don't want to delete the 4x3TB space and start over, I tried the experiment with 4x5GB VHD files (sadly, I couldn't try 3GB disks since they apparently must be at least 4 GB). With 5 GB disks:

  • Total pool capacity: 17 GB
  • Available pool capacity: 16 GB
  • Size (maximum): defaults to 8 GB, but I can set it to whatever I want
  • Including resiliency: 12 GB

Can someone please explain how the math works?

3
  • The apparently uncapped size is because it's thin provisioned, see arstechnica.com/information-technology/2012/10/… (that's a good primer in general, though do keep in mind it's targeted towards Win8 and some of the complaints, like rebalancing, are solved in Win10)
    – Bob
    Jan 23, 2018 at 6:28
  • Also the "Using 10.8 TB pool capacity" basically means your 4 x 2.72 TB = 10.88 TB is full. Possibly due to overhead, see community.spiceworks.com/topic/….
    – Bob
    Jan 23, 2018 at 6:29
  • I did a bunch of experiments and the results were not promising. I ended up creating pools and spaces on the command line in Powershell after looking at this thread: social.technet.microsoft.com/Forums/windows/en-US/… Even after manually setting the number of columns (which makes sense) and interleave and stripes (for which I couldn't find a good definition), there was still confusing amounts of overhead. I gave up on the idea and ended up using ZFS on Linux via a VM instead.
    – stuyguy
    Jan 31, 2018 at 5:52

2 Answers 2

1

As in many cases, Microsoft expect us to use this without knowing how space is managed. And we don't. Practically, instead of 8.16TB usable space you get around 1 TB less. Some of its space to create a write back cache, some is used for not yet known reasons.

0

I don't understand what is going on here, but I found this which seems relevant, tho from 2015. Sorry if it's not helpful. I agree w Overmind-it would be nice if MS gave us some idea what's going on.

https://social.technet.microsoft.com/Forums/windows/en-US/acfb74a7-1f01-4705-8146-0f2589b54ef6/question-about-amount-of-parity-in-storage-pool?forum=w8itprogeneral

I raised this nearly a week ago with MS Support and they yesterday they confirmed it as a bug.

Well as I needed to progress this issue I had to devote some more of my own time to it. I created a new build in my lab with 8 physical disks available to pool and spent some time testing various configurations and commands. What I have found is that it is isolated to a bug in the Storage Spaces GUI; i.e. the underlying PowerShell Storage cmdlets are working as expected.

Here are the steps I took to achieve my desired result:

  1. Create a Storage Pool of all required disks (in this case 8x68GB, named "JStore") - this can be done via GUI or Shell
  2. From an administrative PowerShell session run this command:

New-VirtualDisk -FriendlyName "Parity_Max_Auto" -StoragePoolFriendlyName JStore -UseMaximumSize -ResiliencySettingName Parity -AutoNumberOfColumns

  1. Run Get-VirtualDisk to confirm success:

FriendlyName ResiliencySettingNa OperationalStatus HealthStatus IsManualAttach Size me


Parity_Max_Auto Parity OK Healthy False 469 GB

  1. Run Get-VirtualDisk | Get-Disk | Initialize-Disk
  2. Run Get-VirtualDisk | Get-Disk to get the disk number (in this case 10)
  3. Run New-Partition -DiskNumber 10 -UseMaximumSize -AssignDriveLetter to create a new partition
  4. Run Format-Volume -DriveLetter F -FileSystem NTFS to format the volume

This series of commands creates a parity space with a 1/n parity allocation as expected giving 469GB usable in this instance, which equates to 1/8. I'm going to try and apply it to my 9TB build tonight and see what happens there. It worries me that Win8 can get to RTM with this bug still apparent, but I hope this at least helps someone else to utilise Storage Spaces properly.

Cheers

Proposed as answer by stlc8tr Thursday, October 22, 2015 9:17 PM Tuesday, October 2, 2012 4:13 PM jazzrobot

next post-- I've had confirmation from MS that this is a bug in the GUI element of Storage Spaces on Win8. The underlying PowerShell Storage cmdlets function as expected, and you should be able to create your Storage Space using PowerShell. Once created, management can be done via the shell or the GUI, as it seems to be only the creation wizard that is affected by the bug.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .