You dont have javascript enabled! Please enable it!

How to Expand and Resize Storage Spaces Direct CSV Volume? #HyperV #S2D

3 Min. Read

In this article post, we will walk you through how to expand and resize an existing Storage Spaces Direct Clustered Shared Volume(s).


In Windows Server 2016, Microsoft added a new type of storage called Storage Spaces Direct (S2D). S2D enables building highly available storage systems with locally attached disks, and without the need to have any external SAS fabric such as shared JBODs or enclosures. This is a significant step forward for Microsoft in Windows Server 2016 software-defined storage (SDS) which reduces the cost even further.

The following two diagrams show you an overview of the Storage Spaces Direct stack in the Converged (disaggregated) and Hyper-Converged models.


Storage and compute in separate clusters [Image Source: Microsoft]


Storage and compute in the same cluster [Image Source: Microsoft]

In this article post, I will walk you through how to expand and resize an existing Storage Spaces Direct Clustered Shared Volume(s).

Expand S2D CSV Volume

In this example, we are using a Hyper-Converged model with 3 nodes and a 3-way mirror disk.

As you can see below, I have four virtual disks in the S2D cluster named “Collect”, “vDisk02”, “vDisk03”, and “vDisk04” with capacities of 127 GB and 700 GB.


And each node has 2 X 960 GB SSDs for caching and 4 X 1 TB HDDs for capacity.


First things first, we need to check the health, operational status, and footprint on the storage pool of the existing virtual disk before doing any changes.

Let’s open Windows PowerShell and get the existing virtual disk information.

Get-VirtualDisk * | Sort FriendlyName | FT FriendlyName, OperationalStatus, HealthStatus, @{Label=’Size(GB)’;Expression={$_.Size/1GB}}, @{Label=’FootPrintOnPool(GB)’;Expression={$_.FootprintOnPool/1GB}} -autosize


As mentioned earlier, in this example I am using a 3-way mirror as resiliency, so for a 700 GB virtual disk, it will occupy (700 GB X 3) = 2.1 TB of footprint each.

Here is the Show-PrettyVolume output written by Cosmos Darwin, Program Manager on the storage team at Microsoft.


Next, let’s check the remaining capacity in the Storage Pool by running the following command:

Get-StorageSubSystem *Cluster* | Get-StorageHealthReport


The 16.16 TB is the total physical pool capacity, and the 4.56 TB is the remaining physical storage pool without resiliency.

Let’s see how the maximum resilient capacity that we can add to the virtual disk in order to expand the existing volume(s).

Get-StorageTierSupportedSize -FriendlyName Capacity -ResiliencySettingName Mirror | FT @{l="TierSizeMax(TB)";e={$_.TierSizeMax/1TB}}


The remaining mirror capacity is 1.45 TB.

Please note that Microsoft recommends leaving 2 X 1 TB drives’ worth of capacity based on this example, but it’s just that – a recommendation, because if you experience a drive failure, Storage Spaces Direct will not be able to do an immediate and “in-place” repair, meaning it will successfully repair only after you have replaced the physical device. If instead, you leave at least 2 TB of free space in the pool, then Storage Spaces Direct would be able to repair immediately, even before the physical disk is replaced.

We can confirm this by running the following command:

Get-StorageSubSystem *Cluster* | Debug-StorageSubSystem


Let’s now resize and expand the volume, by running the following command:

# Expand the size of all virtual disks to 1TB
Get-VirtualDisk  vDisk* | Get-StorageTier | ? ResiliencySettingName -eq Mirror | Resize-StorageTier -Size 1024GB #This was a 324GB increase

Here is another important point to remember: When you are resizing the storage space direct CSV volume, you have to specify the new total size and not the amount you want to increase, so in this example, the existing virtual disk volume is 700 GB, I need to add 324 GB (new) + 700 GB (existing) = 1,024 GB total. The same concept will apply if you are resizing a Multi-Resilient hybrid volume (Performance / Capacity).

Let’s check now the new size of each virtual disk by running the following command:

Get-VirtualDisk vDisk* | FT FriendlyName, @{Label=’Freespace(GB)’;Expression={$
 _.Size/1GB}}, @{Label=’FootPrintOnPool(GB)’;Expression={$_.FootprintOnPool/1GB}} -autosize


And here is the result shown in Failover Cluster Manager:


We are not done yet, Failover Cluster Manager shows under Disks that the Cluster Virtual Disk(s) is 1 TB in capacity, but the Cluster Shared Volume (CSVFS) is still @ 700 GB as shown in the next screenshot.


Once the virtual disk(s) is expanded, you will have also to expand the partition size for each one.

Please note that when you want to expand the partition, you need to do so on the owner node of that volume.


To automate this process, I created the following script that you can run from your management machine to expand the partition for all volumes.

$Cluster = "S2DCLU"
$vDisks = Get-VirtualDisk vDisk* -CimSession $Cluster
foreach ($vDisk in $vDisks) {
$vDiskMax = Get-VirtualDisk $vDisk.FriendlyName -CimSession $Cluster | Get-Disk | Get-Partition  | ? Type -eq Basic | Get-PartitionSupportedSize
Get-VirtualDisk $vDisk.FriendlyName -CimSession $Cluster | Get-Disk | Get-Partition  | ? Type -eq Basic | Resize-Partition -Size $vDiskMax.SizeMax

And here is the final result in Failover Cluster Manager:



Hopefully, the above notes and screenshots illustrate how you can expand and resize a Storage Spaces Direct CSV volume when you have a need to do so.

Microsoft has a great Storage Spaces Direct Overview which goes into more detail and is well worth a read.

Until next time… Enjoy your weekend!


Photo of author
About the Author
Charbel Nemnom
Charbel Nemnom is a Senior Cloud Architect, Swiss Certified ICT Security Expert, Certified Cloud Security Professional (CCSP), Certified Information Security Manager (CISM), Microsoft Most Valuable Professional (MVP), and Microsoft Certified Trainer (MCT). He has over 20 years of broad IT experience serving on and guiding technical teams to optimize the performance of mission-critical enterprise systems with extensive practical knowledge of complex systems build, network design, business continuity, and cloud security.

Related Posts


How To Add Nano Server to a Domain? #NanoServer #WS2016

Upgrade The VM Configuration Version in Windows Server Hyper-V Cluster with PowerShell? #HyperV


4 thoughts on “How to Expand and Resize Storage Spaces Direct CSV Volume? #HyperV #S2D”

Leave a comment...

  1. HI charbel,

    I’m thinking about replacing how Hyper-v/HP VSA infrastructure with Win2016 Storage spaces direct and VMM 2016. Is Microsoft S2D similar to HP VSA?
    We have two HP DL380 Gen9 /Smart array B140 It is a requirement to be able to present the individual disks directly to the OS as with an HBA/JBOD?


  2. Hello Barneaud,

    This is a good move in the right direction.
    S2D is similar and even better than VSA. No VMs are required to create HA storage compare to VSA.
    The overhead is lower, S2D is faster and you can start with 2 Nodes full HA.
    HP DL380 Gen9 with Smart array B140 can do the Job. HBA 240 is also supported.


  3. ok thanks,
    Still have problem to get drives to be recognize as SAS in Windows 2016. I changed HP P440ar in HBA Mode.
    Running this powershell command : Get-physicalDisk -Canpool $true | Sort Model show that BusType is still RAID and not SAS, witch if I understood well is not compatible with S2D. Is there any workaround?


  4. Prior to configuring Microsoft Storage Spaces using Windows Server 2016, it is mandatory to install the Service Pack for ProLiant (SPP) dated October 2016 or later. This SPP includes the latest firmware and drivers required.

    Those adapters are fully supported by HP with Microsoft Storage Spaces.
    HPE H240 12Gb 2-ports Internal Smart Host Bus Adapter
    HPE H240ar 12Gb 2-ports Internal Smart Host Bus Adapter
    HPE H241 Smart Host Bus Adapter
    HPE Smart Array P741m controller

Let me know what you think, or ask a question...

error: Alert: The content of this website is copyrighted from being plagiarized! You can copy from the \'Code Blocks\' in \'Black\' by selecting the Code. Thank You!