Exchange 2007 SP1 和 SP2 中的联机维护数据库扫描

 

适用于: Exchange Server 2007 SP2, Exchange Server 2007 SP1

上一次修改主题: 2009-05-20

在 Microsoft Exchange Server 2007 Service Pack 1 (SP1) 和 Exchange 2007 Service Pack 2 (SP2) 中,可以使用三个注册表子项启用和配置“联机维护数据库扫描”。如果启用了联机维护数据库扫描,则 Exchange 执行下列步骤:

  1. 读入数据库页面。

  2. 计算数据库页的校验和。“计算校验和”是 Exchange 通过计算一个取决于数据库内容的值(“校验和”)来检查数据库完整性的过程。

  3. 如果已配置,则对数据库页执行页面清零。“页面清零”是在流式备份结束时执行的一个过程,此时会用为清零选择的字符覆盖数据库中的数据。这使得无法通过传统手段恢复数据。

如果使用本主题中说明的过程为联机维护数据库扫描配置服务器,则将页面清零过程与计算校验和过程绑定在一起(也称为“附加”),以便有效地将读取输入/输出 (I/O) 负载减半。

本主题将介绍以下内容:

  • Exchange 数据库的计算校验和与页面清零过程,适用于 Exchange 2007 正式发布 (RTM) 版本和 Exchange 2007 SP1 和 SP2。

  • 可以用来启用和配置联机维护数据库扫描的注册表子项。

  • 可以用来在联机维护数据库扫描期间分析系统行为的性能计数器。

  • 可以用来监视联机维护数据库扫描的事件。

Exchange 2007 RTM 中的计算校验和与页面清零

在 Exchange 2007 RTM 中,有多个方案未通过计算校验和来自动验证数据完整性,且不会发生页面清零。

这些方案包括:

  • 仅从群集连续复制 (CCR) 或本地连续复制 (LCR) 组织中存储组的被动副本创建备份。如果仅从被动副本创建备份,则从不计算数据库主动副本的校验和。

  • 使用 Microsoft 数据保护管理器 (DPM) 创建 Exchange 数据的块级差异备份。在此方案中,仅计算正在备份的已更改数据的校验和。不计算未发生更改的数据的校验和。因此,不能肯定数据的完整性,因为数据可能随着时间的推移已被损坏(通常称为“比特损坏”的状态)。

  • 在 CCR 或 LCR 组织中使用基于卷影复制服务 (VSS) 的备份时。在此方案中不会发生页面清零,因为仅对流式备份启用了该功能。

  • 在 CCR 或 LCR 组织中使用流式备份时。在此方案中,数据库主动副本上的页面清零活动不生成事务日志文件。如果没有事务日志文件,就无法将这些更改复制到数据库的被动副本。

计算数据库的校验和

如前面所述,计算校验和是通过计算一个取决于数据库内容的值(“校验和”)来检查数据库完整性的过程。校验和与数据一起存储,Exchange 使用此值来确保数据未被损坏。在 Exchange 2007 SP1 之前,联机完整流式备份期间会计算整个数据库的校验和。还可能计算数据库的完整 VSS 快照的校验和。(尽管计算的是副本的而不是实际生产数据库的校验和。)但是,随着 CCR 和 LCR 的改进以及 DPM 的引入,不再适合使得此方法。

通过 CCR 和 LCR 计算校验和

对于 CCR 和 LCR,Exchange 数据库有两个副本,您可以选择备份源副本还是目标副本。所备份的副本就是计算其校验和的副本(通过流式处理或通过 VSS)。不计算另一个副本的校验和。

在 Exchange 2007 SP1 之前,安排校验和的唯一方法是运行完整备份。有两种常见的方法可以解决此问题:

  • 每周移动群集邮箱服务器,以便将备份移动到备用副本。此方法不符合当前的需要,因为它:

    • 要求备份应用程序是感知 CCR 的。

    • 增加管理复杂程度。

    • 增加停机时间。(此方法不可能实现 99.999 正常运行时间。)

    • 不适用于 LCR。

  • 挂起复制和重播,然后通过使用 Exchange Server 数据库实用程序 (Eseutil) 计算数据库的校验和。此方法不符合当前的需要,因为群集在此期间无法从故障中恢复,且必须手动编写解决方法的脚本。实际上,只能定期计算一个副本的校验和,而这样会导致群集中某个数据库副本的完整性更加不确定。理想情况下,应在数据库的两个副本都损坏之前尽早发现错误。

在 Exchange 2007 SP1 中引入联机维护数据库扫描后,就不再受限于这些解决方法了。

通过 DPM 计算校验和

Microsoft 数据保护管理器 (DPM) 版本 2 支持备份和还原 Exchange 2007 数据库。DPM 可以通过执行块级差异同步创建完整的“人工” VSS 备份。此完整的人工备份仅复制自上次完整备份以来更改的块(这样就缩短了备份周期)。完整的人工备份的一个副作用是,不计算未更改的数据库页面的校验和。因此,在很长的时间段内可能不计算某些数据库页面的校验和。对于块级差异备份,无法保证原始副本是可靠的且未损坏。管理员仅知道备份副本已经过验证。

对数据库进行页面清零

页面清零(也称为“清零”或“页面擦除”)是流式备份结束时执行的过程,会用为该目的选择的字符覆盖数据库内的数据。这使得无法通过传统手段恢复数据。从 Exchange 服务器中删除一个项目时(例如,用户从其邮箱中删除邮件时),如果禁用了已删除邮件的保留功能,则将该项目占用的页面标记为未使用。如果启用了页面清零,则在联机备份期间使用所选的内容来覆盖包含在未使用页面中的数据。备份每个数据库页面时,将在硬盘中使用所选字符一次性覆盖该数据库页面。备份完成后,已删除数据存储在备份副本上,但是它不再包含于数据库中,且无法通过常规方法进行恢复。

在 Exchange 2007 RTM 中,通过设置“备份期间将数据库清零”注册表项,可以在执行流式联机备份时将删除的数据库页面清零。此方法非常有效。但此方法不再适用于 VSS 备份和 CCR,因为 VSS 备份不提供将已删除页面清零的方法。

note注意:
最佳做法是,如果要对数据库启用页面清零,应在创建数据库时启用。如果未在创建数据库时配置页面清零,那么初次对数据库运行页面清零时,对服务器的性能会有明显的影响。完成数据库的第一遍页面清零,会大大降低性能影响。可以使用“限制”来限制第一个页面清零过程的性能影响

用连续复制进行页面清零

在 Exchange Server 2003 和 Exchange 2007 中,您可以使用流式备份在 VSS 备份需要页面清零时扩充 VSS 备份。在 Exchange 2007 中引入 CCR 和 LCR 后,引发了另一个问题:页面清零会修改数据库,而不生成对应的事务日志。这意味着在 CCR 和 LCR 组织中,未在数据库之间复制页面清零活动。在 Exchange 2007 RTM 中,若要确保页面清零对 CCR 有效,必须执行下列一项任务:

  • 对每个副本运行流式备份。这涉及在节点之间移动 CCR 群集的 CCR 邮箱服务器。

  • 将目标数据库脱机,并使用 Eseutil 运行 eseutil /z 命令。

但是,处于对安全性和遵从性方面的更多考虑,这些选项不再能满足要求。在 Exchange 2007 SP1 和 SP2 中,页面清零被移动到后台进程,并将生成可以传送的日志以便将页面清零复制到 CCR 和 LCR 环境以及使用备用连续复制 (SCR) 的环境中的数据库副本。

note注意:
在联机维护期间临时启用页面清零会导致生成更多的日志。在启用该功能一段时间之后,日志生成活动将回到启用页面清零之前的水平。

对 Exchange 2007 SP1 和 SP2 进行的联机维护数据库扫描

如果在 Exchange 2007 SP1 和 SP2 中启用了联机维护数据库扫描,则 Exchange 读入数据库页面,计算其校验和,并对它们执行页面清零操作(如果按此方式配置)。所有这些步骤都是在后台执行的。

Exchange 2007 SP1 和 SP2 中的联机维护数据库扫描具有下列特性:

  • 默认情况下不启用联机维护数据库扫描。因为数据库扫描会影响服务器性能,所以必须通过向注册表添加子项手动选择启用它。有关详细信息,请参阅本主题后面部分中的“使用注册表项启用和配置联机维护数据库扫描”。

  • 可以同时启用计算数据库校验和与页面清零,或者仅启用前者。

  • 流式备份过程不包括数据库页面清零与计算校验和。这两项操作都是在从磁盘检索某个页面时对该页面执行的。在一项数据库扫描任务中,只要启用了页面清零与联机计算校验和中的任一个,即会同时调用这两项操作。

  • 数据库扫描以与联机碎片整理类似的方式跟踪其进度。它按照固定的时间间隔更新其进度,以便在中断后进行恢复时可以从停止位置继续运行。

  • 只能在服务器级别启用数据库扫描。不支持在存储组级别或数据库级别启用数据库扫描。

  • 数据库扫描提供数据库页面清零机制,用于在 CCR 和 LCR 的数据库副本之间复制更改。

  • 数据库扫描要求页面清零事务经历常规的事务日志记录过程,以便更改可以复制到 CCR 和 LCR 副本。

  • “限制”按指定的毫秒数在 I/O 的每 320 千字节 (KB) 之间中断联机维护数据库扫描。此过程允许服务器执行其他任务。可以使用限制来降低联机校验和过程对服务器性能的影响,例如在工作日内运行联机维护数据库扫描时。

  • 如果启用了联机维护数据库扫描,则在数据库扫描过程和数据库联机碎片整理过程之间拆分对特定数据库安排的联机维护窗口。例如,如果安排了八个小时的联机维护窗口,则大约四个小时用于数据库扫描任务,另外四个小时用于联机碎片整理任务。

使用注册表项启用和配置联机维护数据库扫描

下表列出可以用来启用和配置联机维护数据库扫描的注册表子项。这些子项必须由管理员添加到注册表。安装 Exchange 时,默认情况下不将它们添加到注册表。每个子项的路径是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem

Caution警告:
UNRESOLVED_TOKEN_VAL(exRegistry)

有关使用这些注册表项启用和配置联机维护数据库扫描的详细信息,请参阅如何在 Exchange 2007 SP1 和 SP2 中配置联机维护数据库扫描

任务 注册表子项 类型 说明

启用联机维护数据库校验和计算

联机维护校验和

REG_DWORD

此注册表子项可在一个联机维护过程内启用数据库校验和计算。如果注册表中不存在此子项(或者如果存在,但设置为 0),则不执行数据库校验和计算。

启用联机维护数据库页面清零

校验和过程中将数据库页面清零

REG_DWORD

此注册表子项启用数据库页面清零。如果注册表中不存在此子项(或者如果存在,但设置为 0),则在联机维护数据库扫描期间不执行页面清零。

启用联机维护数据库限制

限制校验和

REG_DWORD

此注册表子项用于指定服务器可以执行其他任务的限制间隔(I/O 每 320 KB 之间的毫秒数)。如果注册表中不存在此子项(或者如果设置为 0),则不使用限制。

用于监视联机维护数据库校验和计算与页面清零的性能计数器

下列各表列出可以用来与数据库扫描一起监视和分析系统性能的性能计数器。

note注意:
若要使用表中列出的性能计数器,必须启用扩展的可扩展存储引擎 (ESE) 性能计数器。有关如何启用扩展的 ESE 性能计数器的信息,请参阅如何启用扩展的 ESE 性能计数器

用于监视计算校验和性能的计数器

性能计数器 说明

MSExchangeDatabase\Online Maintenance (DB Scan) Pages Read/sec

此性能计数器提供联机维护数据库扫描期间从整个 Exchange 存储中的所有数据库读取数据库页面的速率。

MSExchangeDatabase==>Instances\Online Maintenance (DB Scan) Pages Read/sec

此性能计数器提供联机维护数据库扫描期间读取单个实例(如单个存储组)的数据库页面的速率。

用于监视页面清零性能的计数器

性能计数器 说明

MSExchangeDatabase\Online Maintenance (DB Scan) Pages Zeroed/sec

此性能计数器提供联机维护数据库扫描期间将整个 Exchange 存储中所有数据库的数据库页面清零的速率。

MSExchangeDatabase\Database==>Instances\ Online Maintenance (DB Scan) Pages Zeroed/sec

此性能计数器提供联机维护数据库扫描期间将单个实例(如单个存储组)的数据库页面清零的速率。

用于监视联机维护数据库扫描的事件

下表列出可以用来在事件查看器中监视联机维护数据库扫描的事件。

有关详细信息,请参阅如何在 Exchange 2007 SP1 和 SP2 中监视联机维护数据库扫描

事件 说明 来自事件查看器中应用程序日志的示例

事件 717:数据库校验和计算后台任务已启动。

此事件在数据库校验和计算启动后激发。

不适用

事件 718:数据库页面清零后台任务已启动。

此事件在数据库页面清零启动后激发。

不适用

事件 721:数据库校验和计算后台任务已完成。

此事件在数据库校验和计算完成后激发。它报告以下信息:

  • 所查看的页面的数量

  • 错误校验和的数量

  • 未初始化页面的数量

事件类型:信息

事件源:ESE

事件类别:联机碎片整理

事件 ID: 721

日期: 6/20/2007

时间:08:21:37 AM

用户:不适用

计算机:ExchangeServer01

说明:

MSExchangeIS (6544) 第三存储组:数据库“J:\sg3\priv3.edb”的联机维护数据库校验和计算后台任务已完成。此过程开始于 2007 年 7 月 9 日,共运行了 20 秒,需要在 1 天内调用 1 次。

操作摘要:

查看了 768 个页面

0 个错误校验和

268 个未初始化页面

事件 722:数据库页面清零后台任务已完成。

此事件在数据库页面清零完成后激发。它报告以下信息:

  • 所查看的页面的数量

  • 错误校验和的数量

  • 未初始化页面的数量

  • 自上次清零以来未更改的页面数

  • 已清零的未用页面的数量

  • 所查看的已用页面的数量

  • 清零的已删除记录的数量

  • 已清零的未引用数据块的数量

事件类型:信息

事件源:ESE

事件类别:联机碎片整理

事件 ID: 722

日期: 6/20/2007

时间:08:21:37 AM

用户:不适用

计算机:ExchangeServer01

说明:

MSExchangeIS (6544) 第三存储组:数据库“J:\sg3\priv3.edb”的联机维护数据库清零后台任务已完成。此过程开始于 2007 年 6 月 20 日,共运行了 369 秒,需要在 1 天内调用 1 次。操作摘要:

查看了 5850768 个页面

0 个错误校验和

72681 个未初始化页面

自上次清零以来 4379723 个页面未更改

33759 个未用页面已清零

查看了 1210764 个已用页面

57214 个已删除记录已清零

0 个未引用数据块已清零

事件 723:数据库校验和计算后台任务遇到错误。

此事件在数据库校验和计算后台任务遇到错误时激发。

不适用

事件 724:数据库页面清零后台任务遇到错误。

此事件在数据库页面清零后台任务遇到错误时激发。

不适用

事件 729:数据库页面清零已暂停。

数据库页面清零在联机维护期间由于缺少空闲的可刷新页面而暂停时,此事件激发。

事件类型:错误

事件源:ESE

事件类别:联机维护

事件 ID: 729

日期: 7/27/2007

时间:05:05:30 AM

用户:不适用

计算机:ExchangeServer01

说明:

MSExchangeIS (5828) SG15:下列数据库的联机维护页面清零在最近的 60 分钟内已暂停一次或多次:“v:\sg15\data\priv15test.edb”。ESE 数据库缓存不足够大,无法对列出的数据库同时运行联机维护页面清零。操作:为列出的数据库交错安排联机维护时间窗口,或增加服务器中的物理 RAM 量。

详细信息

有关系统中心 DPM 2007 的详细信息,请参阅系统中心数据保护管理器 2007

有关 DPM 的专门信息,请参阅 Exchange Server 工作组博客文章系统中心数据保护管理器 2007 Beta 2 随时可用!

note注意:
UNRESOLVED_TOKEN_VAL(exBlog)

有关联机维护数据库扫描和 CCR 的详细信息,请参阅规划群集连续复制