Exchange 存储的 ESEUTIL 碎片整理是否也会对其执行完整性检查/修复?

Exchange 存储的 ESEUTIL 碎片整理是否也会对其执行完整性检查/修复?

今天早上,store.exe 以某种方式出现问题,导致我们不得不重启 Exchange 服务器。服务器重新上线后,没有任何错误或问题,所有事务日志都成功重播,所有存储都正常挂载。在我看来,这只是一次随机崩溃;然而,我们的顾问怀疑这是由其中一个存储损坏引起的。也许他是对的,因为他的经验比我丰富得多,但这不是重点。

为了修复可疑错误,他计划运行 ESEUTIL 碎片整理程序(通过 PerfectDisk)来修复它们,他声称这也可以修复所有存在的错误。

据我所知,碎片整理、验证和修复是 3 个独立的操作,并且碎片整理并不意味着任何类型的完整性检查。这是正确的吗?对可能已损坏的数据库直接运行碎片整理是否存在危险?

编辑:

这是事件日志中的第一个错误,它表明我们遇到的问题的开始。有人知道它可能表明什么吗?

Event Type: Error
Event Source:   Microsoft Exchange Server
Event Category: None
Event ID:   1000
Date:       11/23/2011
Time:       8:15:47 AM
User:       N/A
Computer:   SERVER
Description:
Faulting application exsp.dll, version 6.5.7638.1, stamp 430e735b, faulting module kernel32.dll, version 5.2.3790.4480, stamp 49c51f0a, debug? 0, fault address 0x0000bef7.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Data:
0000: 41 00 70 00 70 00 6c 00   A.p.p.l.
0008: 69 00 63 00 61 00 74 00   i.c.a.t.
0010: 69 00 6f 00 6e 00 20 00   i.o.n. .
0018: 46 00 61 00 69 00 6c 00   F.a.i.l.
0020: 75 00 72 00 65 00 20 00   u.r.e. .
0028: 20 00 65 00 78 00 73 00    .e.x.s.
0030: 70 00 2e 00 64 00 6c 00   p...d.l.
0038: 6c 00 20 00 36 00 2e 00   l. .6...
0040: 35 00 2e 00 37 00 36 00   5...7.6.
0048: 33 00 38 00 2e 00 31 00   3.8...1.
0050: 20 00 34 00 33 00 30 00    .4.3.0.
0058: 65 00 37 00 33 00 35 00   e.7.3.5.
0060: 62 00 20 00 69 00 6e 00   b. .i.n.
0068: 20 00 6b 00 65 00 72 00    .k.e.r.
0070: 6e 00 65 00 6c 00 33 00   n.e.l.3.
0078: 32 00 2e 00 64 00 6c 00   2...d.l.
0080: 6c 00 20 00 35 00 2e 00   l. .5...
0088: 32 00 2e 00 33 00 37 00   2...3.7.
0090: 39 00 30 00 2e 00 34 00   9.0...4.
0098: 34 00 38 00 30 00 20 00   4.8.0. .
00a0: 34 00 39 00 63 00 35 00   4.9.c.5.
00a8: 31 00 66 00 30 00 61 00   1.f.0.a.
00b0: 20 00 66 00 44 00 65 00    .f.D.e.
00b8: 62 00 75 00 67 00 20 00   b.u.g. .
00c0: 30 00 20 00 61 00 74 00   0. .a.t.
00c8: 20 00 6f 00 66 00 66 00    .o.f.f.
00d0: 73 00 65 00 74 00 20 00   s.e.t. .
00d8: 30 00 30 00 30 00 30 00   0.0.0.0.
00e0: 62 00 65 00 66 00 37 00   b.e.f.7.
00e8: 0d 00 0a 00               ....    

答案1

如果脱机碎片整理eseutil遇到数据库中的页面级损坏,则使用会失败,因为。您必须使用选项/p(rePair) 来丢弃损坏的页面。

逻辑层面的数据损坏(认为是数据库中“数据”的损坏,而不是数据库“结构”的损坏)无法通过 修复eseutil。该isinteg工具可以查找 Exchange 2007 版及以上版本数据库中的逻辑不一致问题。在 Exchange 2010 中,该工具isinteg被替换为new-MailboxRepairRequestcmdlet (更多详细信息请参阅 Exchange 团队博客)。

话虽如此,我对您的顾问的建议还是很关心。您是否在 ESE 或 Exchange 相关服务的应用程序事件日志中看到指示任何数据库损坏的事件?一般来说,Exchange 不会“随机崩溃”,硬件驱动程序或硬件本身的问题似乎比 Exchange 的问题更可能是原因。此外,由于日志重播没有问题,我发现您不太可能遇到页面级损坏。

最后,如果您正在处理页面级损坏,那么仅清理损坏并不是解决方案。您需要找到导致损坏的根本原因(硬件故障等)并将其消除。做任何其他事情都只会让您面临持续的风险。

离线碎片整理本身并不是什么大风险。您必须在离线碎片整理完成后立即进行完整备份,因为所有之前的增量和差异备份都无法恢复(因为新数据库就是一个全新的数据库)。显然,在碎片整理期间,用户也无法访问您的服务器。

在我开始花钱“修复”它之前,我会详细研究今天早上发生的事情,并得出根本原因的结论(或至少是一个非常可能的假设)。

我最近遇到过一个案例,一台 Exchange Server 2003 计算机无法获取 VSS 快照,并且在尝试备份期间报告了各种 JET 错误。我选择在另一台计算机上启动新的 Exchange 安装,将所有用户邮箱移至新计算机,然后删除原始服务器上有问题的数据库并允许创建新的数据库。在我们进行了一些压力测试并验证原始服务器正常运行后,我们将所有邮箱移回原位。我更喜欢您描述的情况中的该策略(如果我有足够的事件日志消息表明原始 Exchange Server 计算机的邮箱数据库中存在真正的“损坏”)。

编辑:

您上面发布的条目是 Microsoft Search 的 Exchange 提供程序中的错误(它为 Exchange 数据库创建全文索引)。我很想了解更多后续情况,以及系统事件日志中紧接在此事件之前的任何事件。服务器计算机的任何卷上是否都存在磁盘空间不足的情况?

答案2

ESEUTIL 碎片整理并非专门用于大规模 Exchange 数据库修复。碎片整理功能是通过创建新的压缩数据库文件来回收数据库中的可用空间并优化数据库性能。

运行碎片整理时,如果发现任何不一致或问题,它还可能会对数据库执行某些修复。这是整体碎片整理过程的一部分,可以修复小问题。

如果您的 Exchange Server 数据库已损坏,建议首先运行 ESEUTIL /mh 命令来检查数据库的完整状态。如果发现,数据库处于脏状态。稍后,您可以根据数据库损坏情况使用 ESEUTIL /P 或 ESEUTIL /R 命令。在尝试任何修复操作之前,请确保备份了数据库。

我建议咨询微软支持以确保正确的恢复步骤。

您可以参考以下 Microsoft 文章:

https://techcommunity.microsoft.com/t5/exchange-team-blog/repairing-exchange-databases-with-eseutil-when-and-how/ba-p/610276

https://social.technet.microsoft.com/wiki/contents/articles/53450.how-to-check-exchange-database-health.aspx

相关内容