Enabling Spotlight for Xsan

Spotlight has had a pretty checkered past with Xsan. But things are looking a little better and if you want to try enabling it again, once you’ve fully updated to 2.2 you can do so without too much fanfare. Simply locate the config file for the name of the volume you wish to enable spotlight for, which is in /Library/FileSystems/Xsan/config and is named with the name of the volume followed by a .cfg file extension. Once located, open the file in your favorite text editor (ie – pico, vi, etc). Then, locate the entry for EnableSpotlight, which should be set to No. Change the No to a Yes.
You can also enable two different levels of searching:

FsSearch, which only searches file system attributes (names, etc)

ReadWrite, which indexes content on the SAN the same way spotlight behaves for normal direct attached volumes.

To enable either, simply add a line below EnableSpotlight that reads similar to the following (based on the level of indexing you are comfortable with), starting with SpotLightSearchLevel and ending with the type of search you would like to perform:

SpotLightSearchLevel FsSearch

Or

SpotLightSearchLevel ReadWrite

Once enabled restart the service. While you shouldn’t, you may need to run mdutil (although you shouldn’t have to any more, but I’ve had to a couple of times) to get the spotlight indexing process kicked off. To do so run the mdutil command with the -E option, as you can see here (assuming a volume name of NAMEOFVOLUME):

mdutil -E /Volumes/NAMEOFVOLUME

You can then check the status of the indexing process using the -s option with mdutil, as follows(assuming a volume name of NAMEOFVOLUME):

mdutil -s /Volumes/NAMEOFVOLUME

If for some arbitrary reason spotlight chooses not to index a folder (happens with Xsan in my experience), then you can use the mdimport command with the -f option:

mdimport -f /Volumes/NAMEOFVOLUME/MYPROJECTNAME

There will also be times when indices are built either using the wrong UID or where a failover during indexing causes corruption (my best educated guess as to why this happens). When it happens, simply RM the .Spotlight-V100 directory of the volume as you can see here:

rm -ri /Volumes/NAMEOFVOLUME/.Spotlight-V100

Also keep in mind that the same rules of what does not get indexed apply to Xsan volumes that apply to direct attached volumes. Namely, the following will be skipped:

Hidden files (including those with names that contain leading periods).

Invisible files (those using the kIsInvisibleFinder flag).

Files that have been nested inside hidden or invisible folders.

Finally, if you wish to programmatically check that files have been indexed, you can use the mdfind command. This is especially helpful when comparing the results from an Xsan client and the current metadata controller in your environment.