Subscribe
Accepted Solution

Invoke-NaHostVolumeSpaceReclaim - How does it work?

Hello,

I am writing a Powershell script to reclaim space on my Windows servers having iSCSI LUN.

My script calls the Powershell cmdlet "Invoke-NaHostVolumeSpaceReclaim".

The toolkit does not give many informations about this cmdlet and i am curious to understand how does it work.

Does this cmdlet execute "hole punching" on unused blocks?

Or
Does it contact directly NetAPP array to release blocks?

Rgds

Re: Invoke-NaHostVolumeSpaceReclaim - How does it work?

Hello, Rfranfeul.  If I understand your questions, the answer is yes to both.

This cmdlet uses Windows APIs to read the NTFS block table and uses in-band SCSI UNMAP commands to punch/release each free range.  Care is taken to ensure NTFS does not allocate space in the empty ranges during the operation.  I believe that WS2012 can do this natively, but earlier versions of Windows benefit from running this cmdlet regularly so that thin-provisioned LUNs remain space-efficient.

Re: Invoke-NaHostVolumeSpaceReclaim - How does it work?

Hi Clinton,

Thanks for your answer.

So, this cmdlet uses SCSI UNMAP commands to release unused blocks.

Is it the same mechanism for the Space Reclamer embedded in SnapDrive?

Rom

Re: Invoke-NaHostVolumeSpaceReclaim - How does it work?

There are multiple ways to unmap blocks in ONTAP, including the standard UNMAP, an earlier vendor-specific SCSI CDB, and out-of-band ONTAP APIs.  The cmdlet uses UNMAP but can fall back to the older CDB if necessary.  I don't know which method SnapDrive uses.  I do know that when I wrote the cmdlet, it was much faster than SDW, but that may have changed.

Re: Invoke-NaHostVolumeSpaceReclaim - How does it work?

Hi  Clinton,

Thanks for your reply.

Rom