2014-08-28 23:17:48
来 源
中存储网
Exchange邮件服务器
Exchange Server 2003可以自动地执行这些及其它维护任务。尽管如此,对于了解这个自动维护过程如何工作还是非常重要的,这样你就可以更加自如地控制服务器何时以及怎样执行这些任务来优化你的环境。

Exchange Server数据库需要有规律地定期维护来保持它们的最佳性能。这个维护包含一些任务,比如清除已删除的邮箱,清理公共文件夹,以及整理数据库碎片。Exchange Server 2003可以自动地执行这些及其它维护任务。尽管如此,对于了解这个自动维护过程如何工作还是非常重要的,这样你就可以更加自如地控制服务器何时以及怎样执行这些任务来优化你的环境。

Exchange Server维护任务
Exchange 2003执行11个任务来作为它的自动数据库维护计划的一部分。这些任务是:
1. 清除在邮箱和公共文件夹存储上的索引。
2. 在邮箱和公共文件夹上执行墓碑(tombstone)维护。
3. 为邮箱和公共文件夹存储从垃圾箱中清除过期的消息。
4. 从公共文件夹中清除过期的消息。 
5. 清除已删除的公共文件夹中超过180天的信件。
6. 解决公共文件夹内的消息冲突。
7. 在公共文件夹上更新服务器版本消息。
8. 在公共文件存储上检查并删除复制站点文件夹。 
9. 清除在邮箱存储里的已删除邮箱。 
10. 检查消息表里的无应答消息(orphaned messages,一个为0的引用计数的消息)。 
11. 执行一个Exchange Information Store(IS)的在线的磁盘碎片整理。 
你可以设想一下,取决于数据库的大小,以及数据库在维护周期开始时的状况,在一个Exchange存储上执行所有11个任务可能会花费很长时间。问题是Exchange在执行维护任务时必须尽可能小的影响用户。在大多数情况下,这就意味着需要在晚上执行维护任务,并且这样做在某种程度上不会干扰每晚的备份。这样通常不会给IS维护留下很多的空闲时间。
因为时间限制可能会阻止运行一个夜间的所有维护任务的计划,所以Exchange会按照哪个任务最近运行,以及哪个任务最重要的优先次序来执行任务。幸运的是,优先级十分简单。上面列出的前10个任务有相同的优先级。然而,第11个任务(执行一个IS的在线的磁盘碎片整理)比其它10个任务都更加重要。
Exchange维护周期第一次运行时,它会从列表里的第一个任务开始,并且时间允许的话会按照列表顺序逐步地完成其它的任务。如果维护周期只剩下15分钟时,而且不是所有的任务都已经完成,那么Exchange必须做出决定。如果Exchange把整个维护周期都花费在一个任务上,而且那个任务没有结束执行,那么Exchange会继续花费维护周期的剩余时间来执行那个任务。然而,如果至少有一个任务完成了,Exchange会记录下最后完成的那个任务,中断日常维护任务,并且开始一个在线的磁盘碎片整理。因为Exchange考虑一个在线的磁盘碎片整理要比其它维护任务更为重要,它允许碎片整理一直运行到维护周期结束后一个小时。
下次当Exchange遇到一个维护周期计划时,它会检查哪个任务是最后一个顺利结束执行的(不包括在线的磁盘碎片整理)。Exchange于是会启动列表中的下一个任务。通过每晚不会重新启动任务列表的开始任务,Exchange能够保证每个维护任务都能偶尔运行。

调整维护周期
在我告诉你如何修改你的存储维护计划以前,你必须知道两件事情。第一,维护是在IS等级执行的。这就意味着如果你的Exchange包含多个存储,你必须定期单独维护每个存储。第二,IS维护属于资源密集型的维护。它使用大量磁盘空间和CPU时间。你在定期维护时必须充分考虑这一点。如果维护周期是在晚上的备份期间运行,那么维护周期和备份会争夺磁盘资源,从而大大降低两个任务的速度。
当想到每晚服务器到达峰值业务周期以及备份开始和结束时,你或许会有一个好主意。理想情况下,你会希望在这些时间附近安排维护任务计划。例如:如果你知道用户每天大约在上午7:30开始登录,而且几乎人人都是在下午6:00回家,并且你的备份设置在每晚11:00开始运行,那么你可以安排在每晚6:30到10:30运行维护任务。
当你在设计维护计划时,记住我所说的:维护是资源密集的,而且它是在IS等级执行的。如果你的Exchange Server有多个存储,你应为每个存储配置不同的维护时间,尽管在你的服务器有大量的存储时,这样做不会总是切合实际。
默认的Exchange维护计划允许它从每晚的午夜到凌晨4:00在所有的存储中执行维护任务。如果你想要改变维护计划,你可以通过打开Exchange System Manager(ESM),并且从控制台树进入到Administrative Groups,your administrative group,Servers,your server,your storage group,your store来完成该操作。右键单击你想要进行调整的存储,并且从上下文菜单中选择Properties。选择Database栏,如图1所示。Database栏包含一个Maintenance interval下拉列表,在这里你可以选择一个4小时的时间段来作为IS的日常的(或者每晚的)维护周期。

图1:选择一个Exchange维护时间段

虽然你可以使用Maintenance interval下拉列表来指定一个存储的维护周期,但是你并不是被限制在菜单上所显示的选择中。你可以单击Customize按钮来为存储创建一个自定义的维护计划。当你这样做时,你会看见一个时间表子区,如图2所示。我强烈建议你设置维护计划至少为每天4个小时,你可以选择跳过几天或者执行短期或长期维护时间的选项。如果你考虑在维护上节约时间,要记住,维护任务是用来保持IS以最高效率运行,并且防止崩溃的。在维护上节约时间会增加你遇到IS性能问题或者崩溃的体验机会。

图2:创建自定义维护计划

自定义在线的磁盘整理
正如你所看到的,Exchange在一个存储上执行维护相当易于控制。使用一些不错的注册表技巧,你还可以控制如何以及何时发生在线的磁盘碎片整理。
正如我刚才所说的那样,只要至少有一个任务已经完成,在线的磁盘碎片整理就会在维护周期结束以前15分钟开始运行,并且会一直延续到维护周期结束后1个小时。然而,你可以修改注册表来允许在线的磁盘碎片整理运行一个较长的时间或者调整计划以便它不会被备份任务所打扰。
包含控制自动在线的磁盘碎片整理的注册表子键的位置会稍有变化,这取决于你是否参考一个个人的存储(即一个邮箱存储)或者一个公共的存储(即一个公共文件夹存储)。如果你想要修改在线的磁盘碎片整理在一个个人的存储上运行的方法,你可以使用HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePrivate-GUID子键,在这里servername是你的服务器名称,GUID是存储的全局唯一标识符(GUID)。如果你想要修改在线的磁盘碎片整理在一个公共的存储上运行,你可以使用HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePublic-GUID子键。图3显示了控制在线的磁盘碎片整理动作的注册表位置。

图3:控制在线的磁盘碎片整理的注册表键值

我想要告诉你的第一个窍门是如何调整在线的磁盘碎片整理用于在一个维护周期的结尾时间。想要这么做,根据你想要改变的存储,为上面列出的任何一个子键创建一个名称为OLD Minimum RunTime的REG_DWORD值。为该子键分配一个你想要在维护周期结尾分给在线的磁盘碎片整理的分钟数。
第二个你可以用来控制在线磁盘碎片整理任务的注册表的好办法是创建一个名称为OLD Completion Time的REG_DWORD值。这个值控制在线磁盘碎片整理在维护周期结束之后的运行时间(默认是1个小时)。你分配给这个子键的值应该反映在线磁盘碎片整理过程应该运行的额外的秒数(3600秒等于1个小时)。注意:如果你改变这个值,Exchange Server Best Practices Analyzer(ExBPA)会标记你的配置,并且显示一个nondefault配置信息(有关更多信息,请查看微软文章“OLD Minimum RunTime for a public folder store is non-default”,http://www.microsoft.com/technet/prodtechnol/exchange/analyzer/5ba05346-788c-4d16-8f0f-d6631e418a83.mspx?mfr=true)。

清理已删除邮箱
现在你知道了如何自定义维护计划以及在线的磁盘碎片整理过程,我会告诉你一些其它的维护任务(不是所有的维护任务都是可配置的)的调整。
第一个任务是清理已删除的邮箱。当一个管理员删除一个邮箱时,该邮箱在Exchange数据库中默认的保持期是30天。当保持期结束时,Clean Up Deleted Mailboxes维护任务将已删除邮箱从IS中清除。这个过程不同于常规的删除项目保持,我们所谈论的是整个已删除的邮箱而不仅仅是已删除的消息。一个单独的维护任务删除过期的消息。
你用Active Directory(AD)为已删除邮箱设置保持期。想要这么做,打开被收录在Windows Server 2003支持工具中的ADSI Edit程序。在控制台树中转到Configuration,Configuration for the domain containing the Exchange Server,Services,Microsoft Exchange,Exchange organization,Administrative Groups,your administrative group,Servers,your Exchange Server,Information Store,并且选择包含你想要使用的那个存储的storage group(SG)。
当你选择了适当的SG时,你会在右侧列里看到带有SG的存储。右键单击你想要修改属性的那个存储,并且选择Properties来查看存储对象的属性。定位到msExchMailboxRetention-Period属性,如图4所示,并且使用Edit按钮来为存储分配一个新的保持期(以秒为单位)。默认值是2,592,000,或者30天。

图4:访问一个存储的AD属性

从垃圾箱里删除过期消息
当一个用户删除一个消息时,Exchange不会真的删除该消息。实际上,客户设置ptaMsgDeleted标记来显示客户应该视此消息为已经被删除,并且不显示此消息。
接下来会发生什么取决于客户是否启动了Deleted Items Retention(也称为垃圾箱)功能。如果垃圾箱未被启动,那么下次运行remove expired messages from the dumpster维护任务时,删除消息会被永久地删除。如果垃圾箱被启动,会分配给每个删除消息一个保持期,remove expired messages from the dumpster维护任务只是在保持期结束以后才会永久地删除该消息。
要为已删除消息设置保持期,打开一个注册表编辑器,并且转到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePrivate-GUID子键,或者HKEY_LOCAL|MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePublic-GUID子键,然后创建一个名称为Deletion Thread Period的REG_DWORD值。分配给它一个反映所需保持期(以秒为单位)的值。

清除索引
每当一个Exchange服务器数据库的消息被排序后,Extensible Storage Engine(ESE)会为该排序视图动态地创建一个索引。如果这些索引最后没有结束,你大概会为每个存储最后得到数以千计的索引。为了防止这些情况,Exchange会为每个索引分配一个expiration period。在Exchange 2003中,索引在它们被创建40天(在Exchange Server 5.5里是8天)之后结束。
当一个索引被创建后,Exchange把一个引用添加到索引中,并且把它的expiration period添加到一个内部叫做index aging table的表中。当Exchange执行清除索引维护任务时,它使用这个表来确定哪个索引(如果有的话)已经结束并且删除它们。
AD控制保持索引的时间值。你可以通过使用ADSI Edit来修改这个设置:转到Configuration,Configuration for the domain containing the Exchange server,Services,Microsoft Exchange,Exchange organization,Administrative Groups,your administrative group,Servers,your Exchange Server,Information Store。选择包含有你想要使用的那个存储的SG。一般地,只有当关系到服务器资源时,你才会改变这个设置。
控制索引保持时间的属性是msExchAging-KeepTime。默认情况下,这个值没有被设置,而你可以设置想要保持索引的秒数。未给属性分配一个默认值的理由是因为索引保持时间起初是通过注册表来控制的。你仍然能够通过注册表控制保持时间,不过AD属性替代了注册表的设置。
如果你想要通过修改注册表来改变该索引保持时间,你可以在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISParametersSystem创建必要的子键。你可以为控制索引保持值创建两个不同的注册表子键。第一个是Aging Keep Time(REG_DWORD类型)。这个子键同AD对象所做的一样。它让你设置索引保持的秒数。默认情况下,在Exchange 2003里索引保持为40天。
第二个你可以创建的子键是Aging Clean Interval(REG_DWORD类型)。这个子键控制Exchange多长时间(以秒为单位)清除一次过期索引。默认情况下,Exchange 2003每24小时清除一次过期索引。
一般地,你不必管这两个注册表键值。然而有时如果把Aging Keep Time值从默认的40天周期减少的话,需要你慎重考虑。如果一个文件夹包含太多缓存搜索、后退链接、限制等等,客户响应时间会变得非常慢。
如果客户响应时间变得非常慢,并且你开始收到包含Client Operation Failed的语句的Messaging API(MAPI)错误时,减少Aging Keep Time周期可能会解决该问题。另一个你应该减少Aging Keep Time周期可能表现的迹象是:当访问一个存储内的一些文件夹时,响应时间很慢,而访问同一个存储中其它的文件夹响应时间却正常。
你可以减少Aging Clean Interval,以便Exchange可以更加频繁地清除过期索引,但是除非通过Microsoft Product Support Services(PSS)得到这样的答复,否则我并不推荐这样做,因为清除过期索引会相当占用资源。

解决公共文件夹内的消息冲突
含糊难懂的Exchange维护任务之一是解决公共文件夹里的消息冲突。这个意思是公共文件夹可以通过多个服务器复制。如果在一个公共文件夹内的一个消息的两个或更多个副本被同时修改,那么该消息就出现冲突了。
Exchange赋予公共文件夹所有者一个特殊的时间值来手动地解决该冲突。这个时间段被称作conflict age limit。如果公共文件夹所有者没有在那个时间段解决冲突,resolve message conflicts维护任务会根据一个内部的规则集自动地解决该冲突。
你可以通过改变注册表来设置或修改conflict age limit。想要这么做,转到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePublic-GUID注册表子键,并且创建一个名称为Replication Folder Conflict Age Limit的REG_DWORD值。给它分配一个反映允许消息保持冲突的天数。

从公共文件夹里删除过期消息
我最后一个想要谈论的维护任务是从公共文件夹里删除过期消息。消息过期周期是根据每个文件夹而设置的,因此没有可以让你从整体上调整过期周期的注册表子键可用。然而,你可以创建一个注册表值来控制Exchange多长时间从公共文件夹清除一次过期消息。再重复一次,要小心使用这个设置,因为它会中断其它的维护任务。
想要设置清除消息的频率,转到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePublic-GUID,并且创建一个名为Replication Expiry的REG_DWORD值。给它分配一个反映清除消息周期的毫秒数。

自动完成不意味着不用动手
正如你所看到的,定期维护是Exchange的IS完整性和性能所不可缺少的。通过了解自动维护过程如何工作,并且使用本文里所介绍的技巧,你可以更加自如地控制服务器如何执行这些任务来优化你的环境。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。