Papa Labs

Exchange 打完 CU 之后 Outlook 搜索全挂:Content Index 重建实录(含吓出冷汗的插曲)

给 Exchange 2013 装完 CU23 和当月的 Security Update 之后,陆续有用户报障:Outlook 搜索没有结果(老版本 Outlook 客户端为主,走的是服务端搜索)。

确认问题

Get-MailboxDatabaseCopyStatus * | ft -auto

ContentIndexState 一列——所有数据库全是 Failed。CU 更新动过搜索组件之后索引损坏,这在 Exchange 2013 时代是个知名故障。

Content Index 重建四步流程,标注"服务消失"惊魂点

重建流程全景——红色虚线框就是让人心跳漏一拍的地方

重建 Content Index

标准做法(重建期间搜索不可用、服务器负载会升高,安排在非办公时间):

# 1. 停掉两个搜索相关服务
Stop-Service MSExchangeFastSearch
Stop-Service HostControllerService

# 2. 把数据库目录下的 content index 文件夹删掉(或改名保底)
#    文件夹名是一串 GUID_Single 形态,在 .edb 同级目录

# 3. 重启服务,索引会自动开始重建
Start-Service MSExchangeFastSearch
Start-Service HostControllerService

插曲:服务消失了

按流程停掉 HostControllerService 之后,惊悚的事情发生了——这个服务从服务列表里找不到了,也起不来了

一瞬间怀疑自己把 Exchange 搜索弄坏了。查了一圈才确认:这是正常现象。Search Host Controller 服务停止后会短暂地从某些视图里消失,这是它的设计(社区里一堆人被同样吓过)。解法毫无技术含量:去 services.msc 图形界面里找到它,手动点启动,就回来了。

重建过程的观察

服务起来之后再查 ContentIndexState,短时间内会显示 Unknown 甚至继续 Failed——别慌,去数据库目录看:新的索引文件夹已经在重建生成中。等它跑完(视邮箱量,几十分钟到几小时),状态会变回 Healthy,用户搜索恢复。

教训

  1. CU/SU 更新后的 checklist 里加一条Get-MailboxDatabaseCopyStatus 看一眼 ContentIndexState,别等用户来报「搜索坏了」;
  2. 重建索引期间搜索全程不可用——沟通先行,安排窗口;
  3. 「服务消失」这种表象要先查证再动手,当时如果慌了去重装搜索组件,才是真正的灾难;
  4. 状态显示 Failed/Unknown 不代表重建没在跑,以索引文件夹的实际变化为准
← 全部文章