数据库篇
在这篇教程中,我讨论了不同种类的能够引起Exchange服务器磁盘输入输出(disk I/O)的因素——Exchange数据库(Database)和事务日志(transaction logs)、邮件传输代理(MTA)和简单邮件传输协议(SMTP)队列、Windows虚拟内存文件(pagefile)、标引和已删除Exchange数据库页面——还有这些构成如何被安装用来最优化Exchange服务器性能和防止磁盘I/O瓶颈。
简介:
因为微软Exchange服务器是这样一个磁盘加强的应用程序,所以要确信磁盘子系统(disk subsystem)能够满足实际需求是非常重要的。
在这篇教程中,我讨论了不同种类的能够引起Exchange服务器磁盘输入输出(disk I/O)的因素——Exchange数据库(Database)和事务日志(transaction logs)、邮件传输代理(MTA)和简单邮件传输协议(SMTP)队列、Windows虚拟内存文件(pagefile)、标引和已删除Exchange数据库页面——还有这些构成如何被安装用来最优化Exchange服务器性能和防止磁盘I/O瓶颈。
注意:这篇教程是假定你想为包含邮件箱和公共文件夹的Exchange服务器进行磁盘资源的优化。
第一部分:Exchange磁盘性能优化:数据库篇
最明显的引起磁盘I/O的Exchange服务器构成是Exchange服务器数据库。Exchange数据库是基于连接引擎技术(Jet)并且随机访问的。因此,微软推荐你给数据库分出一个独立卷。
更明确的是,你需要通过存储组(Storage group)来组织你的Exchange数据库。微软推荐你在Exchange存储组中的Exchange数据库分配一个独立的卷。例如,如果你的Exchange服务器有8个数据库在4个不同的Exchange存储组中,你要创建4个不同的卷——每个卷针对一个存储组。
磁盘I/O性能对于存放Exchange数据库的卷来说非常重要,因此最好把这些卷放到一个基于SAN或者RAID 0+1的卷内。
要移动这些Exchange数据库:
1.
打开Exchange系统管理起并且到Exchange管理组->你的管理组->服务器->你的服务器->Exchange存储组包含数据库->你要打开的Exchange数据库。
2.
右键点击你要移动的存储(每个Exchange数据库都必须被分别移动)并且选择“属性”。
3.
选择数据库按钮来查看这个存储的数据库和的位置。
你将必须移动分别移动Exchange数据库和streaming file,但是我推荐你把它们移动到同一个位置。
事务日志篇
另外一个能导致IO的是Exchange服务器事务日志。Exchange服务器向事务日志内写入数据,然后把这些数据提交到Exchange数据库。Exchange事务日志同样使用于灾难恢复进程和Exchange数据库故障。
另外一个能导致IO的是Exchange服务器事务日志。Exchange服务器向事务日志内写入数据,然后把这些数据提交到Exchange数据库。Exchange事务日志同样使用于灾难恢复进程和Exchange数据库故障。
因为事务日志如此是Exchange灾难恢复进程中如此重要的一个部分,这也是它为什么要和Exchange数据库之外使用单独的磁盘的原因。从性能立场看看来,让Exchange事务日志和数据库保持隔离也非常重要。
因为在一个Exchange存储群内的所有的数据库都共享一系列共同的事务日志文件,你需要为每个存储群内的单独卷来存放Exchange事务日志。
此外,Exchange服务器以线性方式写入事务日志,所以推荐使用RAID阵列,你可以使用RAID1阵列而又不用损失性能。微软也推荐基于SAN的RAID1阵列。
要移动一系列Exchange服务器事务日志:
1.
打开Exchange系统管理器并且找到管理组->你的管理组->服务器->你的服务器->你想要移动事务日志的存储组。
2.
右键点击Exchange存储组并且选择属性。
3.
在事务日志位置旁点击浏览按钮并且选择一个新的地址。
MT MTA
和SMTP篇
在介绍完Exchange服务器的数据库和事务日志,消耗磁盘最多数目的I/O的资源就是queue队列,Exchange服务器使用两个不同的队列:邮件传输代理队列(MTA Queue)和简单邮件传输协议队列(SMTP Queue)。
邮件传输代理(MTA)和简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)
在介绍完Exchange服务器的数据库和事务日志,消耗磁盘最多数目的I/O的资源就是queue队列,Exchange服务器使用两个不同的队列:邮件传输代理队列(MTA Queue)和简单邮件传输协议队列(SMTP Queue)。
MTA queue被用来作为来自Exchange 5.5服务器的消息、或者那些通过X.400连接而来的消息的临时消息资源库(Message Repository), MTA queue同时也被用来在当邮箱被移动时临时存储消息。SMTP Queue处理传入或者传出SMTO消息。
你可能要考虑你个别服务器的需要来确定对邮件传输代理队列(MTA Queue)和简单邮件传输协议队列(SMTP Queue)的布置。在多数Exchange Server 2003部署中,邮件传输代理队列(MTA Queue)很少被用到,所以把邮件传输代理队列(MTA Queue)和简单邮件传输协议队列(SMTP Queue)存放到同一卷内是可以的。
如果你的邮件传输代理队列(MTA Queue)使用比较多,那么把你的邮件传输代理队列(MTA Queue)放到你的简单邮件传输协议队列(SMTP Queue)中就不合适了。如果你的Exchange服务器接受很多的SMTP信件以至于不能满足所有的需求,你可能同样要提供一个在两个队列之间的卷。
无论你是否决定把邮件传输代理队列(MTA Queue)和简单邮件传输协议队列(SMTP Queue)组合在一起,它们都需要被存放到一个独立的分区内。微软推荐一个基于SAN的RAID 0+1分卷。
一些管理员都知道这个问题,并且不为邮件传输代理队列(MTA Queue)和简单邮件传输协议队列(SMTP Queue)使用一个单独的卷。如果你决定不想为Exchange服务器队列准备一个单独的分卷,那么和Exchange数据库和事务日志一样,你不应该把这些队列放在一个相同的卷内。
要移动简单邮件传输协议队列(SMTP Queue)
1.
打开Exchange系统管理器并且找到管理组->你的管理组->服务器->你的服务器->协议->默认SMTP虚拟服务器;
2.
右键点击默认SMTP虚拟服务器并且选择属性;
3.
找到消息栏并且为SMTP设置位置。
要移动邮件传输代理队列(MTA Queue)
1.
进入Exchange服务管理器->管理组->你的管理组->服务器->你的服务器->协议->X.400
2.
右键点击X.400,然后选择属性,你可以在这个页面中设置移动邮件传输代理队列位置。
3.
服务器索引篇
Exchange服务器允许你编译Exchange数据库的全文索引(full-text indexes)来让内容搜索变得简单,从性能的角度来看,最好是禁用这个功能
Exchange服务器允许你编译Exchange数据库的全文索引(full-text indexes)来让内容搜索变得简单,从性能的角度来看,最好是禁用这个功能。
Exchange服务器内容索引(content indexing)经常引起额外的分页操作(paging),因为经常要写入到索引内容,磁盘I/O循环同样被消耗。也就是说,内容索引消耗很多的系统资源。
当然,我知道禁止这个功能对于一些Exchange服务器环境下并不适合,当处在那些环境下,你能做的最好的办法是把索引移动到另外一个位置来尽可能地减少索引进程带来的影响。
默认情况下,内容索引被存放在C盘下面,从性能的角度来说,这可能是最坏的存放地点了。因为C盘同样是Windows页面文件的默认存放地点。页面文件和索引文件经常在I/O循环时发生“战争”。
要布置索引文件,你有以下两个选项
·
把页面文件移动到一个单独的卷,这样离开在C盘的索引文件;
·
移动页面文件到包含Exchange数据库的卷内。
我知道这看起来并不能解决问题,但是事实上这的确是微软的建议,为什么你要使用那个用来存放Exchange数据库的卷来存放索引文件呢?因为它们都使用随机文件访问(random file access),这和线性访问相反。你要注意的唯一一件事情就是你选择的卷是足够快来服务数据库和索引。
要移动Exchange服务器索引
1.
暂停所有的全局索引和增量索引进程
2.
打开命令提示行窗口并且使用 CATUTIL工具来移动索引
CATUTIL工具可能用起来有一点乏味。如果你需要一些帮助,你可以使用下面的命令:CATUTIL MOVECAT /?
你需要做的一件事情就是知道在Exchange系统管理器(Exchange System Manager即ESM)将有一个问题。在你移动完索引之后,Exchange系统管理器仍然显示索引文件在原来的位置。要改变索引的位置,你可以在主持表内修改一下。
HKEY_LOCAL_MACHINE\Software\Microsoft\Search\1.0\Indexer\\\ProjectPath.
不要试图修改注册表的键值。
1.