Resize Storage Spaces Direct Volume

In this blog post I will show you how to resize a Storage Space AKA virtual disk based on Storage Spaces Direct. The first thing is to understand that Multi-Resilient volumes are created differently comparing to a Parity or Mirror volume. A Multi-Resilient volume makes use of two tiers instead of one and therefore when expanding you need to expand multiple tiers.

Storage Spaces Volumes

Resize the volume

In this example I am using a Multi-Resilient disk.
As you can see below I have one virtual disk in the cluster named “Disk1” with a capacity of 1000GB.
Failover Cluster Storage Spaces

Next get the StorageTiers bound to the virtual disk “Disk1” with Powershell and show the size in GBs:

Get-VirtualDisk -Friendlyname "Disk1" | Get-StorageTier | FT Friendlyname, @{Name="Size in GB";Expression={($_.AllocatedSize/1gb)}}

Storage Spaces Tiers

Aha, we can see the two StorageTiers that are bound to the virtual disks called “Disk1”
So I have 900GB in my Capacity tier and 100GB in my Performance tier which sums to 1000GB.

In this case I want to resize my storagetiers +100%, so making the performance tier 200GB and the capacity tier 1800GB. You can resize storagetiers using the Resize-StorageTier cmdlet.

Get-VirtualDisk "Disk1" | Get-StorageTier | ? Friendlyname -eq "Disk1_Capacity" | Resize-StorageTier -Size 1800GB
Get-VirtualDisk "Disk1" | Get-StorageTier | ? Friendlyname -eq "Disk1_Performance" | Resize-StorageTier -Size 200GB

After the commands complete, we run the Get-StorageTier cmdlet again to see the changes in the capacity.
Storage Spaces Tiers

Now that the tiers are resized we have come to the following scenario:

Resize resul tierst

We can also check this with Powershell and confirm this:

Get-VirtualDisk "Disk1"| FT Friendlyname,Size
Get-VirtualDisk "Disk1"| Get-Disk | Get-Partition | Where Type -eq Basic | FT Size
Get-VirtualDisk "Disk1"| Get-Disk | Get-Partition | Where Type -eq Basic | Get-PartitionSupportedSize

Storage Spaces partition

As you can see the virtual disk is already 2000GB, the partition is still 1000GB and the maximum size of the partition can be 2000GB. Once the virtual disk is expanded, you also will have to expand the partition.

Get-VirtualDisk "Disk1"| Get-Disk | Get-Partition | ? Type -eq Basic | Resize-Partition -Size 2147348361216

And the result shows in Failover Cluster Manager:
Resize result

Thank you for reading my blog.
If you have any questions or feedback, leave a comment or drop me an email.

Darryl van der Peijl

Leave a Reply

Your email address will not be published. Required fields are marked *