æµ…è°ˆExchange Server邮件å˜å‚¨ç³»ç»Ÿ---原ç†ç¯‡
æµ…è°ˆExchange Server邮件å˜å‚¨ç³»ç»Ÿ---原ç†ç¯‡
作者/喻勇
导读:
本文从数æ®åº“基本原ç†çš„角度入手,通过对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æ•°æ®åº“æ¥æä¾›æ”¯æŒçš„。
图-1 IS和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è¿™æ ·çš„ç¼©å†™æ¥æè¿°äº‹åŠ¡çš„ç‰¹ç‚¹ï¼š
Atomic
(原å的) äº‹åŠ¡å¿…é¡»æ˜¯å…¨æœ‰æˆ–è€…å…¨æ— çš„æ“作。è¦ä¹ˆå…¨éƒ¨éƒ½æˆåŠŸçš„å¾—åˆ°æ›´æ–°ï¼Œè¦ä¹ˆå…¨éƒ¨éƒ½ä¸è¢«æ›´æ–°ã€‚
Consistent
(一致的) 一个æˆåŠŸæäº¤ï¼ˆcommit)的事务必须使数æ®åº“处在一个一致的状æ€ã€‚(数æ®åº“结构æ£ç¡®ï¼Œæ‰€æœ‰çš„约æŸå’Œå…³è”都得到满足)
Isolated
(å¤ç«‹çš„) 所有未æäº¤çš„æ›´æ”¹éƒ½å¿…须能够和其他事务å¤ç«‹ï¼Œå³å…¶ä»–äº‹åŠ¡æ— æ³•çœ‹åˆ°å…¶ä»–äº‹åŠ¡ä¸æ£åœ¨è¿›è¡Œçš„æ›´æ”¹ã€‚
Durable
(æŒä¹…的) 当事务一旦æäº¤ï¼Œæ‰€åšçš„æ›´æ”¹å¿…é¡»å˜æ”¾åˆ°ç¨³å®šçš„å˜å‚¨ä»‹è´¨ä¸Šï¼Œé˜²æ¢ç³»ç»Ÿå¤±è´¥è€Œå¼•èµ·æ•°æ®åº“ä¸ä¸€è‡´ã€‚
我们会在åŽé¢çš„篇幅ä¸è¯¦ç»†çš„讨论Exchange Serverå’ŒESEæ˜¯æ€Žæ ·å®žçŽ°ä¸Šè¿°çš„è¦æ±‚的。
对于Information Store Serviceæ¥è¯´ï¼ŒESEå°è£…了对数æ®åº“æ“作的所有细节,ISåªè¦æ ¹æ®ESEæä¾›çš„æŽ¥å£è¿›è¡Œè°ƒç”¨æ—¢å¯ã€‚在Exchange Server 2000ä¸ï¼ŒISæœåŠ¡å¯¹åº”çš„è¿›ç¨‹æ˜¯store.exe,æ¯ä¸€ä¸ªStorage Group会在store.exe进程ä¸äº§ç”Ÿä¸€ä¸ªESE引擎的实例。
图-2 Store进程ä¸SGå’Œ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å¯ä»¥è¯†åˆ«çš„æ ¼å¼ï¼Œè¿™æ ·åšå¸¦æ¥çš„巨大的性能æŸå¤±ã€‚
图-3 å•独edb文件时的Store访问情况
在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”)也会在åŽå°æ‚„æ‚„çš„å‘生。
图-4 edb和stm文件的关系
通过上é¢çš„æè¿°ï¼Œæˆ‘们知é“在实际的Exchange Server环境ä¸ï¼Œè¿™ä¸¤ä¸ªæ–‡ä»¶æ˜¯ç´§å¯†å…³è”的。在任何时候都ä¸è¦å•独的æ“作这两个文件,è¦å§‹ç»ˆæŠŠä»–们视为一个整体。edb文件ä¸åŒ…å«äº†æ¯ä¸€ä¸ªé‚®ç®±çš„内容列表(store tables),当客户端需è¦å¾—到文件夹的内容时,都必须å‘edb文件å‘å‡ºè¯·æ±‚ã€‚ä¸¤ç§æ ¼å¼çš„æ–‡ä»¶ï¼Œå¯¹ä¸¤ç§ç±»åž‹çš„å议分别æä¾›äº†æ”¯æŒï¼Œæœ‰æ•ˆçš„å‡å°‘了ä¸å¿…è¦çš„æ ¼å¼è½¬æ¢çš„å‘生。
Log文件的作用
我们讨论Exchange Server的邮件å˜å‚¨ï¼Œå°±ä¸å¾—ä¸è°ˆè°ˆå®ƒçš„æ—¥å¿—æ–‡ä»¶ã€‚æˆ‘ä¸æ¢ä¸€æ¬¡çš„å¬åˆ°Exchange Server的管ç†å‘˜æŠ±æ€¨ï¼šæ—¥è‡³æ–‡ä»¶æ¯å¤©éƒ½åœ¨ç–¯é•¿ï¼Œå¤ªæ¶ˆè€—硬盘空间了。
我们æ¥çœ‹çœ‹è¿™äº›æ—¥å¿—文件到底有些什么作用。对于æ¯ä¸€ä¸ªStorage Group,Exchange Server会产生一系列与之对应的日志文件。这些日志文件的大å°ä¸º5M,扩展å为log,他们的å‰ç¼€ä¸ºE0x,å…¶ä¸x是日志文件所对应的Storage Group的编å·[脚注:虽然在Storage Groupçš„å±žæ€§ä¸æœ‰“Log File Prefix”这一个文本框,但实际上这是ä¸èƒ½æ›´æ”¹çš„。]ã€‚å› æ¤ç¬¬ä¸€ä¸ªStorage Group的日志文件å‰ç¼€ä¸ºE00,第二个的为E01ï¼Œä¾æ¬¡ç±»æŽ¨ã€‚è¿™æ ·åšçš„目的是当å˜åœ¨å¤šä¸ªStorage Group时,å¯ä»¥é¿å…管ç†å‘˜åœ¨ç»´æŠ¤çš„æ—¶å€™æŠŠæ—¥å¿—文件”å¼ å† æŽæˆ´”。å¦å¤–,除了连ç»çš„Log文件,我们还能看到E0x.chkã€Res1.logã€Res2.logç‰æ–‡ä»¶ã€‚
很多管ç†å‘˜éƒ½å¯¹æ—¥å¿—文件éžå¸¸çš„头疼,那么,微软在Exchange Server的数æ®åº“系统ä¸å¼•å…¥Logæ–‡ä»¶çš„ç›®çš„æ˜¯ä»€ä¹ˆå‘¢ï¼Ÿæˆ‘ä»¬ä»Žä»¥ä¸‹å‡ ä¸ªæ–¹é¢æ¥çœ‹ï¼š
1. 作为一个ä¼ä¸šçº§çš„邮件数æ®åº“系统,必须åšåˆ°æ•°æ®å®‰å…¨å’Œå®Œæ•´æ€§çš„ä¸‡æ— ä¸€å¤±ã€‚å¿…é¡»èƒ½å¤Ÿé¢å¯¹éšæ—¶å¯èƒ½å‘生的崩溃和宕机,What happens if we crash? è¦èƒ½å¤ŸæŠŠæ•°æ®çš„æŸå¤±å‡å°‘到最新程度。
2. å¿…é¡»æä¾›é«˜æ€§èƒ½çš„邮件åžå能力,对数æ®åº“ä¸çš„邮件的事务æ“åšåœ¨å®ŒæˆåŽå¿…须马上被记录到å˜å‚¨ä»‹è´¨ä¸Šï¼ˆäº‹åŠ¡çš„æŒä¹…性)。
3. 当ç¾éš¾å‘生时,使用数æ®åº“的备份æ¢å¤å¿…é¡»è¦è¿”回到ç¾éš¾å‘生å‰ä¸€åˆ»çš„æ•°æ®åº“状æ€ã€‚
现在我们更进一æ¥çš„æ¥çœ‹ä¸€ä¸‹ï¼Œå½“æˆ‘è¦ä¿®æ”¹é‚®ç®±ä¸çš„内容时,被修改的内容首先被读å–å‡ºæ¥æ”¾åˆ°å†…å˜ä¸ã€‚实际的修改å‘生在内å˜ä¸ï¼Œå½“修改完æˆåŽï¼Œè¿™äº›å†…容必须被写回å˜å‚¨ä»‹è´¨ï¼Œæ‰èƒ½è¡¨ç¤ºä¸€ä¸ªä¿®æ”¹æˆåŠŸåœ°å®Œæˆäº†ã€‚
å¯¹äºŽè¿™æ ·çš„ä¿®æ”¹è¿‡ç¨‹ï¼Œåœ¨æ•°æ®åº“级别上,我们å«åšä¸€ä¸ª“事务”。我们知é“ï¼Œä¸ºäº†ç¡®ä¿æ•°æ®åº“的完整性和一致性,事务的æ“作是“原å级别”的。如果一个事务æˆåŠŸï¼Œé‚£ä¹ˆæ ‡å¿—ç€ä»–所作的改å˜è¢«æ°¸ä¹…çš„ä¿å˜ä¸‹æ¥äº†ï¼›å¦‚果一个事务失败,系统必须回到事务开始之å‰çš„状æ€ã€‚
当系统在内å˜ä¸å®Œæˆä¿®æ”¹æ—¶ï¼Œäº‹åŠ¡å¹¶æ²¡æœ‰å®Œæˆã€‚如果这个时候宕机,数æ®åº“ä¸ä¿å˜çš„ä»ç„¶æ˜¯æ²¡æœ‰æ›´æ”¹çš„å†…å®¹ã€‚é‚£ä¹ˆï¼Œæ€Žä¹ˆæ ·ç¡®ä¿åœ¨å†…å˜ä¸å®Œæˆçš„修改能够在第一时间写入到数æ®åº“呢(以达到数æ®åº“事务æŒä¹…æ€§çš„è¦æ±‚)?注æ„ï¼Œè¿™é‡Œçš„è¦æ˜¯ç¬¬ä¸€æ—¶é—´ï¼Œä¹Ÿå°±æ˜¯è¶Šå¿«è¶Šå¥½ã€‚如果我们直接å‘edbæ–‡ä»¶å†™å…¥ï¼Œæ— æ³•åšåˆ°æœ€å¿«ï¼Œå› 为,edb文件通常都很大,I/Oç³»ç»Ÿåœ¨å¯¹å¤§çš„æ–‡ä»¶è¿›è¡Œéšæœºå†™å…¥æ“作时,会花费大é‡çš„æ—¶é—´åœ¨ç‰å¾…ç£ç›˜æŸ¥æ‰¾åˆ°åˆé€‚çš„ç£é“和扇区,当系统ç¹å¿™æ—¶ï¼Œè¿™å°†ä¼šæ˜¯ä¸€ä¸ªç“¶é¢ˆã€‚å› æ¤ï¼Œæ•°æ®åº“系统使用日志文件,当内å˜ä¸çš„æ›´æ”¹å®ŒæˆåŽï¼Œé¦–先写入到日志文件ä¸ã€‚日志文件的尺寸很å°ï¼Œå†™å…¥æ€§èƒ½è¦è¿œè¿œä¼˜äºŽåºžå¤§çš„edb文件。在写入完æˆåŽï¼Œäº‹åŠ¡ä¹Ÿéšä¹‹æˆåŠŸçš„ä¿å˜åœ¨å˜å‚¨ä»‹è´¨ä¸Šäº†ã€‚Exchange Server 的数æ®åº“引擎会在åŽå°æŠŠLog文件ä¸çš„内容写入到数æ®åº“ä¸ï¼Œå› ä¸ºæ¤æ—¶äº‹åŠ¡æ“作已ç»å®Œæˆï¼Œå³ä½¿æ¤æ—¶æŽ‰ç”µæˆ–者宕机,也ä¸ä¼šä½¿å®Œæˆçš„事务é—失。这是日志文件的第一个作用:确ä¿äº‹åŠ¡èƒ½å¤Ÿåœ¨ç¬¬ä¸€æ—¶é—´ä¿å˜åˆ°éžæ˜“失å˜å‚¨ä»‹è´¨ä¸Šã€‚(æä¾›æŒä¹…性Durable支æŒï¼‰
æ ¹æ®ä¸Šé¢çš„æè¿°ï¼Œæˆ‘们知é“在è¿è¡Œä¸çš„Exchange Serveræ•°æ®åº“,是由三部分组æˆçš„
ï¬ å†…å˜ä¸å·²ç»å®Œæˆä¿®æ”¹ä½†æ˜¯è¿˜æ²¡æœ‰å†™å…¥æ—¥å¿—文件的内容(Dirt Page)。
ï¬ è¿˜æ²¡æœ‰å†™å…¥åˆ°æ•°æ®åº“文件的日志文件内容。
ï¬ Edbå’Œstm文件。
对于内å˜ä¸çš„æ•°æ®ï¼ˆDirt Page),这些数æ®ä¼šåœ¨ç³»ç»ŸæŽ‰ç”µæˆ–者崩溃时é—失。
Exchange Server使用了一个å为E0x.chk(Check Point)的文件记录了那些Log文件已ç»å†™å…¥åˆ°äº†æ•°æ®åº“文件。这是一个类似指针的记录。
图-5 Check Point文件的作用
我们å¯ä»¥ä½¿ç”¨å‘½ä»¤ ESEUTIL /MKæ¥æŸ¥çœ‹è¿™ä¸ªæ–‡ä»¶chk的内容
C:\...\Exchsrvr\BIN> ESEUtil /mk “C:\...\Exchsrvr\mdbdata\e00.chk”
Microsoft(R) Exchange Server(TM) Database Utilities
Version 6.0 Copyright (C) Microsoft Corporation 1991-2000. All Rights Reserved.
Initiating FILE DUMP mode...
Checkpoint file: C:\program files\exchsrvr\mdbdata\e00.chk
LastFullBackupCheckpoint: (0x0,0,0)
Checkpoint: (0x8,26DA,30)
FullBackup: (0x0,0,0)
FullBackup time: 00/00/1900 00:00:00
IncBackup: (0x0,0,0)
IncBackup time: 00/00/1900 00:00:00
Signature: Create time:03/28/2004 20:26:10 Rand:6519986 Computer:
Env (CircLog,Session,Opentbl,VerPage,Cursors,LogBufs,LogFile,Buffers)
( off, 202, 10100, 1365, 10100, 128, 10240, 40828)
Operation completed successfully in 1.47 seconds.
在命令的输出ä¸ï¼Œ Checkpoint: <0x8,26DA,30>è¡¨ç¤ºäº†å½“å‰æäº¤åˆ°æ•°æ®åº“文件的Log完全ä½ç½®ã€‚å…¶ä¸ï¼Œ0x8是Log文件的åºå·ï¼Œä¸€èˆ¬å¯¹åº”于E0x00008.log,å‰©ä¸‹çš„ä¸¤ä¸ªå‚æ•°æ˜¯Log文件内部页é¢ï¼ˆpage)的编å·ã€‚
䏋颿ˆ‘们å†çœ‹ä¸€ä¸‹æ—¥å¿—文件对系统备份和æ¢å¤çš„作用。
å‰é¢æåˆ°è¿‡ï¼ŒExchange Serverè¦æ±‚在ç¾éš¾å‘生åŽèƒ½å¤Ÿæ¢å¤åˆ°ç¾éš¾å‘生å‰ä¸€åˆ»çš„状æ€ã€‚对于一般的系统,我们总是æ¯å‘¨æˆ–者æ¯å¤©è¿›è¡Œå¤‡ä»½ï¼Œé‚£ä¹ˆï¼Œåœ¨å¤‡ä»½ä¹‹åŽå’Œç¾éš¾å‘生之å‰è¿™æ®µæ—¶é—´çš„æ•°æ®å¦‚ä½•ä¿æŠ¤ï¼Ÿç”æ¡ˆæ˜¯æ—¥å¿—文件。我们知é“,对于数æ®åº“的任何更改,都会先被写入到日志文件,然åŽå†ç”±æ—¥å¿—文件更新到数æ®åº“ä¸ã€‚我们现在å‡è®¾æœ‰è¿™æ ·ä¸€å¥—系统,在æ¯å¤©çš„3:00 AM进行备份,备份完æˆåŽï¼Œç³»ç»Ÿæ£å¸¸è¿è½¬ã€‚如果在ä¸åˆ12:00的时候系统出现故障,管ç†å‘˜ç”¨3:00AMçš„ç£å¸¦æ¢å¤äº†ç³»ç»Ÿï¼Œé‚£ä¹ˆï¼Œä»Ž3:00AM到12:00AM这段时间的数æ®ï¼Œå°†ç”±log文件æ¥å¡«è¡¥çš„。具体的情况是,当3:00AM的备份æ¢å¤å®ŒæˆåŽï¼ŒExchange Server会自动扫æåˆ°è·Ÿè¿™ä¸ªstore相关è”的日志文件夹,如果å‘çŽ°æœ‰æ¯”å½“å‰æ•°æ®åº“还新的日志å˜åœ¨ï¼ŒExchange Server会自动把这些日志按照顺åºå†™å…¥åˆ°æ•°æ®åº“ä¸ã€‚å› æ¤ï¼Œä»Ž3:00AM到12:00AM这段时间对数æ®åº“所作的更改,å¯ä»¥è¢«æ¢å¤å›žæ¥ã€‚这是日志文件第二个é‡è¦çš„ä½œç”¨ã€‚ï¼ˆå‰ææ˜¯æ²¡æœ‰å¼€å¯å¾ªçŽ¯æ—¥å¿—åŠŸèƒ½ï¼‰
有人å¯èƒ½ä¼šé—®ï¼Œå¦‚果数æ®åº“æ–‡ä»¶å’Œæ—¥å¿—æ–‡ä»¶åŒæ—¶æŸåæ€Žä¹ˆåŠžï¼Ÿç”æ¡ˆæ˜¯è¿™æ ·çš„:é¿å…è¿™ç§æƒ…况å‘生。首先,数æ®åº“文件æŸå的概率è¦è¿œè¿œå¤§äºŽæ—¥å¿—文件,å¦å¤–,微软推èçš„åšæ³•是把数æ®åº“文件和日志文件分别放置在ä¸åŒçš„ç£ç›˜ä¸Šã€‚æˆ‘ä»¬ä¼šåœ¨ä¸‹ä¸€æœŸçš„æ–‡ç« ä¸ç€é‡è®¨è®ºè¿™ä¸ªé—®é¢˜ã€‚
管ç†å‘˜é’ˆå¯¹æ—¥å¿—文件的抱怨是,这些文件会æ¯å¤©ä¸æ–çš„å¢žé•¿ï¼Œå¤§é‡æ¶ˆè€—硬盘空间。对于这个问题,唯一åˆç†çš„解决办法是:定期的åšé’ˆå¯¹Storage Group的全备份或增é‡å¤‡ä»½ã€‚å› ä¸ºExchange Server会在全备份或增é‡å¤‡ä»½å®ŒæˆåŽæŠŠè¿™æ¬¡å¤‡ä»½ä¹‹å‰äº§ç”Ÿçš„Logæ–‡ä»¶å…¨éƒ¨åˆ é™¤ã€‚å¾ˆå¤šç®¡ç†å‘˜æ‰‹åŠ¨çš„åˆ é™¤æ—¥å¿—æ–‡ä»¶ï¼Œæˆ–è€…å¯åЍ“循环日志”æ¥å‡å°‘å¯¹ç¡¬ç›˜ç©ºé—´çš„æ¶ˆè€—ï¼Œè¿™éƒ½æ˜¯ä¸æ£ç¡®çš„åšæ³•。残缺ä¸å…¨çš„æ—¥å¿—文件会使系统在进行备份æ¢å¤çš„æ—¶å€™æ— 法还原到最近的状æ€ã€‚å¦‚æžœä½ çš„ç³»ç»Ÿæ˜¯ä¸€å‘¨åšä¸€æ¬¡å…¨å¤‡ä»½ï¼Œè€Œä½ 碰巧åˆåœ¨å¤‡ä»½åŽåˆ é™¤äº†ä¸€äº›æ—¥å¿—æ–‡ä»¶ï¼Œé‚£ä¹ˆä½ å°±æœ‰å¯èƒ½åœ¨éœ€è¦æ¢å¤çš„æ—¶å€™ä¸¢å¤±å¤‡ä»½ä»¥åŽçš„æ•°æ®ã€‚è®°ä½ï¼Œæ•°æ®æ€»æ˜¯æ¯”ç£ç›˜ç©ºé—´æ›´å®è´µã€‚
ESEæ•°æ®åº“引擎以åŠInformation StoreæœåŠ¡çš„å¯åŠ¨å’Œå…³é—
在ESEå¼•æ“ŽåŠ è½½æ•°æ®åº“文件时,它会检查数æ®åº“æ–‡ä»¶çš„ä¸€ä¸ªç‰¹æ®Šæ ‡å¿—ä½ã€‚è¿™ä¸ªæ ‡å¿—ä½ä¿å˜äº†æ•°æ®åº“文件上次是å¦è¢«æ£å¸¸å…³é—。这个状æ€ç”±“ Consistent”或“ Inconsistent”æ¥è¡¨ç¤ºã€‚对于一个æ£å¸¸å…³é—的数æ®åº“文件,所有在Log文件和内å˜ä¸çš„å†…å®¹éƒ½åº”è¯¥å·²ç»æäº¤åˆ°æ•°æ®åº“文件ä¸ï¼Œåªæœ‰åœ¨è¿™ä¸ªæ—¶å€™ï¼Œæ•°æ®åº“æ‰ä¼šè¢«æ ‡è®°ä¸º“ Consistent”ã€‚æœ‰ä¸€ç‚¹éœ€è¦æ³¨æ„,在è¿è¡Œä¸çš„æ•°æ®åº“,它的状æ€ä¸€å®šæ˜¯“ Inconsistent”ï¼Œå› ä¸ºåœ¨Log文件ä¸è‚¯å®šè¿˜æœ‰æ²¡æäº¤åˆ°æ•°æ®åº“文件内容。对于一个已ç»å…³é—并且状æ€è¢«æ ‡ç¤ºä¸º“ Inconsistent”的数æ®åº“ï¼Œå¹¶ä¸æ„味ç€è¿™ä¸ªæ•°æ®åº“库文件æŸå了,“ Inconsistent”åªæ˜¯è¡¨ç¤ºï¼Œè¿˜æœ‰æœªæ›¾å†™å…¥åˆ°æ•°æ®åº“文件的内容ä¿å˜åœ¨Log文件ä¸ã€‚
使用命令 ESEUTIL /MHå¯ä»¥æŸ¥å¸¸çœ‹æ•°æ®åº“的关é—状æ€ã€‚
C:\...\Exchsrvr\BIN> ESEUtil /mh “C:\...\Exchsrvr\mdbdata\priv1.edb”
Microsoft(R) Exchange Server(TM) Database Utilities Version 6.0
Copyright (C) Microsoft Corporation 1991-2000. All Rights Reserved.
Initiating FILE DUMP mode...
Database: C:\program files\exchsrvr\mdbdata\priv1.edb
File Type: Database
Format ulMagic: 0x89abcdef
Engine ulMagic: 0x89abcdef
Format ulVersion: 0x620,9
Engine ulVersion: 0x620,9
Created ulVersion: 0x620,9
DB Signature: Create time:03/28/2004 20:26:24 Rand:6536656 Computer:
cbDbPage: 4096
dbtime: 63139 (0-63139)
State: Clean Shutdown <-----表示数æ®åº“关闿—¶çš„状æ€
Log Required: 0-0
Streaming File: Yes
Shadowed: Yes
Last Objid: 574
…<ç•¥> …
Operation completed successfully in 1.391 seconds.
Stateå—æ®µçš„“Clean Shutdown”表示数æ®åº“处在Consistent状æ€ã€‚
当ESEåŠ è½½æ•°æ®åº“文件时,对于“Consistent”的数æ®åº“文件,它直接Mountå…¶ä¸çš„Store;对于“In consistent”的数æ®åº“文件,ESE将执行称之为“Soft Recovery”的过程,在这个过程ä¸ï¼ŒæœªåŠæ—¶æäº¤è¿›æ•°æ®åº“文件的日志内容将被写入数æ®åº“。当所有的日志都写入完毕,数æ®åº“æ‰ä¼šè¢«æ ‡è®°ä¸º“ Consistent”状æ€ï¼Œç„¶åŽæ£å¸¸åŠ è½½ã€‚
Soft Recovery开始的时候,ESEä¼šæ ¹æ®check point文件所指å‘çš„ä½ç½®æ¥è¿›è¡ŒLog文件的写入(如果check point文件也æŸå或者ä¸å˜åœ¨ï¼Œé‚£ä¹ˆæ•°æ®åº“就从最旧的Log文件开始)。当ESE从Log文件å‘Storeå†™å…¥æ•°æ®æ—¶ï¼Œå®ƒä¼šæ ¹æ®dbTime这个时间戳æ¥å†³å®šæ˜¯å¦éœ€è¦æŠŠLog文件写入到数æ®åº“。
在这个过程ä¸ï¼ŒEvent Logä¸ä¼šæœ‰å¦‚下的记录
Event Type: Information
Event Source: ESE98
Event Category: Logging and Recovery
Event ID: 301
Date: 10/17/2001
Time: 5:52:11 AM
User: N/A
Computer: <server_name>
Description: Information Store (XXXX) The database engine has begun replaying logfile ..\..\E0014553.log.
我们也å¯ä»¥é’ˆå¯¹å·²ç»“Dis-mount”的并且是处在“Inconsistent”的数æ®åº“手工地进行“Soft Recovery”。
具体的命令是“eseutil /r”,åŽè·Ÿæ•°æ®åº“文件的路径。(推è在掉电é‡å¯ä»¥åŽæ‰§è¡Œæ¤å‘½ä»¤ï¼Œå¯ä»¥å…ˆè¿è¡Œeseutil /mh确定数æ®åº“状æ€ï¼Œå¦‚果是“Inconsistent”ï¼Œå†æ‰§è¡Œæ¤å‘½ä»¤ï¼‰
ç”±æ¤æˆ‘们å¯ä»¥å‘现,Exchange Server有能力对未æ£å¸¸å…³é—的数æ®åº“进行“è‡ªæˆ‘ä¿®å¤”ã€‚å› æ¤ï¼ŒESEç¡®ä¿äº†å³ä½¿åœ¨çªç„¶æŽ‰ç”µçš„æƒ…况下,数æ®åº“ä»ç„¶èƒ½å¤Ÿå¤„åœ¨ä¸€ä¸ªå¯æ¢å¤çš„状æ€ï¼Œå¹¶ä¸”会在é‡å¯æœåС以åŽè‡ªåŠ¨å®ŒæˆçŠ¶æ€æ£€æµ‹å’Œæ¢å¤ã€‚
M盘的æ¥é¾™åŽ»è„‰
在Exchange Server 2000å‘布时,微软æå‡ºäº†“Web Storage System”çš„æ¦‚å¿µï¼Œå…¶æ ¸å¿ƒå°±æ˜¯æä¾›å¤šç§é€”径æ¥è®¿é—®Exchange Server的数æ®åº“。这些途径包括
ï¬ æ–‡ä»¶ç³»ç»Ÿ/IFS
ï¬ Http WebDAV
ï¬ ExOLEDB/ ADO
ï¬ CDO
å…¶ä¸ï¼Œæä¾›æ–‡ä»¶ç³»ç»ŸæœåŠ¡çš„IFS技术是引起争议比较多的一个模å—。在安装Exchange Server 2000åŽï¼Œç³»ç»Ÿä¼šå‡ºçŽ°ä¸€ä¸ªM盘。这个M盘,就是由微软通过IFS(Installable File System)技术实现的一个数æ®åº“åˆ°æ–‡ä»¶ç³»ç»Ÿçš„æ˜ å°„ã€‚å¼€å‘人员å¯ä»¥é€šè¿‡æ ‡å‡†çš„æ–‡ä»¶æ“作API(如CreateFile, OpenFileç‰ï¼‰æ¥è®¿é—®Exchange Server的邮箱和邮件。
打开Mç›˜ï¼Œä½ å¯ä»¥çœ‹åˆ°ä¸€ä¸ªä»¥ä½ 当å‰åŸŸå命åçš„æ–‡ä»¶å¤¹ã€‚åœ¨è¿™ä¸ªæ–‡ä»¶åŠ ä¸‹é¢ï¼Œä½ 会看到一个包å«äº†æ‰€æœ‰é‚®ç®±çš„æ–‡ä»¶å¤¹ï¼Œå为MBX。MBX下é¢ï¼Œæ˜¯ä»¥ç”¨æˆ·çš„姓忥命å的邮箱文件夹,在æ¯ä¸ªæ–‡ä»¶å¤¹ä¸‹é¢ï¼Œéƒ½å¯ä»¥çœ‹åˆ°Inboxã€Outboxç‰é‚®ç®±çš„内容。æ¯ä¸€å°ä¿¡ä»¶ï¼Œéƒ½æ˜¯ä»¥æ‰©å±•å为EML的文件æ¥è¡¨ç¤ºçš„。
ExIFS使用了一个å为\\.\BackOfficeStorage的特殊共享åç§°æ¥æŒ‡å‘æ•°æ®åº“æ–‡ä»¶ã€‚ä½ å¯ä»¥åœ¨å‘½ä»¤è¡Œä¸è¿è¡Œ“Dir \\.\BackOfficeStorage\domain.con\MBX”,这个命令的实行结果跟直接使用Mç›˜ä½œä¸ºç›˜ç¬¦æ˜¯ä¸€æ ·çš„ã€‚
我们å¯ä»¥é€šè¿‡ä¿®æ”¹æ³¨å†Œè¡¨çš„æ–¹å¼æ‰€æ¥æ”¹å˜Exchange Serveræ‰€æ˜ å°„çš„ç›˜ç¬¦ã€‚
HLKM\System\CurrentControlSet\Services\ExIFS\Parameters
Name: DriveLetter
Data Type: REG_SZ
Value: Drive letter for IFS (盘符,ä¸éœ€è¦è·Ÿå†’å·)
在更改注册表以åŽï¼Œéœ€è¦é‡å¯Information Store Service使更改生效。
我们也å¯ä»¥ä½¿ç”¨å¦‚ä¸‹çš„å‘½ä»¤è¡Œå·¥å…·æ¥æ”¹å˜Mç›˜çš„æ˜ å°„ï¼š
Subst X: \\.\BackOfficeStorage 注释:把Exchange Storeæ˜ å°„åˆ°X盘
Subst /d M: æ³¨é‡Šï¼šåˆ é™¤å¯¹Mç›˜çš„æ˜ å°„
如果我们移除了M盘,我们还是å¯ä»¥é€šè¿‡\\.\BackOfficeStorage这个共享åå—æ¥è®¿é—®Exchange Server的数æ®åº“。
ExIFS在Windows䏿˜¯ä½œä¸ºä¸€ä¸ªéšè—çš„æœåŠ¡æ¥è¿è¡Œçš„。下é¢çš„æ³¨å†Œè¡¨é”®å€¼å®šä¹‰äº†è¿™ä¸ªæœåŠ¡çš„å‚æ•°ï¼š
HLKM\System\CurrentControlSet\Services\ExIFS\Parameters
由于这是一个éšè—çš„æœåŠ¡ï¼Œå› æ¤æˆ‘们没有办法通过ServiceæŽ§åˆ¶é¢æ¿æ¥å¯¹è¿™ä¸ªæœåŠ¡è¿›è¡ŒæŽ§åˆ¶ã€‚ä½†æ˜¯æˆ‘ä»¬å¯ä»¥é€šè¿‡å‘½ä»¤è¡Œæ¥åšåˆ°ï¼š
NET Start ExIFS 注释:å¯åЍæœåŠ¡
NET Stop ExIFS æ³¨é‡Šï¼šåœæ¢æœåŠ¡
下é¢è¿™å¼ 图表示了ExIFS的架构。
图-6 ExIFS的架构
ExIFS是使用è¿è¡Œåœ¨Windowså†…æ ¸æ¨¡å¼çš„ExIFS.sysé©±åŠ¨ç¨‹åºæ¥å®žçŽ°çš„ã€‚
我们知é“,文件系统和Exchange Serverçš„store是两个完全ä¸åŒçš„体系结构。文件系统ä¸çš„æ–‡ä»¶åªåŒ…嫿¯”较少的属性,而ä¿å˜åœ¨Storeä¸çš„邮件,有其特定的属性,并且,在Storeä¸ï¼Œé‚®ä»¶ä¹‹é—´è¿˜æœ‰éžå¸¸å¤æ‚的关è”关系(跟邮箱的关系,邮箱文件夹的视图ç‰ï¼‰ã€‚å› æ¤ï¼ŒMä¸ä»¥EMLå½¢å¼å˜åœ¨çš„æ–‡ä»¶ï¼ˆé‚®ä»¶ï¼‰ï¼Œåªæ˜¯åæ˜ äº†é‚®ä»¶æ‰€æœ‰å±žæ€§å’Œå…³ç³»çš„ä¸€ä¸ªå集。一些对于M盘的ä¸é€‚当æ“ä½œï¼Œå¾€å¾€ä¼šç ´åæ•°æ®åº“å†…éƒ¨çš„å…³ç³»ï¼Œé€ æˆæ•°æ®åº“æŸåã€‚æ¯”è¾ƒå…¸åž‹çš„ä¾‹åæ˜¯ï¼Œé˜²ç—…毒软件扫æM盘,å‘现“嫌疑病毒”å¹¶äºˆä»¥æ¸…é™¤ã€‚æ ¹æ®å¾®è½¯æŠ€æœ¯æ”¯æŒéƒ¨é—¨çš„ç»Ÿè®¡ï¼Œè¿™æ˜¯é€ æˆExchange Server Storeæ•°æ®åº“æŸå的主è¦åŽŸå› ä¹‹ä¸€ã€‚å› ä¸ºé˜²ç—…æ¯’è½¯ä»¶åœ¨æ¸…é™¤ç—…æ¯’æ–‡ä»¶ï¼ˆEML文件)时,采喓野蛮施工”æ‰‹æ®µï¼Œå¾€å¾€ä¼šç ´åæ•°æ®åº“内部的关è”å’Œé‚®ä»¶ç»“æž„ï¼Œè¿›è€Œé€ æˆæ•°æ®åº“文件内部结构的æŸå。
å¦ä¸€ä¸ªé’ˆå¯¹ExIFS的错误观点是:管ç†å‘˜è®¤ä¸ºå¯¹M进行备份å³å¯ä¿å˜Exchange Server的状æ€å’Œæ‰€æœ‰æ•°æ®ã€‚è¿™æ˜¯å®Œå…¨ä¸æ£ç¡®çš„。Mç›˜åªæ˜¯æ•°æ®åº“å†…å®¹åœ¨æ–‡ä»¶ç³»ç»Ÿä¸Šçš„ä¸€ä¸ªæ˜ å°„ï¼ŒM䏿‰€ä¿å˜çš„“æ–‡ä»¶”ï¼Œå½’æ ¹ç»“åº•è¿˜æ˜¯æ•°æ®åº“ä¸ä¿å˜çš„é‚®ä»¶ã€‚ç”±äºŽæ˜ å°„åˆ°M盘,数æ®åº“ä¸çš„邮件关è”和关系都被去掉了,备份M盘,是没有办法æ¢å¤æ•°æ®åº“的所有信æ¯ã€‚
下期预告:
在了解了Exchange Serverå˜å‚¨éƒ¨åˆ†çš„一些原ç†ä»¥åŽï¼Œæˆ‘们æ¥è¿›ä¸€æ¥è¿ç”¨è¿™äº›åŽŸç†æ¥ä¼˜åŒ–Exchange Serverçš„è¿è¡Œã€‚下一期我们将讲述:
1. Exchange Serverå˜å‚¨ç³»ç»Ÿç¡¬ä»¶çš„选择和设计
2. 在线碎片整ç†çš„作用
3. 设计备份计划
4. å˜å‚¨å¼•擎的性能检测和优化
5. 如果é¿å…Exchange Server的数æ®åº“文件æŸå
å‚考文档:
1. MOC 1572 Implementing and Managing Microsoft Exchange 2000, MS Press
2. Disaster Recovery for Microsoft Exchange 2000 Server, www.microsoft.com
3. Storage Solutions for Microsoft Exchange 2000 Server, www.microsoft.com
作者简介:
å–»å‹‡ï¼Œæ›¾ä»»å¾®è½¯äº§å“æŠ€æœ¯æ”¯æŒå·¥ç¨‹å¸ˆå’ŒCTEC课程讲师。对Exchange Server,SharePoint Server,IIS,.NETå¼€å‘ç‰å¾®è½¯äº§å“和技术有丰富的实践ç»éªŒã€‚他的电å邮件信箱是yy@yuyong.net



