In an environment managed by a vCenter Server System four storage filters are provided by vSphere that determine the affect the action of the vCenter Server when scanning storage. These filters by default prevent all storage that is currently in use being found which I think we can agree is a good practice by default. However, you may have a use case where the default behaviour does not satisfy your requirements.
So what are these filters, and their default behaviour:
- RDM filter – This will filter out LUNs that have been claimed by an RDM on any host system managed by the vCenter Server.
- VMFS filter – This will filter out LUNs that been claimed by and VMFS formatted on any host system managed by the vCenter Server.
- Host rescan filter – When a VMFS volume is created, all host systems on a vCenter Server will perform an automatic rescan.
- Same host and transport filter – This will filter out LUNS that cannot be used as VMFS datastore extent due to host or storage incompatability.
As discussed by default the storage filters are enabled (setting value set to ‘True’) and are not listed in the vCenter Server advanced settings. So what are the keys corresponding each filter:
- RDM filter – config.vpxd.filter.rdmFilter
- VMFS filter – config.vpxd.filter.vmfsFilter
- Host rescan filter – config.vpxd.filter.hostRescanFilter
- Same host and transport filter – config.vpxd.filter.SameHostAndTransportsFilter
These settings can be modified by using the vSphere Web Client and browsing to Manage > Settings > Advanced Setting and adding the above keys and your corresponding value.
Alternatively, you could connect to the vCenter Server System using PowerCLI and invoke the following cmdlet, where the RDM Filter has been configured to be ‘False’. If you require to modify a different storage filter replace the name value with the corresponding key as described above.
New-AdvancedSetting -Entity $global:DefaultVIServer -Name config.vpxd.filter.rdmFilter -Value False
In what circumstances would we want to modify the behaviour of each filter? Well here are a couple of use cases:
Microsoft Cluster Server
In order to configure a SCSI-3 quorum disk so that the RDM can be presented to host systems the RDM filter value would be required to be set to ‘False’.
Automating the provisioning of a large number of datastores
In this scenario you may be creating a large number of datastores and therefore the default behaviour would invoke an automatic rescan of each host system following the creation of each datastore, and therefore can be considered to be an inefficient use of resources. In this example, set the Host rescan filter to ‘False’, the rescan of each host system should be the final operation in your automated workflow or rescan the host systems manually after creation.