Exchange Server灾难恢复实例分析
2008-08-10 16:28:31 来源:WEB开发网(c) 进行邮件存储的脱机碎片整理
建议对修复的数据库文件执行碎片整理。特别是磁盘空间不足的时候。可以在另外的机器上执行这种脱机碎片整理工作。如果对 Pub1.edb 文件和 Priv1.edb 文件都运行了软故障恢复过程,请分别对这两个文件运行下面的碎片整理命令(为便于阅读,这些命令已折行,粗斜体为输入内容)。
对 Priv1.edb 进行碎片整理:
C:Program FilesexchsrvrBIN>eseutil /d
C:Program FilesexchsrvrMDBDATApriv1.edb
对 Pub1.edb 进行碎片整理:
C:Program FilesexchsrvrBIN>eseutil /d
C:Program FilesexchsrvrMDBDATApub1.edb
注意:如果存储数据库很大,整理需要一段时间。如果提示磁盘空间不足,请将 Program FileExchSrvrBin 文件夹复制到更大的磁盘,然后尝试从该位置运行此命令。
删除 Mdbdata 文件夹中的所有.log 文件、.chk 文件,然后删除 Temp.edb 文件(如果存在)。 关闭所有收发信的服务,以避免用户在修复过程中访问邮件存储。将数据库装入一次,然后立即将其卸载(Dismount)。
建议对修复的数据库文件执行碎片整理。特别是磁盘空间不足的时候。可以在另外的机器上执行这种脱机碎片整理工作。如果对 Pub1.edb 文件和 Priv1.edb 文件都运行了软故障恢复过程,请分别对这两个文件运行下面的碎片整理命令(为便于阅读,这些命令已折行,粗斜体为输入内容)。
对 Priv1.edb 进行碎片整理:
C:Program FilesexchsrvrBIN>eseutil /d
C:Program FilesexchsrvrMDBDATApriv1.edb
对 Pub1.edb 进行碎片整理:
C:Program FilesexchsrvrBIN>eseutil /d
C:Program FilesexchsrvrMDBDATApub1.edb
注意:如果存储数据库很大,整理需要一段时间。如果提示磁盘空间不足,请将 Program FileExchSrvrBin 文件夹复制到更大的磁盘,然后尝试从该位置运行此命令。(编程入门网)
使用<, SPAN lang=EN-US> Isinteg.exe实用工具可对Pub1.edb 数据库和 Priv1.edb 数据库的所有区域运行测试,并报告测试结果,而且还会尝试修复遇到的任何问题。(为便于阅读,这些命令已折行,粗斜体为输入内容):
C:Program FilesexchsrvrBIN>isinteg -s (servername) -fix -test alltests
系统会提示您选择要检查的数据库。
Index Status Database-Name
Storage Group Name:First Storage Group
1 Offline Mailbox Store (servername)
2 Offline Public Folder Store (servername)
Enter a number to select a database or press Return to exit.
注意:Exchange 2000 不再结合使用 -patch 选项来实现 Isinteg 实用工具。修补操作将在信息存储启动时由 Store.exe 自动执行。
只能检查标记为“Offline”(脱机)的数据库。在选择一个数据库后,将出现下面的消息,提示确认我们的选择:
"You have selected First Storage Group / Mailbox Store <servername>
Continue?(Y/N)"
Press <B>Y</B> and <B>Enter</B> to start checking the selected database.
重复修复的过程,直到不报告警告、错误或修复信息,报告内容类似于以下显示:
Test reference table construction result:
0 error(s); 0 warning(s); 0 fix(es); 0 row(s); time:0h:0m:0s
Test Folder Result:
0 error(s); 0 warning(s); 0 fix(es); 101 row(s); time:0h:0m:0s
Now in test 3 (reference count verification)of total 3 tests;
100% complete.
如果连续三次出现同样的警告、错误或修复信息,可以忽略。这些错误可能是由于损坏的电子邮件附件,或者不会阻止启动信息存储的类似情况造成的。
(d) 使用ExMerge移动邮件到新的邮件存储
如果多次运行 Isinteg.exe 后仍报告同样的错误和警告,但是存储服务可以正常启动。我们可以将所有用户邮箱导出为.pst文件。然后再将这些.pst文件合并为新的Priv1.edb文件。如果使用电子邮件的脱机存储(.ost文件),必须先将.ost文件移至.pst文件中。
限制:必须要运行存储服务。ExMerge只能移动用户邮箱,不能移动特定的Exchange 2000配置属性,如连接器设置、Outlook设置或客户端规则。也不能移动通讯组列表、通讯组列表中的成员或公用文件夹。可以将公用文件夹内容移动到用户的个人文件夹中,以便在合并的.pst文件中包括公用文件夹信息。如果您尝试此过程,则必须手动重新创建或重新配置通讯组列表。
确保当前没有用户正在访问服务器邮箱,运行ExMerge。
使用两步合并中的第一步,然后输入所有用户。当ExMerge过程完成之后,停止Exchange 2000信息存储服务,找到并打开 ExchSrvrMdbdata 文件夹,然后重命名Pub1.edb和Priv1.edb文件。删除此文件夹中的所有其他文件。在确信合并成功完成之前,请务必不要删除重命名的 Pub1.edb和Priv1.edb文件,以留作备份。重新启动 Exchange 2000 信息存储服务。在客户机上启动 Outlook,然后向 Exchange 2000 全球通讯簿中的所有用户发送一封电子邮件。(注意:如果未完成此步骤,ExMerge 两步合并中的第二步将不显示任何可供还原的邮箱。)
使用两步合并中的第二步运行 ExMerge,然后输入所有用户。完成此过程后,以前存储在.pst文件中的电子邮件将被移至Exchange 2000邮箱,我们将得到一个包含所有电子邮件副本的新 Priv1.edb 文件。(注意:如果用户登录到空邮箱,则帐户可能未连接到新创建的邮箱。)
要恢复公用文件夹存储,需要在客户端(如Outlook)将公用文件夹复制到该客户端上用户的个人文件夹。停止信息存储服务,然后重命名现有的 Pub1.edb 和 Pub1.stm 文件。要创建新的 Pub1.edb,请装入公用文件夹数据库。单击“确定”创建新的 Pub1.edb。将文件夹从客户端移回服务器上的新公用文件夹结构。
接下来重新启动信息存储。
(注意:必须恢复公用存储上的所有权限。在能够访问电子邮件和公用文件夹后,应尽快执行备份并验证备份是否成功。此过程还将删除到此时间点为止收到的邮件的单一实例存储。结果,Exchange 2000 数据库可能会增长,并需要更多的磁盘空间。)
[3] 使用一致性调整程序
Exchange 2000 中,Mbconn.exe 实用工具提供了相同的功能。有关更多信息,请参阅“Mailbox Reconnect Help”(邮箱重新连接帮助)文件 (Mbconn.chm),该文件位于<CD 驱动器>ExchSrvrServerSupportUtilsi386 文件夹中。您可以与 /G 开关一起使用 Eseutil 来验证信息存储的完整性。
[4] 使用Exchange 2000目录服务完整性检查程序(E2kdsinteg)
E2kdsinteg 实用工具最初包括在Exchange 2000 SP2中。在安装并运行 Exchange 2000或Exchange 2000 Active Directory连接器(ADC)后,此实用工具将报告Active Directory的运行状态。E2kdsinteg实用工具以文本文件的格式生成简单的报告,该报告记录异常或可疑的对象。E2kdsinteg不会更改Active Directory 中的任何对象。根据Active Directory中支持邮件的对象和配置对象的数量,处理支持邮件的对象可能需要相当长的时间。
我们的例子中,由于Active Directory中的Exchange Server信息没有损坏,所以略过这一步。
3、修复IIS和OWA[1] 修复DCOM错误
用户的要求总是千奇百怪的。幸运的是Exchange Server给我们提供了多种多样的邮件访问方式。
我们可以使用Exchange客户端,也可以使用Office里面的Outlook通过RPC连接来收发邮件;可以使用诸如Outlook Express之类的邮件客户端通过POP3/SMTP/IMAP协议收发邮件;还可以干脆就使用任何支持SSL的Web客户端比如Internet Explorer通过OWA来收发邮件。
在这个例子里,我们应用了OWA来为不能使用Outlook客户端或者POP3/SMTP客户端的客户服务。我们重新安装了OWA,但是它不能正常工作:根本就不能打开任何非静态的页面。经查,每次我们要求访问需要执行脚本的目录,就会在系统日志中留下如下日志:
Event ID: 10004
Source: DCOM
DCOM got error "Logon failure: unknown user name or bad password. " and was unable to logon .IWAM_MYSERVER in order to run the server:{3D14228D-FBE1-11D0-995D-00C04FD919C1}
Event ID: 36
Source: W3SVC
The server failed to load application '/LM/W3SVC/1/Root/Conferencing'. The error was 'The server process could not be started because the configured identity is incorrect. Check the username and password'.
For additional information specific to this message please visit the Microsoft Online Support site located at:
http://www.microsoft.com/contentredirect.asp.
这可能有两种原因:
(a) 组件服务
COM+账号信息存储在IIS metabase中,由Active Directory来同步,但是COM+不会自动更新。Windows 2000组件服务和Internet Information Services (IIS) 进程不同步的话,IWAM_<machine>账号和IIS metabase就不同步而出现上述日志。
IIS提供synciwam.vbs脚本来同步IWAM_<machine> 账号和IIS metabase。该脚本位于InetpubAdminScripts下面。可以使用Cscript或Wscript来运行该脚本。
使用Cscript运行Synciwam.vbs:
c:InetpubAdminScripts>cscript synciwam.vbs -v
可以看到该脚本成功执行。
使用Wscript运行Synciwam.vbs:
c:InetpubAdminScripts>wscript c:InetpubAdminScriptssynciwam.vbs -v
可以看到图形的界面下该脚本成功执行。
(b) 账号的密码
IWAM_<machine>是IIS用于执行脚本的账号,虽然我们从来没有为它设过密码,但是它的确使用了密码。虽然这个账号是本地的,但是却会保存在Active Directory中。如果存储在Active Directory中的密码与IIS metabase中的不一致,该账号将无法启动IIS的脚本进程。我们遇到的就是这种情况了。
可以使用adsutil脚本来修复该问题。
c:InetpubAdminScripts>adsutil GET w3svc/WAMUserName
WAMUserName: (String) "IWAM_name"
这里的name通常就是服务器的机器名。
打开组件服务的MMC控制台,展开“Component Services”文件夹,展开“My Computer”文件夹,找到“COM+ Applications”文件夹,右键单击,选择“IIS Out-of-Process Applications”,确认“Advanced”页面里的“Disable changes”选择框被清除,这可以确保IWAM_<Computer>账号的改动会保存在Active Directory里。
如果IIS运行于域控制器,打开“Active Directory用户和计算机的MMC管理控制台snap-in。如果IIS运行于成员服务器,则右键单击“我的电脑”,选择“管理”,展开“系统工具”,展开“本地用户和组”,选择“用户”文件夹。
在右边找到我们刚才通过adsutil脚本查询到的IWAM账号名,更改该账号的密码。然后通过脚本来修改IIS metabase里的IWAM账号密码:
c:InetpubAdminScripts>adsutil SET w3svc/WAMUserPass Password
WAMUserPass: (String) "Password"
可以看到提示修改成功,接着通过刚才的管理控制台,找到“服务”,停止、然后启动“IIS Admin”服务。也可以使用命令行:
c:>net stop iisadmin /y
c:>net start w3svc
[2] 证书服务
使用OWA的更改密码功能时,由于密码使用明文传送,非常危险。为了保证账号的安全,我们必须为该功能启用SSL(安全套接字层)加密。为了实现SSL,需要使用证书来验证IIS服务。
前面我们安装了证书服务,为的就是给IIS和域内账号提供证书。如果您有商业公司发布的证书(如VeriSign等),当然也可以直接使用他们的。为该IIS服务生成一张服务器证书,并导出。将其安装至“受信任的企业根证书”,这样该证书可以被与用户信任。
打开“Internet 信息服务”的管理控制台Snap-in,右键单击“默认Web站点”(这里我们假设IIS上面只有一个站点并且该站点准备用来使用OWA,如果情况不同,请自行修改),在“默认站点属性”中选择“目录安全性”,在其下方的“安全通信”中单击“服务器证书”,使用其向导安装我们刚才导出的服务器证书。
为了通过OWA可以修改用户的密码,需要在默认站点下,建立“IISADMPWD”的虚拟文件夹。该目录只允许读取。“应用程序设置”那里的“应用程序名”填入IISADMPWD,执行许可为纯脚本。
打开Internet Explorer,输入“http://<ExchangeServerAddress>/exchange”,看看是否可以正常OWA。
4、修复网络服务
在前面我们已将在另外的服务器上安装了WINS,现在可以在新安装的服务器上安装WINS来实现“推/拉”复制。也可以安装DNS实现区域复制。而DHCP,我们可以将区域的地址范围划分为原有区域剩下的80%(吻合前面的20%,当然可以根据需要改变)。
这样,WINS/DNS/DHCP可以继续提供服务了。
接下来,按照原有的共享内容,提供打印机和文件共享的服务。不要忘记补丁和防病毒程序!剩下的该装的软件比如备份、UPS之类我就不再废话了。
三、Mission, accomplished.
总算完工了,向用户们确认一下所有的服务是否都正常吧。在得到他们的感谢的同时,不要忘记做一次系统的完整备份!
最后啰嗦一句,所有的知识和信息,都可以在KB中找到。如果可能的话,平时我们可以收集一些灾难恢复的资料准备,在不影响业务的前提下,我们可以进行假想的演习。养兵终须千日,才能用在一时。
- ››Exchange Server 2010分层通讯簿(结构化通讯簿HA...
- ››Exchange2010恢复已删除的账号及邮箱
- ››Exchange 2010 邮件分类管理的实现与技巧
- ››Exchange 2010功能替代传统备份方案
- ››Exchange Server 2007 系列之一:简介与部署
- ››Exchange Server 2007系列之二:管理工具简介
- ››Exchange Server 2007系列之三:邮箱的创建及基本配...
- ››Exchange Server 2007 系列之四:邮箱的配置
- ››Exchange 2007 队列、队列事务日志文件超过临界值...
- ››server2003域迁移至server2008[为企业部署Windows...
- ››Exchange服务器出故障,应如何监控
- ››Exchange的邮箱信息丢失了,应如何还原
更多精彩
赞助商链接