This behavior occurs because deleting files inside Windows does not directly free physical capacity on a thin-provisioned SAN unless the full reclamation path is working end to end.
Windows thin provisioning relies on space reclamation through delete notifications, file system trim, or a storage optimization operation. When a large file is deleted, Windows converts the delete or trim notification into an UNMAP request. The storage stack then translates that request into SCSI UNMAP or ATA TRIM only if the storage device reports that it supports UNMAP/TRIM correctly. If the device capability is not reported accurately, compatibility issues can occur.
Supported reclamation triggers in Windows are:
- File deletion.
- File system level trim.
- A storage optimization operation.
For thin-provisioned LUNs, storage space reclamation can be performed manually or automatically by file delete notification or by the scheduler of the Storage Optimizer utility.
To manually trigger reclamation from Windows, run an elevated PowerShell session and use:
Optimize-Volume -DriveLetter X -ReTrim -Verbose
Replace X with the target volume drive letter.
To verify that delete notifications are enabled, check:
fsutil behavior query DisableDeleteNotify
For ReFS, the value should be 0 for delete notifications to be enabled.
For the SAN to actually reclaim backend pool capacity, these conditions must also be true:
- The LUN must be thin provisioned.
- The storage array must be configured to accept incoming UNMAP commands.
- The storage device must correctly advertise UNMAP/TRIM capability to Windows.
- If MPIO is used, the vendor DSM/drivers must be current so reclamation commands are not dropped in the path.
If those conditions are met, Windows can reclaim space either automatically after deletes or through scheduled/manual optimization.
One important caveat: on Windows 8, Windows 8.1, Windows Server 2012, and Windows Server 2012 R2, TRIM and UNMAP activity on one thin-provisioned volume can affect I/O on other volumes because intermittent I/O stalls may occur when file-delete notifications are enabled.
Also note that if capacity on the array is being consumed by snapshots or thin clones rather than live file system allocation, UNMAP/TRIM will not reduce that snapshot-held space.
References: