The use of mount points for Exchange is becoming more common place in many installations. Some customers feel the best implementation of mount points consists of a small root disk with mount points created from folders on that disk.
For example, I may have a Drive L: that is 10 megs and I may create 4 folders on this drive (Database1 / Database2 / Database3 / Database4). I will then create mount points utilizing the folders created from the L drive.
There are certain process in Exchange that often check for free drive space prior to performing certain operations. Unfortunately these processes are not necessarily mount point aware – therefore they end up querying the free drive space of the lettered volume rather than the mount point. One of these process is MSSearch.
MSSearch by default creates a catalog data folder co-located with each EDB file. In our example above the catalog data folder and the edb file would be in L:\Database1 (where Database1 is the mount point). In this this case the L drive has 10 megs free space but the Database1 mount point has 1.5 terabytes of free space. When MSSearch attempts to initialize the initial catalog this operation fails as the drive space reported by the disk L is not sufficient (even though there is plenty of space where the actual catalog is stored).
Here is an example of some events you may see when this occurs.
Log Name: Application Source: MSExchange Search Indexer Date: 6/14/2010 12:11:20 PM Event ID: 104 Task Category: General Level: Error Keywords: Classic User: N/A Computer: server.company.com Description: Exchange Search Indexer failed to enable the Mailbox Database DATABASE(GUID = 58c0ed8a-dbfc-4d55-b265-8a80f1dc477b) after 1 tries. The last failure was: System.ComponentModel.Win32Exception: Unable to SetProperty FTE_PluginList on catalog ExSearch-58c0ed8a-dbfc-4d55-b265-8a80f1dc477b-26fc1c62-d3e8-4711-b3c9-3bb0b32aec0a. Error = -2147215320 at Microsoft.Exchange.Msfte.CFTEAdmin.SetProperty(CatalogState catalogInfo, PropertyScope propertyScope, String propertyName, Object propertyValue, Boolean throwOnFailure) at Microsoft.Exchange.Msfte.CFTEAdmin.CreateCatalog(CatalogState catalogInfo) at Microsoft.Exchange.Search.Globals.CreateCatalog(CatalogState state, String reason) at Microsoft.Exchange.Search.Globals.RecreateCatalogAndPropertyStore(CatalogState catalogInfo, String reason) at Microsoft.Exchange.Search.CatalogState.CreateNew(String reason) at Microsoft.Exchange.Search.CatalogState.Reset(String reason) at Microsoft.Exchange.Search.CatalogState.HandleMountCatalogException(Exception exception) at Microsoft.Exchange.Search.Globals.CheckAndInitializeCatalog(CatalogState catalogInfo) at Microsoft.Exchange.Search.Driver.ProcessNewCatalogInternal(CatalogState catalog, List`1 mdbsToCrawl, Int32& numberOfDisabledMDBs). It will retry after 10 minutes.
Log Name: Application Source: ExchangeStoreDB Date: 6/14/2010 12:12:51 PM Event ID: 222 Task Category: Database recovery Level: Error Keywords: Classic User: N/A Computer: server.company.com Description: At '6/14/2010 11:12:50 AM' the Microsoft Exchange Information Store Database ‘DATABASE' copy on this server experienced a corrupted search catalog. The error returned by failover was "There is only one copy of this mailbox database (DATABASE). Automatic recovery is not available.". Consult the event log on the server for other "ExchangeStoreDb" and "MSExchange Search Indexer" events for more specific information about the failures.
The important information is actually contained in the first event – the error code –2147215320. This error code translates to CI_E_CONFIG_DISK_FULL.
To resolve this issue you can:
Once this is done restarting the MSSearch services may be necessary so that initial catalog creation can occur.
Do you know if this design flaw will be fixed in the future? Thanks, Christian
I do not foresee this changing in Exchange 2010. In the cases I see it's generally uncommon to have such a small root LUN that this issue even arises.
Tim where is the best place to translate the error code to something readable?
Had an issue the other week spit back and error code which had not clue what it meant. Turned on pipelogging for the user account, and it turned out to be the catergories on the meeting invite were causing issues. Cleared the categories and the meeting invite worked fine after that. Be nice to be able to translate some of these error codes.
I was also wondering if this had been bugged. Thanks for the information. What's the threshold for free space with this - we've got our mount point hosts configured as 1GB.
Yes - it has been bugged but at this time will not be fixed in the product. 1 GB should be fine as long as you do not start using it for some temporary file storage.
Thanks TIM for the info, as always your blog is great for info.
Can you although specify the minimum size for a mount point for MSSearch to work correctly ?
I do not have a recommendation on a minimum size. I have had customers with sizes around 1 gig that have not had this issue.