首先得感谢小荷的这篇文章让我重新学习了hangcheck-timer这个内核模块。
在这之前,也就是我刚开始接触Oracle的时候自己在虚拟机中做实验,根据网上的一篇文档学习安装Oracle Cluster。
记得文档中说:该模块在AS2.1-E16以上的核心或者是3.0的核心中系统开始自带hangcheck-timer来代替watchdog守护进程,不需要安装。
那时并没有认真去了解这个hangcheck-timer模块,这个内核模块对Oracle RAC系统是很非常重要的。
在Oracle9202以前,都是使用watchdog来检查系统是否挂起,9202以后,oracle使用hangcheck-timer模块。
hangcheck-timer模块使用基于内核时钟周期性去定时检查系统是否被挂起,如果检测到系统已经被挂起,将重置节点上的时钟。
该模块用二个参数表示多少时间以后系统没响应就认为是挂起。
hangcheck_tick:该参数定义了模块启动的间隔时段,其默认值为 60 秒。 Oracle建议将其设置为 30 秒。
hangcheck_margin:该参数定义了多少时间以后系统没响应就认为是挂起。以秒为单位,默认值为 180秒。Oracle 建议将其设置为 180 秒。
使用下面的命令检查该模块是否存在:
# find /lib/modules -name “hangcheck-timer.ko”
/lib/modules/2.6.9-78.ELsmp/kernel/drivers/char/hangcheck-timer.ko
/lib/modules/2.6.9-78.EL/kernel/drivers/char/hangcheck-timer.ko
手动加载该模块到内核:
# modprobe hangcheck-timer
检查该模块加载是否成功:
# grep Hangcheck /var/log/messages | tail -1
Aug 8 07:36:33 ora9i kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds).
手动加载模块,重启后失效,可以将其加载模块的命令添加到/etc/modules.conf中
# echo “options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180″ >> /etc/modules.conf
或者在/etc/rc.local文件中增加下列命令
/sbin/insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
关于hangcheck-timer内核模块的相关资料,也可以点击这里获得。
-The End-