动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   网络应用 → 阅读文章

 浅谈Exchange Server邮件存储系统-原理篇(1)

作者来源:5dmail  
阅读 数 310 人次 , 2006-3-18 11:18:00 

本文从数据库基本原理的角度入手,通过对Exchange Server Store模块的分析,来揭示Exchange Server邮件存储系统的工作原理和维护技巧。文章适合有一定Exchange Server管理经验的专业IT人员阅读,目的是使读者在维护Exchange Server邮件系统时,能够做到知其然,更知其所以然。

Information Store和Extensible Storage Engine的层次关系

众所周知,在Exchange Server中,Information Store (简称IS)Service是至关重要的。这个服务控制了对邮箱和公共文件夹数据库的操作请求。

更进一步的来看,事实上Exchange Server的数据库系统是由名为Extensible Storage Engine(简称ESE)的数据库引擎来管理的。这个ESE引擎是微软专门为保存非关系型数据而开发的,在微软的很多系统中都有应用:例如,AD的数据库(ntds.dit文件)、Windows DHCP、Windows WINS、SRS等,后台都是由ESE数据库来提供支持的。



我们知道,Exchange Server的数据库由edb文件、stm文件和众多的log文件组成。在这些文件内部,微软使用了名为“B+树”的内部数据结构,ESE引擎的任务之一,就是当Information Store服务请求访问数据库的时候,把这些请求转化成对内部数据结构的读写访问。B+树的特点是能够对存储在磁盘上的数据提供快速的访问能力。微软选用 B+树作为ESE后台结构的一个原因,就是尽可能提高访问数据时的I/O性能。这些B+树的结构对于Exchange Server Store服务来说是透明的,Store只需要把请求发给ESE即可,ESE会对这些数据结构进行操作。

另外,作为一个数据库系统,ESE有责任提供事务(Transaction)级别操作的支持,并维护整个数据库的完整性和一致性。对于现代数据库系统,当我们提到事务时,一般用ACID这样的缩写来描述事务的特点:



我们会在后面的篇幅中详细的讨论Exchange Server和ESE是怎样实现上述的要求的。

对于Information Store Service来说,ESE封装了对数据库操作的所有细节,IS只要根据ESE提供的接口进行调用既可。在Exchange Server 2000中,IS服务对应的进程是store.exe,每一个Storage Group会在store.exe进程中产生一个ESE引擎的实例。



Exchange Server 2000/2003 存储系统的新特点

在微软发布Exchange Server 2000时,Exchange Server的存储系统得到了很大的更新和改进。

从ESE引擎的角度来看,ESE的版本由5.5中的ESE97升级为ESE98,并且在如下方面得到了改进:

1.I/O性能得到进一步的优化和提高

2.对日志文件增加了计算校验和的操作,进一步降低了数据库出错的可能性

3.提高了ESEUtil等维护工具的速度

相比幕后的ESE引擎,Information Store方面的更新更加引人注意,例如:

1.在每台Server上提供多个Storage Group和Store的支持,这是区别于5.5的最大特征之一

2.数据库中stm流文件格式的引入,提高了操作Internet邮件的性能

3.Web Storage System的引入,用户可以使用多种协议访问数据库

EDB文件和STM文件的关系

在Exchange Server 5.5中,数据库只有扩展名为edb的文件。在Exchange Server 5.5发布的时候,微软的重点还是企业内部的邮件传输系统,当时主推的协议是MAPI协议,这是微软的私有邮件协议,edb格式的数据库为此协议作了专门的优化。因此,Exchange Server 5.5为了支持Internet标准的SMTP邮件格式,必须在每次处理Internet邮件时将其转化为edb可以识别的格式,这样做带来的巨大的性能损失。



在Exchange Server 2000中,微软加大了对Internet标准协议SMTP的支持力度。因此,适用于Internet格式邮件的存储就应运而生:这就是stm文件。

MAPI格式的邮件是基于微软的RPC和二进制标准的,而Internet格式的邮件是由纯文本的邮件头和经过MIME编码的字符流组成的。这两者的特性就决定他们无法共存在一种数据库结构的文件中。

因此,在Exchange Server 2000中,微软分别使用edb文件和stm文件保存这两种格式的邮件,并在edb和stm文件之间建立了关联和引用。对于用户来说,他的邮箱内容实际上是由跨越了edb和stm文件中的内容共同组成的。值得一提的是,edb文件中除了实际的信件信息以外,还保存了每个用户的邮箱结构、每一个文件夹的内容列表和视图等信息。这是区别于stm中只保存字符流的地方。

我们分下面几种情况讨论edb和stm文件的使用:

1.用户使用Outlook 以MAPI协议的方式和发送和访问邮件

2.用户使用 SMTP/POP3等Internet协议访问Exchange Server。

情景一:

当邮件从MAPI协议的客户端(通常是Microsoft Office中的Outlook)提交到数据库后,邮件内容被保存在edb文件中。

当用户通过MAPI协议的客户端对邮箱中的邮件进行读取访问时,如果请求的邮件是保存在edb文件中的,那么信件被直接打开后返回给用户。如果被请求的信件保存在stm文件中(此信件是SMTP格式的),那么,Exchange Server数据库引擎首先会做一个转换,把stm文件中的数据格式转换成MAPI可以识别的格式,然后再发送给客户端。这个过程称之为“On- demand Conversion”。

情景二:

用户使用SMTP/POP3客户端(如Outlook Express, FoxMail等)跟邮箱连接。当SMTP协议向Exchange Server提交邮件时,邮件的内容被保存在stm文件中。前面提到过,edb文件中包含了用户邮箱的文件夹和信件内容列表,因此,当邮件被保存到stm 文件后,数据库引擎把这封邮件的一些重要信息(通常是邮件头中的内容和信件在stm文件中的位置)提取出来,保存到edb文件,这个过程称之为 “Property Promotion”。正是有了这个过程,用户才可以得到信箱内容的完整列表,MAPI客户端需要访问位于stm文件中的邮件时,由此能够得到stm文件中信件的正确保存位置。当用户使用POP3协议来读取邮件时,如果被访问的邮件位于edb文件中,同样,一个从MAPI到Internet格式的转化(“ On-demand Conversion”)也会在后台悄悄的发生。



通过上面的描述,我们知道在实际的Exchange Server环境中,这两个文件是紧密关联的。在任何时候都不要单独的操作这两个文件,要始终把他们视为一个整体。edb文件中包含了每一个邮箱的内容列表(store tables),当客户端需要得到文件夹的内容时,都必须向edb文件发出请求。两种格式的文件,对两种类型的协议分别提供了支持,有效的减少了不必要的格式转换的发生。




  
 本文Tags邮件  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:邮件服务器软件的现状与发展综述
· 下一篇:浅谈Exchange Server邮件存储系统-技巧篇(1)
· 查找与清除线程插入式木马
· 调整磁盘分区的PM
· 为Windows 2003安全—层层设防(3)
· 用net start 可以启动肉鸡的命令(2)
· 反黑之路:渗透+分析+反击



关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077