In block-based storage implementations, the file system is managed by the host, not the array. Because of this, the array does not typically know when a file has been deleted or moved from a storage volume and therefore does not know when to release the space. This behavior is especially detrimental in thinly-provisioned environments (which today is nearly ubiquitous) where that space could be immediately allocated to another device/application or just returned to the pool of available storage. Space consumed by files that have been deleted or moved is referred to as “dead space”.
For data reduction all-flash-arrays like the FlashArray, it is of particular importance to make sure that this dead space is reclaimed. If dead space is not reclaimed the array can inaccurately report how much space is being used, which can lead to confusion (due to differing used space reporting from the hosts) and premature purchase of additional storage. Therefore, reclaiming this space and making sure the FlashArray has an accurate reflection of what is actually used is essential.
An accurate space report has the following benefits:
- More efficient replication since blocks that are no longer needed are not replicated.
- More efficient snapshots, blocks that are no longer needed are not protected by additional snapshots.
- Better space usage trending, if space is updated to be accurate frequently it is much easier to trend and project actual space exhaustion. Otherwise, dead space can make it seem that capacity is used up far earlier than it should be.
The feature that can be used to reclaim space is called Space Reclamation, which uses the SCSI command called UNMAP. UNMAP can be issued to underlying device to inform the array that certain blocks are no longer needed by the host and can be “reclaimed”. The array can then return those blocks to the pool of free storage.
Ensuring that space is reclaimed on a regular basis is a primary best practice for using the FlashArray in VMware environments. Read on for details.