CSDN博客

img HuntHoo

一次灾难恢复的真实记录

发表于2004/10/25 10:27:00  2124人阅读

一次灾难恢复的真实记录 该文有可能发表于别的媒体,为避免版权问题,转载请联系我。

Keyword: Disaster Recovery / Exchange Server / Windows 2000 Server

一次灾难恢复的真实记录

胡浩 MCSA/MCSE/MCDBA/CCNA/CStar/MVP

一、Alarm! Disaster is Fall……

    糟糕的事情总是在人们最不想它出现的时候出现。这天,那台4400的服务器,就这样忽然死亡了……

    据在现场的同事描述,服务器忽然变慢,停止了网络服务,直到停止一切响应。

    为了恢复服务,他们只有重新启动该服务器。强制重新启动服务器后,出现蓝屏,系统报告stop: 0x0000007b错误,inaccessable_boot_device。一开始我以为只是MBR坏了或者ntldrNTdetect.com坏了,那样的话我只需要在故障恢复台里面使用fixmbrfixboot来修复。由于服务器使用的是硬件RAID,只能在光盘启动时使用F6加载RAID的启动,然后进入故障恢复台,看看是否能否访问系统分区。进去后大惊,用diskpart可以看到系统分区,但是系统分区不再可读了,dir命令无法枚举任何文件和目录。

    说到这里,要介绍一下该服务器的环境了。这台Windows 2000 Advanced Server是这个域(下文使用domian.com命名)的第一台Domain Controller,五个操作主机角色(FSMO)都在上面。限于条件,上面运行了Exchange Server 2000,也用作了File Server/Printer Server。另外还有DHCP/WINS/DNS。备份的磁带,容量不足以完成完整备份……所以说,服务器的退出服务,对于我们是一场真正的灾难。如果没有其他的Domain Controller,可能我们要忙上好长时间了。就是因为还有其他Domain Controller,我们还有一线希望!

二、Mission Impossible? Impossible is Nothing!

0、使用其它服务器替代网络服务

    客户所受的影响必须降到最小。由于网络中使用DHCP服务器为客户机分配地址和提供网络信息,我们必须先解决客户机DHCP租约到期更新的问题。

    原先我们只有这一台DHCP服务器,而现在它坏掉了。于是我们在另外的Server上安装了DHCP,划分的地址范围是原先的20%。这样做的理由是到期更新租约的客户机毕竟不是很多,当然也可以根据租约时间长短和客户机的数量自行调整,更新越快,划分的地址越多。

同时,我们安装了WINSDNS,并且为DNS添加了原先手动设置的区域和记录。

1、恢复域控制器

    Active Directory是基于Windows 2000网络环境的基石。有太多的信息保存在这里,有了Active Directory,我们可以恢复相当多的服务器配置信息,比如DNS的配置之类。所以我们首先要考虑的,就是恢复主机角色。

    顺便介绍一下主机角色。Active Directory 定义了五种操作主机角色(FSMO):

 

    架构主机              schema master

    域命名主机            domain naming master

    相对标识号(RID)主机 RID master

    主域控制器模拟器        PDCE

    基础结构主机           infrastructure master

 

    架构主机是可以更新目录架构的唯一域控制器。架构更新会从架构主机复制到活动目录森林中的所有其它域控制器。整个森林中只有唯一一台架构主机。

    域命名主机是可以执行以下任务的唯一域控制器:在森林中添加或删除域,添加或删除描述外部目录的交叉引用对象。

    相对标识号(RID)主机是负责向其它域控制器分配RID池的唯一一台服务器。在创建安全主体(例如用户、组或计算机,也可以理解成账号)时,需要将RID与域内的标识符结合来创建唯一的安全标识符(SID)。每一个域控制器都会收到用于创建对象的RID池(默认为512)。RID主机通过分配不同的池来确保这些ID在每一个域控制器上都是唯一的。通过RID主机,还可以在同一森林中的不同域之间移动对象。

    域命名主机是基于森林的,整个森林中只有一个域命名主机。相对标识号(RID)主机是基于域的,森林中的每个域都有自己的相对标识号(RID)主机。

    主域控制器模拟器(PDCE)主要实现向后兼容低级客户端和服务器,也就是允许在Windows 2000域中使用Windows NT备份域控制器(BDC)。本机模式Windows 2000环境里会将密码更改转发到PDCE。域控制器验证密码失败后,会与PDCE联系,以检查该密码是否可以通过验证。因为也许密码的更改还没有被复制到当前验证登录的域控制器中。森林中各个域的PDCE都会与森林的根域中的PDCE进行同步。PDCE是基于域的,森林中的每个域都有自己的PDCE

    基础结构主机确保所有域间操作对象的一致性。当引用另一个域中的对象时,此引用包含该对象的全局唯一标识符(GUID)、安全标识符(SID)和可分辨的名称(DN)。如果被引用的对象移动,则在域中担当结构主机角色的域控制器会负责更新该域中跨域对象引用中的SIDDN。基础结构主机是基于域的,目录林中的每个域都有自己的基础结构主机

    默认的,这五种FSMO存在于森林根域的第一台域控制器(主域控制器)上,而子域中的相对标识号(RID)主机、PDCE 、基础结构主机存在于子域中的第一台域控制器。

[1] 清除原有Domain Controller的信息

    因为这台服务器已经不再可用,我们必须重新安装,所以需要将原来的服务器的数据从ACTIVE DIRECTORY中删除。

    完成这个目标,需要使用ntdsutil这个工具。(为便于阅读,这些命令已折行,粗斜体为输入内容)

c:/>ntdsutil

ntdsutil: metadata cleanup

metadata cleanup: select operation target

select operation target: connections

server connections: connect to domain domain.com

select operation target: list sites

Found 1 site(s)

0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=com

select operation target: select site 0

Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=com

No current domain

No current server

No current Naming Context

select operation target: list domains in site

Found 1 domain(s)

0 - DC=domain,DC=com

select operation target: select domain 0

Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=com

Domain - DC=domain,DC=com

No current server

No current Naming Context

select operation target: list servers for domain in site

Found 2 server(s)

0 - CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,

DC=domain,DC=com

1 - CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,

DC=domain,DC=com

select operation target: select server 0

select operation target: quit

metadata cleanup: remove selected server

    出现对话框,询问你是否确定删除该DC。按“确定”删除DC1主控服务器。

metadata cleanup: quit

ntdsutil: quit

    Active Directory users and computers中删除Domain controllersDC1服务器对象,可以使用ADSI EDIT工具。ADSI EDITWindows 2000 support tools中的工具,你需要安装Windows 2000 support tool,安装程序在windows 2000光盘中的support/tools目录下。在DC2上打开ADSI EDIT工具,展开Domain NC[DC2.domain.com],展开OU=Domain controllers,右击CN=DC1,然后选择Delete,把DC1服务器对象删除。

    Active Directory Sites and Service中删除DC1服务器对象,可以打开Administrative tools中的Active Directory Sites and Service,展开Sites,展开Default-First-Site-Name,展开Servers,右击DC1,选择Delete,单击“确认”按钮确认。

[2] 在额外域控制器上通过ntdsutil.exe工具夺取五种FMSO

    (为便于阅读,这些命令已折行,粗斜体为输入内容)

c:/>ntdsutil

ntdsutil: roles

fsmo maintenance: select operation target

select operation target: connections

server connections: connect to domain domain.com

select operation target: list sites

Found 1 site(s)

0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=com

select operation target: select site 0

Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=com

No current domain

No current server

No current Naming Context

select operation target: list domains in site

Found 1 domain(s)

0 - DC=domain,DC=com

select operation target: select domain 0

Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=com

Domain - DC=domain,DC=com

No current server

No current Naming Context

select operation target: list servers for domain in site

Found 1 server(s)

0 - CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,

DC=domain,DC=com

select operation target: select server 0

select operation target: quit

fsmo maintenance: seize domain naming master

    出现对话框,按“确定”

fsmo maintenance: seize infrastructure master

    出现对话框,按“确定”

fsmo maintenance: seize PDC

    出现对话框,按“确定”

fsmo maintenance: seize RID master

    出现对话框,按“确定”

fsmo maintenance: seize schema master

    出现对话框,按“确定”

fsmo maintenance: quit

ntdsutil: quit

    (注:Seize用于原FSMO不在线时操作,如果原FSMO在线,则需要使用Transfer操作)

[3] 设置额外控制(DC2.domain.com)为GC(全局编录)

    打开Administrative Tools中的Active Directory Sites and Services,展开Sites,展开Default-First-Site-Name,展开Servers,展开DC2.domain.com(额外控制器),右击NTDS Settings选择Properties,然后在“Global Catalog”前面打勾,单击“确定”按钮,然后重新启动服务器。

[4] 重新安装并恢复损坏的主域控制器

    修复DC1.domain.com之后,在DC1.domain.com服务器上重新安装Windows 2000 Server。基本上按照原来的服务器配置安装组件,但是先不要安装“证书服务”(安装“证书服务”后,无法进行有关改名和域的操作)。安装好Windows 2000 Server之后,再运行dcpromo升级为额外的域控制器;如果需要DC1.domain.com担任五种FMSO角色,通过ntdsutil工具进行角色转换,使用Transfer操作(注意:这时DC2在线,不能用Seize,只能Transfer)。完成后再安装“证书服务”。

    通过Active Directory Sites and Services设置DC1.domain.comGC,而取消DC2.domain.comGC。至此,修复Active Directory部分。

    (注:建议domain naming master同时必须作为GC,而不和RID master使用同一台Domain Controller

2、恢复邮件服务器

    由于Exchange Server会扩展Active DirectorySchema,将配置信息保存在Active Directory中,所以我们不能简单地重新安装了事。那样会覆盖掉以前的所有配置信息,包括地址簿结构、邮件存储还有其他的非邮件存储数据。让我们一步一步地来尝试修复。

[1] 安装Exchange Server

    为了适应灾难恢复环境下的安装,Exchange Server以及后面的Exchange Server Service Pack的安装文件都提供了 /disasterrecovery 参数来实现灾难恢复环境下的系统修复。

    我们需要将系统恢复到崩溃前的状态,如果安装了SPPatch,新的系统也要安装相同的SPPatch

    安装组件的选择也很重要,必须与崩溃时的系统所安装的组件一致。所以,日常维护中记录软件的安装配置也是一项很重要的工作。

    在这个例子中,安装好邮件服务器后,依次安装SP3还有Rollout,恢复到崩溃之前的软件安装。

[2] 修复邮件存储

    Exchange Server 2000 发生损坏时,信息存储是最容易受到影响的组件之一。实际上Windows家族的很多设计为永远在线工作的数据库,都使用了Exchange数据库引擎。信息存储由下列四个数据库文件组成:

    Priv1.edb

    Priv1.stm

    Pub1.edb

    Pub1.stm

 

    Priv1.edb 数据库文件包含简单邮件传输协议 (SMTP) 邮件,其中包括正在传送的邮件和存储在服务器上的邮件。Priv1.stm 数据库文件包含正在传送的邮件和存储的非 SMTP邮件。Pub1.edb 数据库文件包含用于SMTP 格式信息的公用文件夹存储。Pub1.stm包含用于非SMTP格式数据的共用文件夹存储。

    我们的邮件服务器是stand alone的,没有使用站点连接器,也没有安装密钥管理。所以,我们选择了KB313184的恢复流程。

    由于我们的数据库是异常退出,所以需要确认数据库的一致性。如果数据库是一致的,则所有日志文件都已提交给信息存储。如果数据库不一致,则数据库可能未损坏。相反,日志文件可能丢失、被损坏或尚未提交到数据库。

    我们运行下面的eseutil命令以检查公用和专用数据库的一致性(为便于阅读,这些命令已折行,粗斜体为输入内容)。

C:/Program Files/exchsrvr/BIN>eseutil /mh "C:/Program Files/exchsrvr

/MDBDATA/priv1.edb"
C:/Program Files/exchsrvr/BIN>eseutil /mh "C:/Program Files/exchsrvr

/MDBDATA/pub1.edb"

    注意:这里假设正在从C盘上的Program Files/ExchSrvr/Bin文件夹中运行程序,并且.edb文件位于Program Files/ExchSrvr/Mdbdata文件夹中,如果执行了升级,这些数据库文件可能位于C:/Exchsrvr/Mdbdata文件夹中。如果优化了数据库,则这些文件可能位于另一驱动器上,可根据实际情况自行替换。

    要验证.edb文件是否一致,请检查标有“State”的输出行。为了方便观察可以在前面的命令行后面分别加上“> mypriv.txt”和“> mypub.txt”,生成两个文本文件。或者使用| more”参数来逐屏输出。

    在我们的例子里,服务器上的数据库state是“Dirty Shutdown”,所以需要对数据库进行软故障恢复,以检查 Mdbdata 文件夹中是否存储了日志文件的副本。

注意:以下步骤并不是按操作顺序排列的,也不是每一步都必须执行的,修复邮件存储,需要根据实际情况选择一步或者几部执行!

(a) 保存有日志文件的存储恢复

    执行软故障恢复时,所有未提交的日志文件都将被提交给信息存储数据库。打开数据库和日志文件所驻留的文件夹,然后在命令提示符处键入下面的内容(为便于阅读,这些命令已折行,粗斜体为输入内容):

C:/Program Files/exchsrvr/MDBDATA>"C:/Program Files/exchsrvr

/BIN/eseutil.exe" /r E00

    单击“”运行修复。实用工具将显示下面的消息:

Microsoft(R) Exchange Server(TM) Database Utilities

Version 6.0

Copyright (C) Microsoft Corporation 1991-2000.  All right reserved.

 

Initiating RECOVERY mode...

Logfile base name:E00

Log Files:(current directory)

System files:(current directory)

 

Performing soft recovery...

    完成软故障恢复之后,程序将显示下面的消息:

Operation completed successfully in x.xxx seconds.

    可再次运行 eseutil /mh 命令。如果公用信息存储和专用信息存储的状态都更改为“一致”,表明数据库已经修复。

(b) 无日志文件或者日志文件损坏的存储恢复

    如果eseutil /r 命令未恢复数据库到一致状态,请使用硬故障恢复(强制状态恢复)命令。(注意:该命令可能会丢失某些 Exchange 2000 数据,其中包括尚未提交给信息存储数据库的日志文件中所包含的消息。Microsoft 建议,只有在执行软故障恢复后公用信息存储或专用信息存储仍没有恢复到一致的状态时,才使用此命令。)

    在命令提示符处,键入下列命令(为便于阅读,这些命令已折行,粗斜体为输入内容):

    Priv1.edb 文件恢复到一致状态:

C:/Program Files/exchsrvr/MDBDATA>"C:/Program Files/exchsrvr/BIN/eseutil" /p priv1.edb

    Pub1.edb 文件恢复到一致状态:

C:/Program Files/exchsrvr/MDBDATA>"C:/Program Files/exchsrvr/BIN/eseutil" /p pub1.edb

    单击“”运行修复。实用工具将显示下面的消息:

Microsoft(R) Exchange Server(TM) Database Utilities

Version 6.0

Copyright (C) Microsoft Corporation 1991-2000.  All right reserved.

 

Initiating REPAIR mode...

Database:priv1.edb

Streaming File:priv1.stm

Temp.Database:TEMPREPAIR1820.EDB

 

Checking database integrity.

 

Scanning Status (% complete)

    0    10   20   30   40   50   60   70   80   90   100

    |----|----|----|----|----|----|----|----|----|-----|

    ....................................................

    修复过程中将自动包括.stm 文件。在完成此过程之后,程序将显示下面的消息:

Integrity check successful.

(c) 进行邮件存储的脱机碎片整理

    建议对修复的数据库文件执行碎片整理。特别是磁盘空间不足的时候。可以在另外的机器上执行这种脱机碎片整理工作。如果对 Pub1.edb 文件和 Priv1.edb 文件都运行了软故障恢复过程,请分别对这两个文件运行下面的碎片整理命令(为便于阅读,这些命令已折行,粗斜体为输入内容)。

    Priv1.edb 进行碎片整理:

C:/Program Files/exchsrvr/BIN>eseutil /d

C:/Program Files/exchsrvr/MDBDATA/priv1.edb

    Pub1.edb 进行碎片整理:

C:/Program Files/exchsrvr/BIN>eseutil /d

C:/Program Files/exchsrvr/MDBDATA/pub1.edb

    注意:如果存储数据库很大,整理需要一段时间。如果提示磁盘空间不足,请将 Program File/ExchSrvr/Bin 文件夹复制到更大的磁盘,然后尝试从该位置运行此命令。

 

    删除 Mdbdata 文件夹中的所有.log 文件、.chk 文件,然后删除 Temp.edb 文件(如果存在)。 关闭所有收发信的服务,以避免用户在修复过程中访问邮件存储。将数据库装入一次,然后立即将其卸载(Dismount)。

    建议对修复的数据库文件执行碎片整理。特别是磁盘空间不足的时候。可以在另外的机器上执行这种脱机碎片整理工作。如果对 Pub1.edb 文件和 Priv1.edb 文件都运行了软故障恢复过程,请分别对这两个文件运行下面的碎片整理命令(为便于阅读,这些命令已折行,粗斜体为输入内容)。

    Priv1.edb 进行碎片整理:

C:/Program Files/exchsrvr/BIN>eseutil /d

C:/Program Files/exchsrvr/MDBDATA/priv1.edb

    Pub1.edb 进行碎片整理:

C:/Program Files/exchsrvr/BIN>eseutil /d

C:/Program Files/exchsrvr/MDBDATA/pub1.edb

    注意:如果存储数据库很大,整理需要一段时间。如果提示磁盘空间不足,请将 Program File/ExchSrvr/Bin 文件夹复制到更大的磁盘,然后尝试从该位置运行此命令。

 

    使用 Isinteg.exe实用工具可对Pub1.edb 数据库和 Priv1.edb 数据库的所有区域运行测试,并报告测试结果,而且还会尝试修复遇到的任何问题。(为便于阅读,这些命令已折行,粗斜体为输入内容):

C:/Program Files/exchsrvr/BIN>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信息存储服务,找到并打开 ExchSrvr/Mdbdata 文件夹,然后重命名Pub1.edbPriv1.edb文件。删除此文件夹中的所有其他文件。在确信合并成功完成之前,请务必不要删除重命名的 Pub1.edbPriv1.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 驱动器>/ExchSrvr/Server/Support/Utils/i386 文件夹中。您可以与 /G 开关一起使用 Eseutil 来验证信息存储的完整性。

[4] 使用Exchange 2000目录服务完整性检查程序(E2kdsinteg)

    E2kdsinteg 实用工具最初包括在Exchange 2000 SP2中。在安装并运行 Exchange 2000Exchange 2000 Active Directory连接器(ADC)后,此实用工具将报告Active Directory的运行状态。E2kdsinteg实用工具以文本文件的格式生成简单的报告,该报告记录异常或可疑的对象。E2kdsinteg不会更改Active Directory 中的任何对象。根据Active Directory中支持邮件的对象和配置对象的数量,处理支持邮件的对象可能需要相当长的时间。

    我们的例子中,由于Active Directory中的Exchange Server信息没有损坏,所以略过这一步。

3、修复IISOWA

[1] 修复DCOM错误

    用户的要求总是千奇百怪的。幸运的是Exchange Server给我们提供了多种多样的邮件访问方式。

    我们可以使用Exchange客户端,也可以使用Office里面的Outlook通过RPC连接来收发邮件;可以使用诸如Outlook Express之类的邮件客户端通过POP3/SMTP/IMAP协议收发邮件;还可以干脆就使用任何支持SSLWeb客户端比如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。该脚本位于Inetpub/AdminScripts下面。可以使用CscriptWscript来运行该脚本。

    使用Cscript运行Synciwam.vbs:

c:/Inetpub/AdminScripts>cscript synciwam.vbs -v

    可以看到该脚本成功执行。

    使用Wscript运行Synciwam.vbs:

c:/Inetpub/AdminScripts>wscript c:/Inetpub/AdminScripts/synciwam.vbs -v

    可以看到图形的界面下该脚本成功执行。

(b) 账号的密码

    IWAM_<machine>IIS用于执行脚本的账号,虽然我们从来没有为它设过密码,但是它的确使用了密码。虽然这个账号是本地的,但是却会保存在Active Directory中。如果存储在Active Directory中的密码与IIS metabase中的不一致,该账号将无法启动IIS的脚本进程。我们遇到的就是这种情况了。

    可以使用adsutil脚本来修复该问题。

c:/Inetpub/AdminScripts>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:/Inetpub/AdminScripts>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中找到。如果可能的话,平时我们可以收集一些灾难恢复的资料准备,在不影响业务的前提下,我们可以进行假想的演习。养兵终须千日,才能用在一时。

 

    我在微软新闻组(news.microsoft.com)和微软社区(www.mscommunity.com)还有我们的技术社区(forum.diyinside.com)的ID: Hao Hu 。我的Blog地址:http://blog.mvpcn.net/haohu 欢迎大家一起讨论,共同分享技术的快乐!

阅读全文
0 0

相关文章推荐

img
取 消
img