Exchange 存储和扩展存储引擎调整

 

上一次修改主题: 2006-08-16

Exchange Server 2003 可以每个服务器最多处理 25 个数据库。总存储空间最多包括四个生产存储组(每个存储组五个数据库)和一个恢复存储组(恢复时最多可以处理五个数据库)。

当使用 Exchange Server 2003 或更高版本的 Exchange 时,建议您为每个新数据库添加额外的存储组,直到达到存储组数量的最高限额。正如对 Exchange 2000 Server 所建议的那样,同样建议您采纳上述建议,而不是在单个存储组内添加多个数据库。

该建议可使管理员在尽可能多的存储和存储组上分布邮箱负载。这样可以创建更易于管理的 Exchange 存储拓扑。这样的拓扑有如下优点:

  • 数据库可以更小。
  • 可以更好地管理驱动器输入/输出 (IO)。
  • 提高了可恢复性。

例如,请考虑下列 Exchange 存储拓扑配置。在这些示例中,存储组分别被命名为 SG1 至 SG4。随着时间的推移所创建的数据库分别命名为 DB1 至 DB8。

在 Exchange Server 2003 之前的 Exchange 版本中,您可能按下列方式配置 Exchange 存储拓扑:

SG1:DB1、DB2、DB3、DB4

SG2:DB5、DB6、DB7、DB8

在 Exchange Server 2003 及更高版本的 Exchange 中,目前建议您按下列方式配置 Exchange 存储拓扑:

SG1:DB1、DB5

SG2:DB2、DB6

SG3:DB3、DB7

SG4:DB4、DB8

有关 Exchange Server 2003 中的存储组的详细信息,请参阅 Microsoft 知识库文章 890699“如何在 Exchange Server 2003 中配置存储组”(http://go.microsoft.com/fwlink/?LinkId=3052&kbid=890699)。

Exchange Server 2003 完全支持单实例邮件传递。如果将一封邮件发送给多个收件人,而这些收件人在同一个数据库中,则只会向该数据库发送一封邮件。收件人会收到指向这封邮件的指针。

如果邮件收件人在某个存储组的多个数据库中,会向每个有收件人的数据库传递一份邮件副本。此外,存储组的事务日志组中会保留多份邮件副本。

对于如何最好地利用单实例支持,有许多不同的观点。有些人喜欢将整个部门的用户放在同一个数据库中,这样可能会节省磁盘空间;而另一些人则不喜欢这种方法,因为如果数据库出现故障,会使整个部门都无法使用该数据库。

设计单实例存储的目的是为了在向许多人投递邮件时,提高服务器的投递性能,而不必考虑节省磁盘空间。

如果在 Exchange 数据库、存储组和服务器之间移动邮箱,也可以保留单实例。

在设置了 /3GB 开关的大规模向上扩展的邮箱服务器上,Store.exe 进程在用户模式下会拥有更多的虚拟地址空间,而内核地址空间则减小为 1 GB。不幸的是,如果负载很重的服务器用尽了页表条目,此问题可能会造成不平衡。如果问题仍然存在,服务器在向磁盘写入数据时可能会出现资源不足的情况,还可能会遇到网络连接失败的情况。

有关详细说明,请参阅如何增加 Windows 2000 中的系统页表条目

每个邮箱和公用文件夹存储需要定期进行联机维护。默认情况下,每个数据库设置为在 01:00 AM 到 05:00 AM 之间进行联机维护。联机维护执行各种必要的任务来保证存储处于良好状态,其中包括但不仅限于下列任务:

  • 任务 1 检查 Active Directory 以确定是否有已删除的邮箱。
  • 任务 2 永久性删除超出已配置的保留期限的任何邮件或邮箱。
  • 任务 3 对数据库文件执行联机碎片整理。

这些操作具有特定的性能开销,因此在实行联机维护策略之前,您应该了解这些开销。

任务 1 对数据库中的每个用户执行 Active Directory 查询。每个数据库中的用户越多,执行的 LDAP 目录搜索就越多。通过这些搜索,可以利用 Active Directory 的所有更改(尤其是查找已删除的邮箱)来同步邮箱存储。此任务的性能开销对 Exchange 服务器可以忽略不计,但是对 Active Directory 服务器则有较大影响,具体取决于用户数、数据库数以及每个数据库的联机维护时间。在企业环境中,联机维护通常在夜间进行,因为夜间登录的用户非常少,Active Directory 服务器的负载非常低。在这种情况下,联机维护产生的额外的域控制器负载应当不是问题。

如果 Exchange Server 2003 安装在全局数据中心中并为多个时区的客户提供服务,则默认的联机维护时间可能就会成为一个问题。联机维护对 Active Directory 的影响与服务器的每个数据库中的用户数相对应。对每个数据库中的每个用户都会检查是否有已删除的邮箱。因此,如果有 10,000 个用户分布在服务器上的多个数据库中,则在默认的开始时间 1:00 AM 将对 Active Directory 进行 10,000 次 LDAP 搜索。如果 Active Directory 服务器的负载在 24 小时内都是适中的,则可以交错进行联机维护(将每个数据库设置为在不同时间开始维护)。如果有几十万个用户分布在几十个服务器和上百个数据库上,则交错进行联机维护尤其重要。

任务 2 和任务 3 非常占用磁盘空间,并且只会影响正在进行维护的服务器。在联机维护的此阶段,如果将许多数据库设置为在同一时间进行联机维护,用户可能会感觉到服务器运行缓慢。所以,在企业环境中,此维护会在夜间进行,因为在夜间服务器可以轻松地处理额外负载。在全局数据中心中,可能需要交错安排数据库日程(对一台服务器而言,日程相互交错),以便将非常占用磁盘空间的任务分摊到更长的时段内进行。

联机备份需要更加注意。备份 Exchange Server 2003 数据库将停止该存储组中所有数据库的维护(如果备份在维护间隔未结束时已完成,维护将重新开始)。如果一个存储组中有两个数据库,其中一个数据库正在进行联机维护,若开始备份任意一个数据库,将停止对正在进行联机维护的数据库的联机碎片整理。存储组中任意数据库的备份时间一定不要与同一存储组中任意数据库的维护时间发生冲突。如果发生冲突,备份将停止联机维护的联机碎片整理阶段,数据库可能无法再完成碎片整理。

若要设计出正确的联机维护策略,应检查用户配置文件(例如活动少的时间);了解站点中的用户数、数据库数和服务器数;将这些信息与联机备份策略相互协调。

以下是企业 Exchange 2003 邮箱服务器的联机存储维护日程安排的示例,该服务器驻留一个时区的用户:

第一个存储组

数据库一:在 21:00 到 01:00 之间进行联机维护。

数据库二:在 21:30 到 01:30 之间进行联机维护。

数据库三:在 22:00 到 02:00 之间进行联机维护。

联机备份从 02:00 开始,在第一个存储组中的所有数据库完成联机维护后备份所有数据库。

第二个存储组

数据库四:在 22:30 到 02:30 之间进行联机维护。

数据库五:在 23:00 到 03:00 之间进行联机维护。

数据库六:在 23:30 到 03:30 之间进行联机维护。

联机备份从 03:30 开始,在第二个存储组中的所有数据库完成联机维护后备份所有数据库。

此配置交错安排联机维护生成的 Active Directory LDAP 查询,这些查询在过程的开始几分钟进行,确保联机备份不会妨碍联机碎片整理。

对数据库进行碎片整理的第三项任务包含 18 项独立的子任务。子任务开始后必须完成。因此,如果在联机维护窗口结束时,子任务 12 仍在运行,此任务会在进程退出之前全部完成。所以,联机维护可以跨时间窗口进行。子任务 13 在下一个联机维护窗口中进行。根据运行窗口和备份日程安排,完全碎片整理可能需要一天以上的时间才能完成。

尽管 IMAP4 和 POP3 等 Internet 协议客户端使用流式存储(.stm 文件)读写数据,但是,应了解“Active Directory 用户和计算机”中的移动邮箱功能如何将数据移入 .edb 文件。因此,对于使用 POP3 和 IMAP4 访问邮箱的客户端,邮箱在数据库或服务器之间移动之后,会感觉到性能的降低。登录后,邮件大小将被计算出来,MAPI 到 MIME 的转换会在内存中和服务器磁盘上进行。在极端情况下,此操作可能会在 Exchange 2003 服务器上创建非常大的临时文件。

如果移动数百个或数千个邮箱,可以使用下列建议减少可能出现的问题。在目标服务器上执行下列两个操作:

  • 确保 TMP/TEMP 环境变量指向速度非常快的 RAID0+1 心轴组(大型邮箱服务器最多有 12 个磁盘)。对于独立邮箱服务器,应调整系统环境 TMP/TEMP 变量。对于群集服务器,应为运行群集服务的服务帐户配置变量。有关详细说明,请参阅如何移动 TEMP 和 TMP 目录
  • 为正在使用的 Internet 客户端协议设置 Compatibility 注册表值,以便通知存储应使用近似的而不是准确的邮件大小计算值。有关如何为 POP3 客户端设置 Compatibility 注册表值的详细说明,请参阅如何为 POP3 用户设置 Compatibility 注册表值。有关如何为 IMAP4 客户端设置兼容性注册表值的详细说明,请参阅IMAP4 用户的快速邮件检索

Exchange Server 2003 中的 Store.exe 进程具有有限的可寻址内存量。此内存量称为虚拟地址空间。对于较大的服务器,可能需要手动调整虚拟地址空间,以达到最佳的内存使用。

存储数据库缓存(也称为 ESE 缓冲区)在数据库事务提交到存储中之前,为数据库事务提供一个很大的缓存区。如果服务器负载很重,或磁盘性能不佳,增大 ESE 缓冲区可以提高系统的整体性能。根据配置的不同,可能必须增大或减小此缓冲区的大小,才能获得最佳的整体性能。

有关如何调整这些设置的详细信息,请参阅 Microsoft 知识库文章 815372“如何优化 Exchange Server 2003 中的内存使用”(http://go.microsoft.com/fwlink/?LinkId=3052&kbid=815372)。

 
显示: