许多组织机构都使用了微软的Exchange 2000服务器,并且按照自己的要求重新进行了设计。而对于该类型的设计而言,磁盘的I/O设计占了整个设计的很大一部分,因此本文将从硬件的观点来讨论一下如何进行Exchange的存储和I/O设计。
对于设计者而言,我们都非常关心到底选择使用什么标准的RAID来作为Exchange的存储器。以我个人意见,我认为RAID 0不太好,因此选择RAID 5或者RAID1(或者是0+1,在设计上看来,你可以把它看成与RAID 1一样)。我注意到,在早期版本的Exchange中,绝大多数的组织机构通常都使用RAID 5配置,然而在配置Exchange 2000时,设计者不约而同转向使用RAID 1/0+1。这一趋势有可能与以下两方面因素有关:一是微软建议用户使用RAID 1/0+1而不是RAID 5;另一方面则是硬件提供商们更愿意提供RAID 1/0+1。我个人也偏爱于使用RAID 1/0+1。当你在像Exchange这样的应用程序上使用RAID 5的时候,RAID 5会导致大量的写操作的开销。
系统设计人员经常得考虑由此而产生的使用RAID 5的影响,就是不断配置RAID 5磁盘阵列。然而,假如设计人员对RAID 5配置恰当,同时熟悉I/O应用程序需要和RAID 5的系统开销,那么RAID 5也是一个可行的解决方案。我在这里给你一个建议,在你决定使用哪种标准的RAID之前,好好阅读一下以下有关这方面的经验规则:
规则1:每个MAPI用户每秒需要5个到10个的I/O操作。根据微软提供的信息和Exchange配置以及测试结果,这种情况非常典型。因此,在磁盘I/O能力上,一个有1000个用户的服务器需要每秒钟能够提供至少1000次I/O操作。当然,每个MAPI用户的需求可能不一样,因而你也必须知道用户的一些需求信息。如果你使用其余的协议,例如POP或者IMAP,你的实际负载在不同时间可能具有较大差别,这时你就需要重新进行负载量测试了。
规则2:RAID有一定的写操作负担。根据你选择的RAID,在存储设计时你必须考虑到系统开销这项因素。由于RAID 0不提供保护措施,因而没有系统开销。RAID 1/0+1的系统开销为1×读+2×写,这就意味着对于每项写操作任务,系统必须在磁盘阵列上完成两项物理I/O操作。RAID 5的负担更重,它的系统开销为1×读+4×写。
规则3:一般情形下Exchange任意的I/O的读和写都是各占50%。对Exchange服务器而言,数据库I/O是最重要的I/O设计。我曾经见过有的Exchange服务器处理数据的读/写比例划分为40/60或60/40。但是在设计时,一般来说采用50/50的比例还是最为安全的。
规则4:磁盘或者驱动器每秒钟应能够承受100次的任意I/O操作。尽管这个估计相对来说是比较保守(一些磁盘能够管理每秒钟120次的I/O操作),但还是比较合适的。这个数字只适于任意I/O操作,大多数磁盘可以承受更多的连续I/O操作(连续I/O操作主要用于Exchange服务器的日志处理)。由于Exchange数据库的I/O是任意的,因此我们使用每块磁盘每秒钟100次I/O操作这项准则。
应用这些规则的第一步是先要明白以下两点:一是在存储组SG(Storage Group)方面你的服务器上的用户负载量,二是数据库水平。例如,如果你的服务器上有1000个用户,同时这些用户被分成两个SG,这两个存储组分别用专门的磁盘阵列存储用户的数据库(每个阵列500个用户)。这样,你就可以预测每个阵列每秒钟有500个I/O操作的峰值负载的情况。然后,考虑RAID系统开销和应用程序需求方面的因素。将规则3和规则4应用到在一个阵列中有500个MAPI用户的例子上,你就可以计算出RAID 1/0+1的需要。例如,对于一个每秒钟具有500个I/O操作的Exchange服务器来说,由于磁盘子系统有RAID系统开销,因此磁盘阵列每秒钟必须能够提供750个I/O操作(750={250+2×250})。对于RAID 5,应该为每秒钟1250个I/O操作(1250={250+4×250})。然后决定阵列所需的驱动器的数目(见规则4)。对于RAID 5,你需要12个或者13个磁盘驱动器(1250/100=12.5)。而对于RAID 1/0+1,你只需要7个或者8个磁盘驱动器(750/100=7.5)。可见对于RAID 5,你所需的额外开销是很明显的(大概为40%),因此我通常更喜欢RAID 1/0+1,尽管表面上看来RAID 5是能够节省一大笔费用,但随后的成本是不菲的。另外,当你决定如何进行Exchange存储分配时,也应该考虑许多操作上的和费用上的因素。上述经验规则对我个人的工作帮助很大,我也希望当你设计Exchange服务器时它们能够对你有所帮助
本文作者: