Run the storage pool optimization manually. Optimize-StoragePool rebalances Spaces allocations in a pool to disks with available capacity, which is the supported way to redistribute slabs after adding capacity or changing fault domains. Note that this operation is I/O intensive.
Use PowerShell:
Get-StoragePool
Optimize-StoragePool -FriendlyName <StoragePoolName>
If the pool name is not known, Get-StoragePool returns it first. In S2D and Failover Cluster environments, Storage module cmdlets operate at the cluster level across all servers in the cluster.
For an S2D pool, this pattern is also documented:
Get-StoragePool S2D* | Optimize-StoragePool
After starting the optimization, monitor progress with:
Get-StorageJob
Recommended checks if capacity still does not rebalance as expected:
- In Server Manager or PowerShell, verify the health and operational states of the storage pools and other S2D components.
- In Event Viewer, review Storage Spaces Direct warnings or errors.
- Verify drive firmware is current and storage controller and drive drivers are updated to supported versions.
- If changes are made, test performance and compare with earlier measurements.
If the pool uses HDD drives, manual defragmentation is listed as a maintenance step. Do not do this for SSD pools, because defragmentation can reduce SSD lifespan and performance.