Capacity in the storage pool
Before you expand a volume, make sure you have enough capacity in the storage pool to accommodate its new, larger footprint. For example, when expanding a three-way mirror volume from 1 TB to 2 TB, its footprint would grow from 3 TB to 6 TB. For the expansion to succeed, you would need at least (6 - 3) = 3 TB of available capacity in the storage pool.
Familiarity with volumes in Storage Spaces
In Storage Spaces Direct, every volume is composed of several stacked objects: the cluster shared volume (CSV), which is a volume; the partition; the disk, which is a virtual disk; and one or more storage tiers (if applicable). To resize a volume, you need to resize several of these objects.
To familiarize yourself with them, try running the Get-
cmdlet with the corresponding noun in PowerShell.
For example:
Get-VirtualDisk
To follow associations between objects in the stack, pipe one Get-
cmdlet into the next.
For example, here's how to get from a virtual disk up to its associated volume:
Get-VirtualDisk <FriendlyName> | Get-Disk | Get-Partition | Get-Volume
Step 1 – Expand the virtual disk
The virtual disk may use storage tiers, or not, depending on how it was created.
To check, run the following cmdlet:
Get-VirtualDisk <FriendlyName> | Get-StorageTier
If the cmdlet returns nothing, the virtual disk doesn't use storage tiers.
If the virtual disk has no storage tiers, you can expand it directly using the Resize-VirtualDisk
cmdlet.
Provide the new size in the -Size
parameter.
Get-VirtualDisk <FriendlyName> | Resize-VirtualDisk -Size <Size>
When you expand the VirtualDisk, the associated Disk follows automatically and is resized too.

If the virtual disk uses storage tiers, you can expand each tier separately using the Resize-StorageTier
cmdlet.
Get the names of the storage tiers by following the associations from the virtual disk:
Get-VirtualDisk <FriendlyName> | Get-StorageTier | Select FriendlyName
Then, for each tier, provide the new size in the -Size
parameter:
Get-StorageTier <FriendlyName> | Resize-StorageTier -Size <Size>
Tip
If your tiers are different physical media types (such as MediaType = SSD and MediaType = HDD) you need to ensure you have enough capacity of each media type in the storage pool to accommodate the new, larger footprint of each tier.
When you expand the StorageTier(s), the associated VirtualDisk and Disk follow automatically and are resized too.

Step 2 – Expand the partition
Next, expand the partition using the Resize-Partition
cmdlet. The virtual disk is expected to have two partitions: the first is Reserved
and shouldn't be modified; the one you need to resize has PartitionNumber = 2 and Type = Basic.
Provide the new size in the -Size
parameter. We recommend using the maximum supported size, as follows:
# Choose virtual disk
$VirtualDisk = Get-VirtualDisk <FriendlyName>
# Get its partition
$Partition = $VirtualDisk | Get-Disk | Get-Partition | Where PartitionNumber -Eq 2
# Resize to its maximum supported size
$Partition | Resize-Partition -Size ($Partition | Get-PartitionSupportedSize).SizeMax
When you expand the Partition, the associated Volume and ClusterSharedVolume follow automatically and are resized too.

That's it!
Tip
You can verify the volume has the new size by running the Get-Volume
cmdlet.