Skip to main content
NetApp Knowledgebase

Windows SCSI unmap

 

Applies to

  • Data ONTAP in 7-Mode 8.1.3 and later
  • Clustered Data ONTAP 8.2 and later
  • ONTAP 9

Host Operating System

  • Windows Server 2012
  • Windows Server 2012 Core
  • Windows Server 2012 Hyper-V Guests
  • Windows Server 2012 R2
  • Windows Server 2012 R2 Core
  • Windows Server 2012 R2 Hyper-V Guests
  • Windows Server 2016

Answer

What is SCSI UNMAP?

The UNMAP command is an advisory SCSI command standardized within the T10 SCSI command set, which is used to reclaim space from blocks that have been deleted by the host OS, an application, or a virtual machine. T10 Thin provisioning technology broadly adopted in the current computer industry uses the UNMAP command to achieve improved storage utilization, flexible capacity planning, and non-stop storage provisioning service. The SCSI UNMAP command is used as an in-band operation by Windows 2012 and later.

Windows 2008 and earlier have no native in-band UNMAP support. However, vendor specific out-of-band space reclamation is available for Windows through such applications as SnapDrive for Windows and the Data ONTAP PowerShell Toolkit. The SnapDrive Space Reclaimer feature uses a vendor-specific hole-punching command for deleting space.

Since UNMAP is an advisory command, the SCSI specification allows the target the option of responding to the command with a success response without reclaiming all of the blocks in the specified range. Typically this is performed by storage arrays due to load on the system, and as such it is possible to not always reclaim all of the expected blocks during an UNMAP operation.

 

What versions of Windows and Data ONTAP use and work well with in-band SCSI UNMAP?

Data ONTAP utilizes SCSI in-band UNMAP in the following versions:

  • Data ONTAP in 7-Mode 8.1.3 and later
  • Clustered Data ONTAP 8.2 and later
  • ONTAP 9

Windows operating systems utilize in-band UNMAP in the following versions:

  • Windows Server 2012
  • Windows Server 2012 Core
  • Windows Server 2012 Hyper-V Guests
  • Windows Server 2012 R2
  • Windows Server 2012 R2 Core
  • Windows Server 2012 R2 Hyper-V Guests
  • Windows Server 2016

How to enable/disable the feature in Data ONTAP

For Data ONTAP 7-Mode in the 8.1 release family, no configuration change was required to enable SCSI UNMAP. Starting in Data ONTAP 8.2 7-Mode, a change was implemented that required the space_alloc option be enabled on a LUN for it to advertise support for, and accept SCSI UNMAP commands. Earlier than Data ONTAP 8.2, SCSI UNMAP was fully functional without space_alloc being enabled, even though not all of the supported T10 Thin Provisioning features were turned on, unless the option was set.

For clustered Data ONTAP, support for SCSI UNMAP begins in the 8.2 release family. For a LUN to advertise support for and accept SCSI UNMAP commands, enable the space-allocation option on LUNs which you expect to use this feature with.

Note: If you change the space_alloc or space-allocation setting AFTER provisioning a LUN to a Windows host, reboot the Windows host for it to discover the changed setting.

How to enable/disable the feature on Windows hosts?

Data ONTAP DSM 4.0 and later checks Data ONTAP versions, and will adaptively set in-band UNMAP accordingly. From the Windows MMC, locate the storage section 'Data ONTAP DSM Management', right-click and select Refresh.
For server Core editions, this is performed by running the PowerShell cmdlet 'get-sandisk' command.

When using Windows native DSM (MSDSM), use the corresponding Windows Host Utilities (WHU) version from the following:

  • Data ONTAP 8.0.x --> WHU 6.0.1
  • Clustered Data ONTAP 8.1.x --> WHU 6.0.1
  • Data ONTAP 8.1.0 - 8.1.2 in 7-Mode -->WHU 6.0.1
  • Data ONTAP 8.1.3 in 7-Mode -->WHU 6.0.2
  • Data ONTAP 8.2.x – in 7-Mode and clustered Data ONTAP --> WUHU 7.1
  • See the Interoperability Matrix Tool for recommendations specific to your configuration.

*** WHU 6.0.1 --> turns in-band UNMAP off

fsutil behavior query disabledeletenotify
DisableDeleteNotify = 1

*** WHU 6.0.2 --> turns in-band UNMAP on

fsutil behavior query disabledeletenotify
DisableDeleteNotify = 0

How to verify whether SCSI UNMAP is enabled or disabled on a Windows host?

Run the following command to verify the setting from the command prompt:
> fsutil behavior query disabledeletenotify

The returned value (DisableDeleteNotify = 1) means in-band UNMAP is disabled for the host.

DisableDeleteNotify = 0 means in-band UNMAP is enabled for the host.

Note: When connected to multiple Data ONTAP controllers with different SCSI UNMAP settings, it is recommended to disable in-band UNMAP.
You can verify that clustered Data ONTAP is receiving UNMAP commands by running the statistics command from the cluster shell CLI, and searching for the unmap_reqs counter. The following is an example:
clustername::*> statistics start -object lun -instance /vol/lun1/win2012-lun -vserver svm_name

Statistics collection is being started for Sample-id: sample_60
Note: Generate test SCSI UNMAP commands from the Windows host at this point:
clustername::*> statistics stop -sample-id sample_60

Statistics collection is being stopped for Sample-id: sample_60
clustername::*> statistics show -sample-id sample_60

Object: lun

Instance: /vol/lun1/win2012-lun

Start-time: 3/21/2016 14:23:18

End-time: 3/21/2016 14:23:56

Vserver: MySVM

Number of Constituents: 2 (complete_aggregation)

    Counter                                                     Value

    -------------------------------- --------------------------------

{SNIP}

    unmap_reqs                                                    100

Additional Information

Add your text here.