集群服务器共享磁盘柜的修复案例
2008-11-28 11:03:43 来源:WEB开发网随着目前Windows 2000 服务器的大量应用,在比较关键性的业务平台上,都使用了基于Windows 2000 Cluster的集群服务器。集群服务器在几乎所有的故障点上都采用了冗余的手段保证系统的可用性。而以下的实例,则是由于Cluster软件的故障造成了无法对共享磁盘柜进行访问,也就从事实上导致了服务的不可用性,这是用冗余手段也难以解决的问题。笔者希望通过对此实例的分析,能带给大家一些解决集群故障的启示。
应用硬件环境为两台服务器与一台RA4100磁盘柜通过光纤HUB组成了一个集群环境。运行软件环境为Microsoft Windows 2000 Advanced Server,使用Windows 2000自带的Cluster软件。
错误现象
系统启动后,发现集群服务无法正常启动,集群管理器也无法正常打开,在任一节点,打开资源管理器,都无法看到共享磁盘柜,相应安装在共享磁盘柜上的软件也就无法正常启动和使用。打开事件日志,可以发现以下错误:
Event ID: 1019
Event Type: Warning
Event Source: ClusSvc
Event Category: Log Mgr
Description: The log file Q:MSCSquolog.log was found to be corrupt. An attempt will be made to reset it, or you should use the Cluster Administrator utility to adjust the maximum size.
除以上比较明显描述的错误外,事件日志中还可以发现以下记录:
Event ID:1067;Event ID: 1148
解决方法
从事件日志分析,quorum.log 文件出现了错误,导致了系统集群服务不能正常启动,解决问题的关键在于能够把quorum.log文件恢复到一个初始化状态,从而可以使系统集群服务正常启动。
解决步骤
1.通过-ResetQuorumLog参数来启动Cluster,以达到初始化quorum.log的目的。
1)打开控制面板,双击“服务”(Service)图标;
2)在服务管理器中找到Cluster service,右键点击“属性”(properties);
3)在启动变量(Start Parameters)空白框中写入-ResetQuorumLog,启动Cluster服务。
2.如果以上方法无法启动Cluster,则通过-NoQuorumLogging参数停止Cluster。
步骤1不能正常启动Cluster服务,说明需要完全重建检查点和quorum.log文件,可以按以下步骤实施:
1)打开控制面板,点击“服务”(Service)图标;
2)在服务管理器中找到Cluster service,右键点击“属性”(properties);
3)在启动变量(Start Parameters)空白框中写入-NoQuorumLogging,启动Cluster服务。
然后,再次用-ResetQuorumLog参数来启动Cluster:
4)打开共享磁盘柜,找到mscs目录,删除它;
5)在服务管理器中找到Cluster service,右键点击“停止”,将Cluster服务停止;
6)在服务管理器中找到Cluster service,右键点击“属性”(properties);
7)在启动变量(Start Parameters)空白框中写入-ResetQuorumLog,再次启动Cluster服务;
8)此时Cluster服务将正常运行,主节点将可成功访问共享资源。
3.若此时集群中第二节点处在故障状态,可采用以下方法来解决。
1)在开始选单的管理工具中打开集群管理器;
2)点击出现故障的节点, 右击“evict”,使故障节点退出集群资源;
3)在第二节点上重新安装Cluster服务,再次加入集群资源。
案例思考
集群的每个节点都在其本地计算机上维护一个集群服务数据库的拷贝。这个拷贝位于%SystemRoot%ClusterClusdb。当集群服务在一个节点上首次启动时,一个集群数据库的更新数据将注册到注册表的一个蜂巢中(HKEY_LOCAL_MACHINECluster)。当重新启动集群服务器时,一个存在的Cluster注册表将被使用。
集群服务将Cluster的注册信息也保存在共享资源的一个文件中。检查点文件位于MscsChkxxx.tmp,每次检查点文件生效,都将把有关信息记录入MscsQuolog.log 文件中,以下四类情况将使Cluster服务产生检查点:
·主节点转移到另一节点上;
·任何节点上的Cluster服务停止;
·Quolog.log文件达到了其最大重置尺寸(在Windows 2000中为64KB);
·在注册表HKEY_LOCAL_MACHINECluster QuorumCheckpointInterval中设定了一个时间间隔,在Windows 2000中设置为4小时,如果在此时间间隔内Cluster没有任何变化时,也会产生一个检查点。
此次集群服务启动失败,关键在于Quolog.log文件被破坏,所以此次修复的关键在于能够读取一个正常的Quolog.log文件。笔者采用的方法是:删除Mscs目录下的所有文件,然后设置参数-NoQuorumLogging让Cluster重建Quolog.log文件。这种操作有一定的风险,因为此时集群两个节点的状态的任何改变将无法被记录下来,从而也就无法保持两节点的一致性。
赞助商链接