Share via


Understanding Storage Spaces and Columns

Question

Tuesday, August 23, 2016 6:12 PM

Hi

Would someone please be able to help me understand why my storage space says it’s full yet I have plenty of space on the newly created space and the underlying pool? I am experimenting creating storage spaces using PowerShell, although this is on the Windows 10 client, I don’t think that should make a difference to how this works.

So, my storage pool is 7.16TB in capacity, with 6.11TB used (there are a couple of other spaces on here). It is made from 6 disks as follows:

1 x 3TB

2 x 2TB

1 x 400GB

1 x 320GB

1 x 160GB

Total = 7.16TB accounting for Hardware Vs Software capacities

I deleted a 500GB space which previously had 450GB of data on it which has resulted in me having 1TB of free pool capacity, the 450GB data is a single VHDX file so I know the pool isn’t limited on space because the pool being recreated is exactly the same but using different number of columns.

The space I am creating is identical to the original space with the only difference being the number of columns, if I select 1 column like the GUI wizard makes for me everything is fine, but I believe more columns would give me more performance. The space is a 2-way mirror and thin provisioned, I have 6 physical disks, I so far understand I should be able to create a 3 column space in this configuration. However, if I create the space using 2 or 3 columns I get an error saying there isn’t enough space when copying the file, yet it’s the same file I’m copying which works on the space created with 1 column. The space creates correctly, it correctly says I need to expand the pool by adding 6 drives which I expect if there’s a 3 column space like this. Yes I am a little short on pool space, but I have 1TB free and the file when duplicated should add up to 900GB, I should have 100GB free pool capacity left.

I could delete the other space on there but this means a time consuming process of copying it back and I don’t even know if this will work anyway given the errors I have, so before I delete more data I was looking for an answer to check if I’m doing this right.

The PowerShell code I am using is below

$SpaceName = "TestSpace"
$StoragePool = "Main Storage Pool"
$InterLeave = 262144
$disknumber = $null
$DriveLetter = 'N'


New-VirtualDisk -FriendlyName $SpaceName  -StoragePoolFriendlyName $StoragePool -NumberOfColumns 1 -ProvisioningType Thin -ResiliencySettingName Mirror -Interleave $InterLeave -Size 500GB


$disknumber = Get-VirtualDisk -FriendlyName $SpaceName | Get-Disk | Select -ExpandProperty Number

Initialize-Disk –Number $disknumber –PartitionStyle GPT

New-Partition -DiskNumber $disknumber -UseMaximumSize -DriveLetter $DriveLetter

Format-Volume -DriveLetter $DriveLetter -FileSystem ReFS -NewFileSystemLabel $SpaceName -Confirm:$false

The above code works perfectly fine, but as soon as i change just the number of columns then suddenly it doesnt work.

Appreciate any help,

thanks

Steve

All replies (4)

Thursday, August 25, 2016 2:02 AM ✅Answered | 2 votes

Hi Mills,

Thanks for your feedback.

>Can I change the space to use 12 columns, or must I destroy and rebuild the space using 12 columns?

As far as I know, we can't change the number of columns once the virtual disk is created. You may need to rebuild.

And you might take a look at the article I post before. In theory, there's no maximum number.

Best Regards,

Mary

Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact [email protected].


Wednesday, August 24, 2016 2:52 AM

Hi Steve,

You can control the number of columns and the stripe interleave when creating a new storage space by using the Windows PowerShell cmdlet New-VirtualDisk with the NumberOfColumns and Interleave parameters.

Each type of storage space has a minimum number of stripe columns which translates to a minimum number of physical disks

If your current VD has groups of 4 disks (= column size is 4), you can't add a "half" group by adding 2 new disks. So the number of disks required for expansion is basically
n x NumberOfColumns x NumberOfDataCopies

So if you have a two-way mirror and a column size of 1, you can only add pairs of disks. If your mirror has a column size of 3, you can only add 6, 12, 18 or so disks.

You could also check the articles for more details

http://social.technet.microsoft.com/wiki/contents/articles/11382.storage-spaces-frequently-asked-questions-faq.aspx.

For storage space, two-way mirror for example 2-column, in fact when you copy data, it writes on the first column 256kb, then next column 256kb. If the data not finishes, than go back to first column with 256kb and then next column until the data finishes.

In you scenario, you said the total spaces is lager, but since the disk are all different size and with a big difference size. If one of the column is small, you may get the error not enough space. Even though your total space is large.

Best Regards,

Mary

Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact [email protected].


Wednesday, August 24, 2016 5:19 PM

ahh I see, so it could be starting with Column 1 on the 3TB disk and column 2 and 3 might be on those smaller disks (320 and 150GB)? im writing a 450GB file, i would have thought though that even if this were the case that the 450GB would have been distributed amoung those other 2 columns and not max out the capacity of the disk, or found another disk to write the data to - since i have plenty of space in the pool, i thought that was kind of the idea of storage spaces so we dont have to worry about that sort of thing, it's all taken care of under the hood.... but apparently not. it did let me write 150GB file to it though, but not 450GB.


Wednesday, August 24, 2016 6:24 PM

Another question I have relating to columns is about expanding the pool and adjusting the columns afterwards.

So, for example let’s assume I have 12 x 2TB drives = raw capacity of 24TB. I create a two way mirror on this space using all available space and 6 columns. This would result 12TB usable space, and 6 columns used. When I come to grow the space further I must add 12 more disks, so if I did that my new pool would consist of 24 disks, 12 of which are mirrored data and the other 12 are of the original data.

However, I don’t see that the column count will change (unless it does of course), so would I still be left with 6 columns?

Can I change the space to use 12 columns, or must I destroy and rebuild the space using 12 columns?

I understand if I use more columns I could experience latency, and if I did create 12 columns I’d then need to subsequently expand at 24 disks at a time.

Is there a maximum number of columns hard coded into storage spaces?