数据库上的邮箱在具有 System Center Operations Manager 的环境中遭到隔离

原文发布于 2012 年 6 月 28 日(星期四)

更新日期 2012/07/03:扩充了“变通方法”部分以包括更多详细信息。

我们要告知您最近在 CSS 中发现的一个问题,就是同一邮箱数据库上的许多邮箱似乎无缘无故地遭到隔离。查看应用程序日志时,您会看到许多 10018 事件,其文本包含以下信息。

日志名称: 应用程序
源: MSExchangeIS
事件 ID: 10018
任务类别: 常规
级别: 错误
描述:
用户 <guid>: /o=Contoso /ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=UserMailbox 的邮箱遭到隔离。在接下来的 6 个小时内,对于该邮箱的访问仅限于管理登录。

此外,对于每个由数据库空间故障诊断器隔离的邮箱,下面的事件 ID 5410 将显示在 Microsoft-Exchange-Troubleshooters/Operational 事件日志中:

日志名称: Microsoft-Exchange-Troubleshooters/Operational
源: 数据库空间
事件 ID: 5410
级别: 警告
关键字: 经典
描述:
数据库空间故障诊断器隔离数据库 <DBName> 中的邮箱 <guid>。

重要的是最后一句话。“数据库空间故障诊断器”。在部署了 System Center Operations Manager 的环境中,默认情况下都会有一个监视器检查数据库和日志卷的可用磁盘空间。此监视器使用 PowerShell 脚本 Troubleshoot-DatabaseSpace.ps1,默认情况下该脚本与 Exchange 2010 一同提供。若要了解有关 Troubleshoot-DatabaseSpace.ps1 脚本的详细信息,请参阅以下 TechNet 文章:

在命令行管理程序中使用 Troubleshoot-DatabaseSpace.ps1 脚本管理数据库日志增长
https://technet.microsoft.com/zh-cn/library/ff477617.aspx

System Center 团队最近发布了 Exchange 管理包的 Service Pack 2,这调整了运行脚本的超时值。在该 Service Pack 发布之前,超时值为 300 秒,而监视器设置为每 5 分钟执行一次。这意味着在许多大型组织中,脚本实际上注定要超时,导致其无法完成。在安装升级之后,新的超时值为 1200 秒。此外,监视器现在每 1 小时运行一次,而不是每 5 分钟。此更改的结果就是故障诊断器现在可靠地执行在 SP2 更新之前无法执行的代码。这导致故障诊断器发现信息存储 perfmon 计数器(故障诊断器用其确定数据库日志字节生成速率,perfmon 速率可以超过 1.0E+19 字节/小时)中的错误。当计算的每小时日志生成速率超过数据库或日志卷上剩余可用磁盘空间的容量时,故障诊断器开始隔离邮箱以阻止日志生成消耗所有的可用空间,导致数据库发生宕机。故障诊断器似乎在 perfmon 计数器具有错误值时符合该条件(perfmon 计数器每分钟更新一次,因此错误值的保留时间不应超过 1 分钟)… 所以这不会经常发生,但是会以稳定的概率发生。

这对您来说意味着什么?

是的,正如 TechNet 文章中所述,该脚本的主要功能是跟踪日志生成的速率,以及检查数据库和日志卷的可用磁盘空间。当脚本运行时,它使用一个存储 perfmon 计数器确定日志生成的速率,并计算当前速率是否会导致磁盘在限定的时间内(默认为 12 个小时)出现空间不足的情况,如果会,它将可能开始隔离邮箱(一次最多 150 个)。脚本随后在可用磁盘空间百分比下降到指定值之下时也可能隔离邮箱。使用的默认可用磁盘空间百分比值为 25%。为了在满足任一这些条件时隔离邮箱,–Quarantine 参数必须传递给脚本。

SCOM 2007 和更高版本使用的监视器默认使用 Quarantine 参数,并且没有选项可以支持选择更改此设置,因为管理包是密封的。这意味着如果数据库或数据库日志卷的可用磁盘空间低于 25%,以及如果计算的日志生成速率会在未来的 12 个小时内消耗完剩余的磁盘空间,那么将隔离负荷最大的用户。当数据库上有许多邮箱时,这可能意味着短时间内大量邮箱会遭到隔离。

您可以做什么?

很明显,隔离大量邮箱不是所需的行为,因为这会导致那些用户的运行中断,但是这仍然要比导致整个数据库因为缺乏磁盘空间而宕机(这会导致该数据库上所有用户的运行中断)要好。虽然隔离的邮件可以通过从注册表删除该邮箱的 GUID 手动进行释放 ,但这不是最佳的解决方案,因为下次监视器运行时,该邮箱可能再次遭到隔离。

在以下位置找到隔离的邮箱:

Hkey_Local_Machine\SYSTEM\CurrentControlSet\Services\MSexchangeIS\Servername\Private-<D Bguid>\Quarantined Mailboxes\ {Mailbox GUID}

我们希望您知道我们已经了解了此情况,并正在努力开发修补程序。 在我们找到最佳方法解决此问题之前,我们先告诉您一个可以用于阻止邮箱被隔离的变通方法。同时,为了帮助避免更多客户遇到此问题,我们暂时从下载中心删除了 Exchange 2010 SP2 管理包。

变通方法

创建一个替代以禁用检查可用磁盘空间的监视器。这将彻底阻止 Troubleshoot-DatabaseSpace.ps1 文件的运行。

创建替代时,最好将它们放到 System Center Operations Manager 专门用于自定义项的新管理包中。这允许您快速且轻松地管理您的替代或其他自定义设置。如果您尚不具有用于此目的的管理包,那么可以通过以下步骤创建一个:

  1. 在操作控制台中,单击“管理”按钮,在“管理”窗格中,右键单击“管理包”,然后选择“创建管理包”。随即显示“创建管理包”向导。
  2. 在“常规属性”(General Properties) 页中,在“名称”(Name) 中键入管理包名称,在“版本”(Version) 中键入正确版本号,在“描述”(Description) 中键入简短描述。单击“下一步”(Next),然后单击“创建”。

图像

在您指定了替代的管理包之后,您将要为下面列出的 4 个监视器创建替代:

图像

在 System Center Operations Manager 中,转至“创作”模块,然后转至“管理包对象”下的“监视器”。可以禁用监视器,方法是设置一个“替代”(Override) 并选择“对于类为数据库副本 DB 逻辑磁盘空间的所有对象”(for all objects of class Database Copy DB Logical Disk Space) “禁用监视器”(disable the Monitor)(如下所示):

图像

选中“已启用”(Enabled) 旁边的复选框,然后通过选择“False”修改替代值:

图像

在同一“替代”对话框的“属性”框中,确保选择为自定义项指定的管理包。

图像

目前,我们认为如果您因邮箱遭到隔离而感到困扰,那么禁用监视器是唯一可以选择的变通方法。我们认识到这可能会阻止管理员收到磁盘空间不足的通知,但是觉得这是在发布修补程序之前阻止邮箱遭到隔离的最佳方法。

请注意: 当数据库磁盘空间不足,并且事务日志驱动器与数据库共存时,仍可以收到通知,因为这是由完全基于 perfmon 的另一个不同规则生成的。

Ben Winzenz、Kevin Carker

这是一篇本地化的博客文章。请访问 Mailboxes on a database are Quarantined in an environment with System Center Operations Manager 以查看原文