深入剖析EXCHANGE SERVER的邮件存储和日志

2008-02-23 06:13:25来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

本文以数据库的基本原理为基础,分析了EXCHANGE SERVER的存储系统,并说明了各部分的作用。

一、IS服务和ESE的层次关系

IS服务我们一定很了解了,他是EXCHANGE服务器中重要的服务之一,他控制着对邮箱和PF的存储操作请求。我们也知道,EXCHANGE服务器的存储实际上是由叫ESE的数据库引擎来管理的。这个ESE引擎是微软专门为保存非关系型数据而研发的,现在在微软的很多产品中都有广泛的应用,如:AD数据库、DHCP、WINS、SRS等等。

EXCHANGE的数据库是由EDB文档、STM文档和LOG文档组成的。在这些文档里,微软使用了“B 树”的内部数据结构。ESE的引擎的任务之一,就是当IS服务请求访问数据库的时候,把这些请求转化为对内部数据结构的读写访问。B 树的特点是能够对存储在硬盘上的数据提供快速访问能力。微软利用“B 树”作为ESE的后台结构的主要原因,就是尽可能的提高访问数据时I/O性能。当然,这些结构对于EXCHANGE STORE来说是透明的。 DL.bitsCN.com网管软件下载

另外,作为一个数据库系统,ESE有责任提供事务级别的操作的支持,并维护数据库的完整性和一致性。对数据库系统而言,我们提到事务时,一般用ACID来描述事务的特点。

A--Atomic(原子的):事务必须是全或全无的操作,要么全部成功更新,要么全部不被更新
C--Consistent(一致的):一个成功提交的事务必须使数据库处于一个一致的状态。
I--Isolated(孤立的):任何未提交的更改都必须能够和其他事务孤立。
D--Durable(持久的):当事务一旦提交,所做的更改必须存储到稳定的介质上,防止系统失败导致的数据库不一致。(此点很重要!!)

二、EXCHANGE 2000/2003存储系统的新特点

在EX5.5中,ESE的版本为ESE97,而在EX2000/2003里,ESE版本已升级ESE98了。ESE引起在以下方面得到了改进:
* I/O性能进一步提高和优化
* 对日志文档增加了计算校验操作
www.bitsCN.com

* 提高了ESEUTIL等工具的维护速度
而IS也在以下方面有了更新:
* 在每个SERVER上提供多个SG支持
* 数据库STM文档格式的引入,提高了INTERNET邮件的性能
* WSS的引入,用户能够使用多种协议访问数据库

三、EDB和STM的关系

常有人问,EDB文档是数据库,那STM文档是做什么用的?能够删除吗?

在EX5.5里,只有EDB文档,因为在EX5.5发布时,微软主推的是内部邮件系统,因此其主要协议为MAPI,这是微软的私有邮件西医,EDB文档是专门为此协议优化过的。因此在EX5.5中,为了支持INTERNET邮件,必须在每次处理INTERNET邮件时,做一个格式转换。这显然带来了性能的损失。

在EX2000里,微软加大了对INTERNET邮件的支持,这就是STM文档的来源。MAPI格式是RPC和二进制标准的,而STM是纯文本加上一些MIME编码格式,这样的区别使得他们不可能存储在同一数据库里。因此EX2000中,微软开始使用EDB和STM两个文档来分别保存两种格式的邮件。并且在两个文档之间建立了引用和关联。对于用户来说,他的邮箱实际上是跨越了EDB和STM文档一起组成的。另外,需要注意的是,EDB文档中还保留着用户的邮箱结构。所以EDB文档更加重要。那么EDB和STM是怎么协同工作的呢?我们以几个情景来分析之。 BBS.bitsCN.com网管论坛

情景一:用户使用OUTLOOK(MAPI)发送接收邮件

在该情景下,用户将邮件通过MAPI协议提交给数据库,直接被保存EDB文档中。当用户通过MAPI访问邮箱里的邮件时,假如被访问的邮件在EDB里,直接返回,假如在STM里(如外来邮件),则执行转换,将STM转换为EDB文档格式,再返回用户。

情景二:用户使用标准SMTP/POP3/IMAP4等协议访问

用户使用非MAPI协议提交的邮件,内容保存在STM文档里,但是由于EDB里有邮箱结构,STM没有,因此系统会把邮件的重要信息提取出来,放在EDB里。当用户用MAPI提取邮件时,过程同上,当用户通过标准协议访问时,同样需要进行格式转换,转换为STM文档格式返回。

这些转换是在后台发生的。对用户来说是透明的。通过上面的描述,您会看到,这两个文档是紧密联系的缺一不可。所以,在任何时间我们都不要单独操作这两个文档,他们是个整体。同时也要注意的是,无论用户使用何方式访问邮箱,都需要向EDB文档请求邮箱结构信息,这是需要注意的。

四、LOG文档的重大作用

在论坛里经常会看到有人说我的硬盘怎么很快就没了,一看原来是日志文档搞的鬼,于是就有人删除日志文档,甚至使用循环日志来强制减少日志,甚至有人提出这样的疑问,日志到底有什么用?是不是多余的?那我们来看看日志的重大作用。 www_bitscn_com

对于一个SG来说,系统会产生一系列的日志,这些日志的扩展名为LOG,前缀一般是E00、E01……除了这些连续的日志文档外,更有一些特别的日志文档(res1.log,res2.log,e0x.chk),他们又有什么用呢?我们的管理员通常不喜欢备份这一操作,因此对这些日志是痛恨不已啊。那么微软在EXCHANGE数据库系统中引入日志的作用难道真的是多此一举吗?我们从以下几个方面来考察一下日志的作用:
1、作为一个企业级的邮件系统,必须要确保数据安全和完整。必须能够面对随时可能发生的意外灾难,把数据损失降低到最小。
2、必须提供高性能的邮件处理能力,对数据库中的邮件的事务操作在完成后必须马上(或是说立即)被记录在存储介质上(见前面的事务持久性说明)
3、灾难发生后,使用数据库备份恢复必须要返回到灾难发生前一刻的数据库状态(这是至关重要的!!)

现在我们来更进一步的看一下,当用户要修改邮箱中的内容时,被修改的内容首先被提取出来放到内存中,实际的修改是发生在内存里的,这是众所周知的,当修改完成后,这些内容必须被尽快写回存储介质,这样才表示一个事务成功完成了。 bitscn.com

从事务的描述中我们能够看到,事务是具备原子特性的,为了确保数据库的一致和完整,事务必须全部成功或全部失败,假如事务失败,则必须回滚到事务开始的状态。而当邮件在内存中修改完成后,此时事务并没有完成(为什么呢?)因为一旦系统崩溃,这些修改就丢失了。所以要确保事务修改完成,必须尽快将修改写回到

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Exchange 2000 OWA修改密码终结版版

下一篇: 安装Exchange要考虑的问题(图)

热门词条
热门标签