`

nfs连接故障自动检测和恢复程序

阅读更多
业务场景

       应用程序之间以文件作为接口,为了简化设计,没有采用单独的文件传输模块,而是采用共用nfs服务器的方式由系统层面自动完成文件的上传下载.但是,在维护阶段却经常发生nfs无法连接的问题,导致应用程序io报错,影响到了业务的正常推进.

 

原因分析

       1>客户端维护人员不知道的情况下,nfs server所在的服务器进行了重新启动,导致原来的挂接点无法访问nfs server,需要重新mount

       2>nfs client端主机重新启动,没有自动mount或者mount失败,导致应用程序报错

       3>网络故障导致nfs连接不可用

 

采取的对策

       通过shell程序定时自动检测nfs mount的情况

 

程序实现

       平时手动确认nfs的时候,用的是df命令,如果nfs连接有问题,因为是同步IO,所以df会卡死到那里等待,直到nfs连接可用为止才会返回,所以这次程序实现上,也是通过df命令的执行情况来判断nfs是否正常,不过需要通过两个进程来实现,如果一个进程的话,一旦df命令卡死到那里,整个程序就卡到那里不动了,所以需要两个shell程序.

 

1.主shell程序

       调用子shell程序,让子shell程序在后台执行

       sleep 30秒,然后通过pid来检测子shell进程是否已经退出

        如果子进程还在,那么说明nfs连接出现异常,返回异常 exit 2,

                注意:这里没有kill子shell进程,如果nfs mount成功,df会成功返回,子进程会自动退出,当然也可以手动kill掉

        如果子进程不在,那么进一步执行df|grep命令看一下mount挂接点是否存在

        如果mount挂接点不存在,那么执行mount命令进行挂接

        如果mount成功,返回成功 exit 0

        如果mount失败,返回异常 exit 1

  

2.子shell程序

       把pid写入一个文件中

       执行df命令

 

主程序

 

#!/bin/sh

echo "checknfs.sh start..."

workdir="/home/wk"
mdirdown="/data/download"
mdirup="/data/upload"
remoteip=1.2.3.4
rcdown=0
rcup=0

cd $workdir
sh ./checkdf.sh&

sleep 30

pid=`cat checkdfpid.log`
echo "got checkdf.sh pid is:"$pid
ps -p $pid
if [ $? -ne 0 ];
then
    downcount=`df|grep $mdirdown|wc -l`
    upcount=`df|grep $mdirup|wc -l`
	if [ $downcount -ge 1 ] && [ $upcount -ge 1 ];
	then
        echo "checknfs.sh end normally..."
        exit 0
	else
	    if [ $downcount -lt 1 ];
		then
		    mount  $remoteip:$mdirdown  $mdirdown
			rcdown=$?
			
			if [ $rcdown -ne 0 ];
			then
	            echo "(mount fail) -> "$mdirdown
			fi
		fi
        
        if [ $upcount -lt 1 ];
		then
		    mount  $remoteip:$mdirup  $mdirup
			rcup=$?
			if [ $rcup -ne 0 ];
			then
    	        echo "(mount fail) -> "$mdirup
			fi
		fi		
        
		if [ $rcdown -eq 0 ] && [ $rcup -eq 0 ];
	    then
		    echo "checknfs.sh end normally(remounted)..."
		    exit 0
		else
		    echo "checknfs.sh end abnormally(mount fail)..."
		    exit 1
		fi
	fi
else
	echo "checknfs.sh end abnormally(df block)..."
	exit 2
fi

 

子程序

 

#!/bin/sh

echo "checkdf.sh start..."
echo 'checkdf pid:'$$
echo $$ > checkdfpid.log

df

echo "checkdf.sh end normally..."

 

分享到:
评论

相关推荐

    高性能RPC框架 nfs-rpc.7z

    8. **错误恢复与重试机制**:为了增强系统的健壮性,nfs-rpc可能包含故障检测、自动重连和重试策略,以减少因网络问题导致的服务中断。 9. **安全机制**:考虑到网络安全,nfs-rpc可能会集成SSL/TLS加密,以及身份...

    Windows Server 2012+SQL Server 2012 故障转移群集

    此技术旨在确保关键业务应用程序和服务在硬件或软件故障时仍能保持运行,从而最小化停机时间和数据丢失的风险。 **Windows Server 2012中的故障转移群集** Windows Server 2012引入了先进的故障转移群集功能,允许...

    HACMP工作原理

    例如,用户可以自定义检测和响应其他类型故障的策略,通过编写和配置start script和stop script,HACMP可以对特定的应用程序进行自动化管理和恢复。 总的来说,HACMP通过精细的故障检测和高效的资源接管机制,确保...

    IBM服务器双机热备方案

    1. 故障检测:ROSA能够快速识别硬件、网络和应用程序的故障,并执行预定的故障切换策略。 2. 自动切换:在检测到故障后,ROSA会自动将服务切换到备用服务器,无需人工干预。 3. 资源调度:ROSA可以管理和调度集群...

    VMWare Enable Cluster HA操作手冊.docx

    VMWare的Cluster HA(High Availability)是虚拟化环境中的一项关键功能,它提供了对虚拟机的保护,当物理宿主机出现故障时,能够自动恢复虚拟机的运行,从而确保业务连续性。以下是对"VMWare Enable Cluster HA操作...

    tomcat集群配置 程序以及文档

    这需要在负载均衡器中配置相应的故障检测和恢复策略。 6. **配置文件**:在`server.xml`中,你需要添加`Cluster`和`Engine`元素来定义集群和节点。`Member`元素用于定义集群中的每个节点,而`Valve`元素如`...

    vsphere5.1中文手册

    vSphere 5.1强调高可用性,其核心组件如vSphere High Availability (HA) 可以自动检测并恢复虚拟机故障。此外,还有vSphere Distributed Resource Scheduler (DRS),它能够智能地平衡资源,确保在资源需求变化时保持...

    oracle11g rac+redhat5.5集群配置

    - 设计和实施故障恢复策略,如节点故障后的快速恢复和数据恢复。 - 考虑使用Data Guard或者Physical Standby数据库实现灾难恢复。 以上步骤详细描述了在Red Hat 5.5上配置Oracle 11g RAC集群的过程。这个过程复杂...

    weblogic集群环境

    6. **故障检测和恢复**:配置集群监控和故障检测机制,例如心跳检测。当检测到服务器故障时,集群应能自动将受影响的服务转移到健康的服务器上。 7. **共享存储**:为了实现session复制和共享资源,集群内的服务器...

    Sun Enterprise Server Alternate Pathing 2.3.1 -34

    Sun Enterprise Server Alternate Pathing (AP) 2.3.1 -34 提供了一种智能的路径管理机制,它能够自动检测和利用这些备用路径,当主路径出现故障时,能够快速切换到备用路径,从而保持服务的连续性。 该软件支持...

    VMware vSphere培训教材.zip

    理解HA的工作原理、配置和故障检测机制,以及如何在实际环境中设置和维护。 5. **资源调度(DRS)**:分布式资源调度(DRS)自动平衡虚拟机的CPU和内存资源,以优化集群性能。学习DRS的工作模式、自动化级别和规则...

    sap 高可用性 HA 方案

    针对不同的服务故障,SAP提供了多种检测机制和恢复手段: - **Frontend**:通过用户和分发器检测错误,手工重启服务,恢复后重新建立连接。 - **Dispatcher**:手动重启或切换服务。 - **Dialog**:由分发器检测...

    NetAppFAS系列安装配置说明.doc

    8. **媒体类型**:选择适合的网络速度和连接类型,如100BASE-TX(快速以太网)或自动检测(auto)以适应不同环境。 9. **系统管理员指南和软件安装指南**:在进行配置时,应参考Data ONTAP的系统管理员和软件安装...

    mha4mysql-manager+node-0.58.tar.gz

    总的来说,MHA4MySQL是一个功能强大的MySQL高可用性解决方案,通过自动化故障检测和切换,减少了手动干预的需求,提高了服务的稳定性。然而,为了确保MHA能有效工作,运维人员需要对MySQL的复制机制、网络环境以及...

    heartbeat v2 crm 实现HA LAMP组合1

    - `heartbeat-2.1.4-12.el6.x86_64.rpm`:主程序包,实现节点间的心跳检测和故障转移。 - `heartbeat-gui-2.1.4-12.el6.x86_64.rpm`:提供图形用户界面,便于监控和管理。 - `heartbeat-stonith-2.1.4-12.el6.x86...

    如何在VMware虚拟环境下建立纯软双机热备.doc

    优化网络和存储性能,确保在故障发生时能快速恢复服务。 总之,在VMware虚拟环境下建立纯软双机热备涉及虚拟机的创建、网络配置、操作系统安装、双机热备软件的部署和配置等多个步骤。这个过程需要细心操作,并进行...

    Linux集群系统关键技术研究.pdf

    这通常涉及到心跳检测机制和数据同步技术,以保证在故障发生时能快速恢复服务。 3. **文件系统**:在集群环境中,共享文件系统是实现数据一致性和访问效率的关键。例如,全局文件系统(GFS)和分布式文件系统(NFS)...

Global site tag (gtag.js) - Google Analytics