/ 中存储网

揭秘Exchange Server 忙/闲数据,监控其性能

2014-08-29 01:38:58 来源:中存储网

为了追踪用户会议的可用性,Exchange Server以及它的客户端使用忙/闲数据,而忙/闲数据的结构常常会使Exchange管理员变得十分焦虑。很少有管理员了解当用户更新他们的日历时客户端如何发布忙/闲数据,Exchange在哪里存储该数据,以及这些数据实际上表示什么。虽然TechNet和Exchange开发队伍的blog(http://msexchangeteam.com/default.aspx)里提供了一些有关忙/闲数据的有益信息,但是本文旨在给你带来一个关于忙/闲数据的全面介绍,用不同的信息来源一同揭示Exchange里最为深奥的这部分内容。
让我们通过了解Exchange在哪存储忙/闲数据以及客户端如何发布它来开始忙/闲数据的揭秘过程。有了这个基础,你就能够探究忙/闲数据表示什么,Exchange和Outlook如何使用它,以及你如何使用Exchange Information Store Viewer来对该数据获得更多额外的了解。最后,我们会看看Exchange Server 2007里发生的一些变化,它承诺给用户在管理他们的日历时提供最新可用的忙/闲数据。

忙/闲数据存储在哪里
Exchange Server 2007之前的所有版本都是使用一个公共文件夹来存储当用户有效时客户端用来计算的忙/闲数据。Exchange Server 2003和2000服务器在SCHEDULE+ FREE BUSYAdmin Group公共文件夹里存储忙/闲数据。比如,如果你在Exchange服务器里的邮箱属于伦敦管理员组,那么你的忙/闲信息会存储在SCHEDULE+ FREE BUSYLondon公共文件夹里。
你可以在Exchange System Manager控制台里通过展开公共文件夹的根,如图1所示,然后从右键菜单里选择查看系统文件夹,这样来查看忙/闲文件夹的细节。Exchange为每个管理员组都设有一个忙/闲文件夹,并且在那个管理员组里为每个邮箱都设有一个项目。在忙/闲项目里的数据相当紧密,每用户大约100字节,因此在存储,管理和复制这个数据过程里并不会给服务器带来大量的负荷。

图1:忙/闲信息的系统文件夹

然而,忙/闲数据的复制会影响用户试图安排会议的数据的准确性。如果你的Exchange为一个用户只执行存储一个忙/闲信息的副本,那么Outlook必须连接到在组织里一个特定服务器里的那个文件夹。如果那个服务器离得较近(在网络术语里),你会得到可接受的性能,忙/闲数据也会保持最新而且准确。然而,在一个分布式组织里,你可能想要把忙/闲数据复制到几个公共文件夹服务器里,这样用户可以访问数据的本地副本。这个策略当然会改善性能,但是因为在复制里的一个延迟情况,当一个用户查阅它来安排一个会议时,它还会产生过期的忙/闲数据。

发布忙/闲数据
在一个用户更新完他的或者她的日历以后,Outlook会根据如图2所示的用户特殊选项来更新该用户的公共文件夹里的忙/闲数据(你可以通过单击Outlook“工具”菜单的“选项”,“日历选项”来访问这个屏幕)。Outlook的默认设置是“服务器上每隔15分钟更新忙/闲信息”和“在服务器上发布两个月的日历忙/闲信息”。因此,如果在组织里的每个用户使用默认的发布选项,那么即使他们安排了会议及其他经过那时候的约会,你在接下来的两个月也无法看到其他用户可用的日历。你最多可以发布36个月的忙/闲数据,并且每分钟更新服务器。

图2:Outlook忙/闲信息发布选项

Outlook Web Access(OWA)用户可以更新他们的忙/闲数据,但是IMAP和POP客户端不支持这个功能。Exchange通过MSExchangeFBPublish过程为OWA客户端更新该数据,而该过程是作为System Attendant服务的一部分而运行的。当一个OWA用户更新他的或者她的日历时,Store处理该日历数据,然后提交一个信息给服务器上的System Attendant邮箱。一个在MSExchangeFBPublish内部运行的轮询(polling)线程每5分钟检查System Attendant邮箱来获取忙/闲信息,并且为用户把这些更新应用到公共文件夹上。然而,Exchange管理员可以从每30秒(你可以设置的最频繁的周期)向上调整轮询间隔。为了改变该轮询间隔,更新或者在HKLMSystem CurrentControlSet ServicesMSExchangeFBPublishParameters{Server Name}(在这里{server {Server Name}是物理的服务器名称或者集群的虚拟的服务器名称)里插入PollingInterval注册表(一个DWORD值)子键。你必须重新启动System Attendant服务来使新的轮询间隔生效。
OWA不允许用户改变忙/闲数据的默认发布设置,因此默认情况下所有的OWA客户端发布两个月的忙/闲数据。但是因为OWA继承Outlook的发布设置,所以你可以通过在Outlook更新它来强制OWA改变发布周期。

那些数据有什么含义
忙/闲数据会鉴别用户是否有时间。然而,该数据相当基本,并且没有包含关于用户没有可用时间的原因介绍,例如他们是否正在参加一个会议或者有一个私人的约会,会议或者约会在哪里,或者他们是否在办公室里或者正在旅行。
此外,Exchange会把连续的约会合并到一个繁忙时间块的格式里。因此,当你查看另一个用户的日历,并且看到他或者她在上午10点至下午5点之间繁忙,你无法判断该用户是有一个时间较长的约会还是有几个短暂的会议需要参加。并且虽然在其他用户日历里的项目有不同的设置,例如繁忙或者暂定,Exchange会显示用户在他们的日历里创建的任何约会都作为一个繁忙时段。
在保存一个用户的忙/闲数据的项目内部,你可以查找记录那个表示占用的时间块。时间块的格式由从本月的开始到块的开始的分钟数以及从本月的开始到块的结束的分钟数表示。这两个时间点被称作DTStart和DTEnd属性。Exchange以格林威治时间(GMT)时区来存储所有时间来确保在适当时候出现安排的会议可以跨过时区。让我们假设你在2007年7月14日上午9点到10点(GMT)预定了一个约会。Outlook会用下面的方法计算DTStart属性:
从本月的开始(2007年7月)到结束是31天,或者44,640分钟。该约会的起动时间是从该月的13天又9小时(321小时或19,260分钟)。如果你没有在GMT时区里,那么会应用一个GMT偏移量。因此,DTStart是19,260(从本月开始的分钟数),而DTEnd是19,320。 Outlook转换这些值到十六进制,因此DTStart是4B3C,而DTEnd是4B78。Outlook现在通过使用下列算法来为月计算(2007年7月):(Year*16) + number of month in year=Month—or (2007*16) + 7 = 32,119。该客户端现在公共文件夹里的项目发送下列忙/闲数据32,119 4B3C 4B78。
然而,因为在忙/闲日期文件夹里的项目取决于用户输入的日历种类而包含不同种类的记录,所以更新忙/闲信息并不像将新信息发送到公共文件夹那么简单。例如:列表条目可以是忙碌,在办公室以外,或者暂定,以及每一种有它自己的前缀的数据,如下:
0X684F = merged month
0X6850 = merged day
0X6851 = tentative month
0X6852 = tentative day
0X6853 = busy month
0X6854 = busy day
0X6855 = out of office (OOF) month
0X6856 = OOF day
而考虑到效率问题,Outlook此外还会在可能的地方合并月和天的数据。如果有相邻的约会重叠了,因为它们占据相同的时段,所以Outlook会把它们合并到单个记录里。例如,假设在你的日历里有下列这些约会:
1. 10AM to 11AM Busy 
2. 10:30AM to noon Busy 
3. 2PM to 4PM Tentative 
4. 3PM to 5PM Busy 
记录1、2以及4是相同类型(繁忙),因此Outlook会在将它们合并到一个记录里以前按起动时间将它们分类。在合并以后,该记录会包含两个繁忙Start/End对:上午10点到中午以及下午3点到下午5点。此外,Outlook会为发生在时间表里的任何临时的时段准备一个Start/End对。假定Outlook为在合并记录里占用的时段只有一个数据段,该数据现在看来像是这样:
0X684F 32119
0X6850 3C 4B 78 4B
0X6853 31994
0X6854 3C 4B 78 4B
因为忙/闲数据相当复杂,Outlook不会试图将新建数据合并到现有数据里。反而,它会删除该用户现有的忙/闲数据,并且编写表示当前的日历状态的崭新的数据。注意:Outlook的所有版本都支持/cleanfreebusy开关来强制客户端重新计算,并且根据需要再次发布忙/闲信息。使用/cleanfreebusy可以解决如果用户由于某种原因不能访问忙/闲数据时出现的问题。

透析数据
Exchange Information Store Viewer,MDBVU32(可以从www.microsoft.com获得),提供最好的方法来深入了解忙/闲文件夹存储的数据类型。当MDBVU32启动时,它会要求一个配置文件。任何MAPI配置文件都可以。为了访问忙/闲信息,执行下列步骤:
1. 从MDB菜单中选择“OpenMessageStore”。
2. 选择“公共文件夹”,并且单击“打开”。
3. 从MDB菜单中选择“打开根文件夹”。你会看到显示出两个文件夹:IPM_SUBTREE和NON_IPM_SUBTREE。 第一个根文件夹包含所有用户想要看到的普通的公共文件夹;而第二个根文件夹包含系统文件夹,例如忙/闲文件夹。选择NON_IPM_SUBTREE。 
4. 选择SCHEDULE+ FREE BUSY。在子文件夹窗口里,你现在应该看到你组织里所有的管理员组。 选择你想要检查的管理员组的名称。如果你选择的一个管理员组不把它的忙/闲信息复制给你的服务器,那么该文件夹是空的。
图3所示,在Folder方框里的Messages现在显示忙/闲文件夹里的项目。你可以通过双击项目为一个特殊的用户选择忙/闲信息;然后你能查看项目的属性等等。

图3:通过MDBVU32查看忙闲信息

在图3左侧的屏幕里显示了每个用户的记录,可以通过一个基于该用户的LegacyExchangeDN属性的值来鉴别他们。就技术上而言,Exchange将该项目视为“note”(IPM.Note),并且根据记录的主题,按照下列惯例鉴别它:
USER-/CN=/CN=
例如,我的用户账户的忙/闲项目有一个为下列内容的主题行:
USER-/CN=RECIPIENTS/CN=REDMOND
屏幕右侧显示了一个选定用户的记录(在这个例子里是mine)属性。你可以看到为不同的月份(32103 = 2006年7月,32104 = 2006年 8月,等等)的四个0X684F记录,后面是为单独的天的一些0x6850记录。有关如何使用MDBVU32程序来查询忙/闲数据的更多信息,查看包含在MDBVU32下载里的Word文档(Information Store Viewer.doc)。

Exchange Server 2007里的忙/闲数据
Exchange Server 2003以及早期版本中为忙/闲数据存储和复制的公共文件夹的模式工作良好,但微软公司并不看中的公共文件夹对于Exchange Server 2007需要一个新的结构。只在支持Client Access Server(CAS)角色的Exchange Server 2007服务器上运行新的Availability服务,当用户想要安排一个会议时,可以通过Outlook 2007以及OWA 2007客户端来为其他的客户维护忙/闲数据。
每个支持一个Exchange Server 2007邮箱服务器的Active Directory(AD)站点还必须有一个CAS。当客户端需要读取忙/闲数据来安排一个会议时,Availability服务直接从任何使用Outlook 2007或OWA 2007的用户邮箱的日历文件夹里读取必要的数据。如果你的组织使用较老的客户端,Availability服务还可以从一个公共文件夹里访问忙/闲数据。
让我们看看在Exchange Server 2007里如何处理忙/闲数据工作的一个例子。假设你有一个Outlook 2007的用户连接到一个在伦敦的邮箱服务器,而这个用户想要安排一个同旧金山和纽约用户的会议。每个城市有一个AD站点,并且每个AD站点有一个Exchange服务器。
开始时,Outlook会连接到伦敦AD站点里的一个CAS。在大多数情况下,在同一个Exchange服务器运行的一个CAS包含有该用户的邮箱,因为一个Exchange Server 2007服务器可能同时包含CAS、邮箱以及Hub Transport角色。该可用的CAS在带有AD的Exchange结构数据里被发布,因此如果该站点支持超过一个CAS,可以通过使用一个循环算法来从可用的服务器列表里选择Availability服务。
在安排用户的站点里的CAS为忙/闲数据代理跨过一个HTTPS连接到一个AD站点里的CAS上的请求,而该AD站点包含另一个你想要安排一个会议的用户,因此单独的请求会发送到旧金山和纽约的CAS里。收到该传入请求的CAS担负着为指定用户查找日历数据,以及访问或者用户邮箱,或者一个公共文件夹的本地副本来检索这个数据。然后他们会通过HTTPS将数据返回给最初的CAS,而该CAS会对比忙/闲数据,并且响应该信息来给安排会议的那个用户。
新结构的重要的优势是CAS返回给用户安排会议的数据可以保证是最新的。相反地,由于在公共文件夹复制里存在损耗或时间延误,所以你从忙/闲公共文件夹检索到的数据可能是错误的。
在不利的方面里,由于Interserver通信要求从整个组织获取数据,因此作安排的用户大概可能必须等待很久来查看一下忙/闲数据。最终,将你的忙/闲信息(公共文件夹的本地副本)放到一个位置要比获得许多网络连接要简单的多。然而,微软公司对它充满信心,因为它优化了CAS收集忙/闲数据的方式,并且不会让用户注意到性能上会有什么区别。
当然,大多数组织将来会部署Outlook 2007和Exchange Server 2007,并且会以混合模式运行很多年。因此,Outlook 2007和Exchange Server 2007会以向后兼容的方式沿用忙/闲公共文件夹。

最终揭秘
忙/闲信息对于那些需要发现可用的时段来在其他用户的日历里安排约会的用户来说是一个十分重要的特点。并且既然你已经了解该结构的各个模块如何配合,你一定能够管理忙/闲数据,并解决任何问题。虽然Exchange Server 2007会带来一些改善,特别是保证数据的最新性,但是在大多数组织看到那些改变的完全影响之前还有很长的一段路要走。